cpu_sh4.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. * (C) Copyright 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
  3. *
  4. * This program is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU General Public License as
  6. * published by the Free Software Foundation; either version 2 of
  7. * the License, or (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  17. * MA 02111-1307 USA
  18. */
  19. #ifndef _ASM_CPU_SH4_H_
  20. #define _ASM_CPU_SH4_H_
  21. /* cache control */
  22. #define CCR_CACHE_STOP 0x00000808
  23. #define CCR_CACHE_ENABLE 0x00000101
  24. #define CCR_CACHE_ICI 0x00000800
  25. #define CACHE_OC_ADDRESS_ARRAY 0xf4000000
  26. #if defined (CONFIG_CPU_SH7750) || \
  27. defined(CONFIG_CPU_SH7751)
  28. #define CACHE_OC_WAY_SHIFT 14
  29. #define CACHE_OC_NUM_ENTRIES 512
  30. #else
  31. #define CACHE_OC_WAY_SHIFT 13
  32. #define CACHE_OC_NUM_ENTRIES 256
  33. #endif
  34. #define CACHE_OC_ENTRY_SHIFT 5
  35. #if defined (CONFIG_CPU_SH7750) || \
  36. defined(CONFIG_CPU_SH7751)
  37. # include <asm/cpu_sh7750.h>
  38. #elif defined (CONFIG_CPU_SH7722)
  39. # include <asm/cpu_sh7722.h>
  40. #elif defined (CONFIG_CPU_SH7723)
  41. # include <asm/cpu_sh7723.h>
  42. #elif defined (CONFIG_CPU_SH7763)
  43. # include <asm/cpu_sh7763.h>
  44. #elif defined (CONFIG_CPU_SH7780)
  45. # include <asm/cpu_sh7780.h>
  46. #elif defined (CONFIG_CPU_SH7785)
  47. # include <asm/cpu_sh7785.h>
  48. #else
  49. # error "Unknown SH4 variant"
  50. #endif
  51. #if defined(CONFIG_SH_32BIT)
  52. #define PMB_ADDR_ARRAY 0xf6100000
  53. #define PMB_ADDR_ENTRY 8
  54. #define PMB_VPN 24
  55. #define PMB_DATA_ARRAY 0xf7100000
  56. #define PMB_DATA_ENTRY 8
  57. #define PMB_PPN 24
  58. #define PMB_UB 9 /* Buffered write */
  59. #define PMB_V 8 /* Valid */
  60. #define PMB_SZ1 7 /* Page size (upper bit) */
  61. #define PMB_SZ0 4 /* Page size (lower bit) */
  62. #define PMB_C 3 /* Cacheability */
  63. #define PMB_WT 0 /* Write-through */
  64. #define PMB_ADDR_BASE(entry) (PMB_ADDR_ARRAY + (entry << PMB_ADDR_ENTRY))
  65. #define PMB_DATA_BASE(entry) (PMB_DATA_ARRAY + (entry << PMB_DATA_ENTRY))
  66. #define mk_pmb_addr_val(vpn) ((vpn << PMB_VPN))
  67. #define mk_pmb_data_val(ppn, ub, v, sz1, sz0, c, wt) \
  68. ((ppn << PMB_PPN) | (ub << PMB_UB) | \
  69. (v << PMB_V) | (sz1 << PMB_SZ1) | \
  70. (sz0 << PMB_SZ0) | (c << PMB_C) | \
  71. (wt << PMB_WT))
  72. #endif
  73. #endif /* _ASM_CPU_SH4_H_ */