ppc403.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:29k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* ppc403.h - PowerPC 403 specific header */
  2. /* Copyright 1984-1997 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01o,13jun02,jtp  identify class of MMU support (SPR #78396)
  7. 01n,22nov01,pch  Add _WRS_STRICT_ALIGNMENT for target/src/ostool/loadElfLib.c,
  8.  and _WRS_NO_TGT_SHELL_FP for target/src/ostool/shell*
  9. 01m,21oct98,elg  added hardware breakpoints for PPC403
  10. 01l,18mar97,tam  redefined INT_MASK to mask MSR[CE] (SPR 8192). 
  11. 01k,24feb97,tam  added definitions for the PPC403GC and PPC403GCX. 
  12. 01j,03oct96,tam  added more definitions for the bank registers. 
  13. 01i,20sep96,tam  added _PPC403_ICCR_DEFAULT_VAL and _PPC403_ICCR_DEFAULT_VAL. 
  14. 01h,18jun96,tam  added defines for the PowerPC 403 debug registers. 
  15.  removed TBL/TBU and PVR macros. 
  16. 01g,17jun96,tpr  added defines PowerPC 403 specific.
  17. 01f,09may96,tam  added missing definitions for dma chained count registers (1-3)
  18. 01e,07mar96,tam  fix DMASR macro values. (spr# 6018) - added PVR definition.
  19. 01d,08feb96,kkk  fix iocr macro values. (spr# 5416)
  20. 01c,17feb95,yao  added macros for dma register.
  21. 01b,17jan95,yao  added macros for external interrupt enable/status register.  
  22.  added definitions for debug control/ status registers.
  23. 01a,17mar94,yao  written.
  24. */
  25. #ifndef __INCppc403h
  26. #define __INCppc403h
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. /* INT_MASK definition (mask EE & CE bits) : overwrite the one in asmPpc.h */
  31. #undef INT_MASK
  32. #define INT_MASK(src, des) rlwinm  des, src, 0, 17, 15; 
  33. rlwinm  des, des, 0, 15, 13
  34. /* Tell the loader this processor can't handle any misalignment */
  35. #define _WRS_STRICT_ALIGNMENT 1
  36. /* No floating point support in target shell */
  37. #define _WRS_NO_TGT_SHELL_FP 1
  38. /* No MMU support in architecture library */
  39. #undef _WRS_TLB_MISS_CLASS_SW
  40. /* MSR definitions */
  41. #undef  _PPC_MSR_POW_U /* power managemnet not supported */
  42. #undef  _PPC_MSR_ILE_U /* little endian mode not supported */
  43. #undef  _PPC_MSR_SF_U /* 64 bit mode not implemented */
  44. #undef  _PPC_MSR_BE /* branch trace not supported */
  45. #undef  _PPC_MSR_FE1 /* floating point not supported */
  46. #undef  _PPC_MSR_FE0 /* floating point not supported */
  47. #undef  _PPC_MSR_IT /* instruction address translation unsupported*/
  48. #undef  _PPC_MSR_DT /* data address translation unsupported */
  49. #undef  _PPC_MSR_RI /* recoverable interrupt unsupported */
  50. #undef  _PPC_MSR_LE /* little endian mode unsupported */
  51. #undef  _PPC_MSR_SE /* single step unsupported */
  52. #undef  _PPC_MSR_FP /* floating point unsupported */
  53. #define _PPC_MSR_WE_U 0x0004 /* wait state enable */
  54. #define _PPC_MSR_CE_U 0x0002 /* critical interrupt enable */
  55. #define _PPC_MSR_DE 0x0200 /* debug exception enable */
  56. #define _PPC_MSR_IR 0x0020 /* instruction relocate (403GC/GCX) */
  57. #define _PPC_MSR_DR 0x0010 /* date relocate (403GC/GCX) */
  58. #define _PPC_MSR_PE 0x0008 /* protection enable */
  59. #define _PPC_MSR_PX 0x0004 /* protection exclusive mode */
  60. #define _PPC_MSR_CE 0x00020000 /* critical interrupt enable mask */
  61. /* Device Control Register PowerPC403 specific */
  62. #undef  DEC /* decrementer not supported */
  63. #define BEAR 0x090 /* bus error adress register read/clear */
  64. #define BESR 0x091 /* bus error syndrome register read/clear */
  65. #define BR0 0x080 /* bank register 0 */
  66. #define BR1 0x081 /* bank register 1 */
  67. #define BR2 0x082 /* bank register 2 */
  68. #define BR3 0x083 /* bank register 3 */
  69. #define BR4 0x084 /* bank register 4 */
  70. #define BR5 0x085 /* bank register 5 */
  71. #define BR6 0x086 /* bank register 6 */
  72. #define BR7 0x087 /* bank register 7 */
  73. #define BRH0 0x070 /* bank register 0 high */
  74. #define BRH1 0x071 /* bank register 1 high */
  75. #define BRH2 0x072 /* bank register 2 high */
  76. #define BRH3 0x073 /* bank register 3 high */
  77. #define BRH4 0x074 /* bank register 4 high */
  78. #define BRH5 0x075 /* bank register 5 high */
  79. #define BRH6 0x076 /* bank register 6 high */
  80. #define BRH7 0x077 /* bank register 7 high */
  81. #define DMACC0  0xc4 /* dma chained count 0 r/w */
  82. #define DMACC1  0xcc /* dma chained count 1 r/w */
  83. #define DMACC2  0xd4 /* dma chained count 2 r/w */
  84. #define DMACC3  0xdc /* dma chained count 3 r/w */
  85. #define DMACR0  0xc0 /* dma channel control register 0 r/w */
  86. #define DMACR1  0xc8 /* dma channel control register 1 r/w */
  87. #define DMACR2  0xd0 /* dma channel control register 2 r/w */
  88. #define DMACR3 0xd8 /* dma channel control register 3 r/w */
  89. #define DMACT0  0xc1 /* dma count register 0 r/w */
  90. #define DMACT1  0xc9 /* dma count register 1 r/w */
  91. #define DMACT2  0xd1 /* dma count register 2 r/w */
  92. #define DMACT3  0xd9 /* dma count register 3 r/w */
  93. #define DMADA0  0xc2 /* dma destination address register 0 r/w */
  94. #define DMADA1  0xca /* dma destination address register 1 r/w */
  95. #define DMADA2  0xd2 /* dma destination address register 2 r/w */
  96. #define DMADA3  0xda /* dma destination address register 3 r/w */
  97. #define DMASA0  0xc3 /* dma source address register 0 r/w */
  98. #define DMASA1  0xcb /* dma source address register 1 r/w */
  99. #define DMASA2  0xd3 /* dma source address register 2 r/w */
  100. #define DMASA3  0xdb /* dma source address register 3 r/w */
  101. #define DMASR   0xe0 /* dma status register r/w */
  102. #define EXIER 0x42 /* external interrupt enable register r/w */
  103. #define EXISR 0x40 /* external interrupt status register r/c */
  104. #define IOCR 0x0a0 /* input/output configuration register r/w */
  105. /* Special Purpose Register PowerPC403 specific */
  106. #define CDBCR 0x3d7 /* cache debug control register r/w */
  107. #define DAC1 0x3f6 /* data adress compare register 1 r/w */
  108. #define DAC2 0x3f7 /* data adress compare register 2 r/w */
  109. #define DBSR 0x3f0 /* debug status register read/clear */
  110. #define DBCR 0x3f2 /* debug control register read/write */
  111. #define DCCR 0x3fa /* data cache control register r/w */
  112. #define DCWR    0x3ba /* data cache write-thru register (PPC403GC) r/w */
  113. #define DEAR 0x3d5 /* data exception address registers r */
  114. #define ESR 0x3d4 /* exception syndrom register r/w */
  115. #define EVPR 0x3d6 /* exception prefix register r/w */
  116. #define IAC1 0x3f4 /* instruction adress compare register 1 r/w */
  117. #define IAC2 0x3f5 /* instruction adress compare register 2 r/w */
  118. #define ICCR 0x3fb /* instruction cache cacheability register r/w */
  119. #define ICDBDR 0x3d3 /* instruction cache debug data register r */
  120. #define PBL1 0x3fc /* protection bound lower 1 r/w */
  121. #define PBL2 0x3fe /* protection bound lower 2 r/w */
  122. #define PBU1 0x3fd /* protection bound upper 1 r/w */
  123. #define PBU2 0x3ff /* protection bound upper 2 r/w */
  124. #define PID 0x3b1 /* process id (403GC/GCX) r */
  125. #define PIT 0x3db /* programmable interval timer r/w */
  126. #define SGR     0x3b9 /* storage guarded register (PPC403GC) r/w */
  127. #define SRR2 0x3de /* save/restore register 2 r/w */
  128. #define SRR3 0x3df /* save/restore register 3 r/w */
  129. #define TBLO 0x3dd /* time base low r/w */
  130. #define TBHI 0x3dc /* time base high r/w */
  131. #define TCR 0x3da /* timer control register r/w */
  132. #define TSR 0x3d8 /* timer status register read/clear */
  133. #define TSRS 0x3d9 /* timer status register set (set only) */
  134. #define ZPR 0x3b0 /* zone protection register (PPC403GC/GCX) r/w */
  135. #define mtdcr(dcrn, rs) .long   (0x7c0001c3 | (rs << 21) | (dcrf << 11))
  136. #define MTDCR 0x7c0001c3
  137. #define MFDCR 0x7c000143
  138. #define _EXISR_OP 0x00001000
  139. #define _EXIER_OP 0x00021000
  140. #define MFEXISR_P0 .long   0x7c601286
  141. #define MTEXISR_P0 .long   0x7c601386
  142. #define MFEXISR_P1 .long   0x7c801286
  143. #define MTEXISR_P1 .long   0x7c801386
  144. #define MTEXIER_P0 .long   0x7c621386
  145. #define MFEXIER_P0 .long   0x7c621286
  146. #define MTEXIER_P1 .long   0x7c811386
  147. #define MTEXIER_P2 .long   0x7ca11386
  148. #define MFEXIER_P1 .long   0x7c811286
  149. #define MTBESR_P0 .long   0x7c712386
  150. #define RFCI .long   0x4c000066
  151. /* defines for cache support */
  152. #undef _CACHE_ALIGN_SIZE
  153. #define _CACHE_ALIGN_SIZE 16 /* cache line size */
  154. #define _ICACHE_LINE_NUM 64 /* 64 cache lines per set */
  155. #define _DCACHE_LINE_NUM 32 /* 32 cache lines per set */
  156. #define _PPC403_ICCR_DEFAULT_VAL 0x80000001 /* def. inst. cachability */
  157. #define _PPC403_DCCR_DEFAULT_VAL 0x80000001 /* def. data cachability */
  158. #define CACHE_SAFE_ADRS(x) ((int) (x) | 0x80000000)
  159. #define CACHE_ORIG_ADRS(x) ((int) (x) & 0x7fffffff)
  160. #define _PPC_CACHE_UNIFIED FALSE /* XXX */
  161. /* 403ga specific special purpouse registers */
  162. #define _PPC403_DBSR 0x3f0 /* debug status register read/clear */
  163. #define _PPC403_DCCR 0x3fa /* data cache control register r/w */
  164. #define _PPC403_DEAR 0x3d5 /*  data exception address registers r */
  165. #define _PPC403_ESR 0x3d4 /* exception syndrom register r/w */
  166. #define _PPC403_EVPR 0x3d6 /* exception prefix register r/w */
  167. #define _PPC403_ICCR 0x3fb /* instruction cache control register r/w */
  168. #define _PPC403_PBL1 0x3fc /* protection bound lower 1 r/w */
  169. #define _PPC403_PBL2 0x3fe /* protection bound lower 2 r/w */
  170. #define _PPC403_PBU1 0x3fd /* protection bound upper 1 r/w */
  171. #define _PPC403_PBU2 0x3ff /* protection bound upper 2 r/w */
  172. #define _PPC403_PIT 0x3db /* programmable interval timer r/w */
  173. #define _PPC403_SRR2 0x3de /* save/restore register 2 r/w */
  174. #define _PPC403_SRR3 0x3df /* save/restore register 3 r/w */
  175. #define _PPC403_SGR     0x3b9 /* storage guarded register (PPC403GC) r/w */
  176. #define _PPC403_DCWR    0x3ba   /* data cache write-thru (PPC403GC)r/w */
  177. /* debug control register */
  178. #define _DBCR_EDM_U 0x8000 /* external debug mode */
  179. #define _DBCR_IDM_U 0x4000 /* internal debug mode */
  180. #define _DBCR_IC_U 0x0800 /* instruction completion debug event */
  181. #define _DBCR_BT_U 0x0400 /* branch taken */
  182. #define _DBCR_EDE_U 0x0200 /* exception debug event */
  183. #define _DBCR_TDE_U 0x0100 /* trap debug event */
  184. #define _DBCR_FT_U 0x0004 /* freeze timers on debug */
  185. #define _DBCR_IA1_U 0x0002 /* instruction address compare 1 */
  186. #define _DBCR_IA2_U 0x0001 /* instruction address compare 2 */
  187. #define _DBCR_EDM 0x80000000 /* external debug mode */
  188. #define _DBCR_IDM 0x40000000 /* internal debug mode */
  189. #define _DBCR_IC 0x08000000 /* instruction completion debug event */
  190. #define _DBCR_BT 0x04000000 /* branch taken */
  191. #define _DBCR_EDE 0x02000000 /* exception debug event */
  192. #define _DBCR_TDE 0x01000000 /* trap debug event */
  193. #define _DBCR_FT 0x00040000 /* freeze timers on debug */
  194. #define _DBCR_IA1 0x00020000 /* instruction address compare 1 */
  195. #define _DBCR_IA2 0x00010000 /* instruction address compare 2 */
  196. #define _DBCR_D1R 0x00008000 /* data address compare read 1 */
  197. #define _DBCR_D1W 0x00004000 /* data address compare write 1 */
  198. #define _DBCR_D2R 0x00000800 /* data address compare read 2 */
  199. #define _DBCR_D2W 0x00000400 /* data address compare write 2 */
  200. #define _DBCR_JOI 0x00000002 /* jtag serial outbound */
  201. #define _DBCR_JII 0x00000001 /* jtag serial inbound */
  202. /* set access from type in DBCR */
  203. #define _DBCR_D1A(x) (((x) & 0x03) << 14) /* for first breakpoint */
  204. #define _DBCR_D2A(x) (((x) & 0x03) << 10) /* for second breakpoint */
  205. /* set size from type in DBCR */
  206. #define _DBCR_D1S(x) (((x) & 0x0C) << 10) /* for first breakpoint */
  207. #define _DBCR_D2S(x) (((x) & 0x0C) << 6) /* for first breakpoint */
  208. /* get access from DBCR */
  209. #define _DBCR_D1_ACCESS(x) (((x) >> 14) & 0x03)
  210. #define _DBCR_D2_ACCESS(x) (((x) >> 10) & 0x03)
  211. /* get size from DBCR */
  212. #define _DBCR_D1_SIZE(x) (((x) >> 10) & 0x0C)
  213. #define _DBCR_D2_SIZE(x) (((x) >> 6) & 0x0C)
  214. /* debug status register */
  215. #define _DBSR_IC_U 0x8000 /* instruction completion */
  216. #define _DBSR_BT_U 0x4000 /* branch taken */
  217. #define _DBSR_EXC_U 0x2000 /* exception debug */
  218. #define _DBSR_TIE_U 0x1000 /* trap instruction */
  219. #define _DBSR_UDE_U 0x0800 /* unconditional debug */
  220. #define _DBSR_IA1_U 0x0400 /* instruction address compare 1 */
  221. #define _DBSR_IA2_U 0x0200 /* instruction address compare 2 */
  222. #define _DBSR_DR1_U 0x0100 /* data address compare read 1 */
  223. #define _DBSR_DW1_U 0x0080 /* data address compare write 1 */
  224. #define _DBSR_DR2_U 0x0040 /* data address compare read 2 */
  225. #define _DBSR_DW2_U 0x0020 /* data address compare write 2 */
  226. #define _DBSR_IDE_U 0x0010 /* imprecise debug */
  227. #define _DBSR_IC 0x80000000 /* instruction completion */
  228. #define _DBSR_BT 0x40000000 /* branch taken */
  229. #define _DBSR_EXC 0x20000000 /* exception debug */
  230. #define _DBSR_TIE 0x10000000 /* trap instruction */
  231. #define _DBSR_UDE 0x08000000 /* unconditional debug */
  232. #define _DBSR_IA1 0x04000000 /* instruction address compare 1 */
  233. #define _DBSR_IA2 0x02000000 /* instruction address compare 2 */
  234. #define _DBSR_DR1 0x01000000 /* data address compare read 1 */
  235. #define _DBSR_DW1 0x00800000 /* data address compare write 1 */
  236. #define _DBSR_DR2 0x00400000 /* data address compare read 2 */
  237. #define _DBSR_DW2 0x00200000 /* data address compare write 2 */
  238. #define _DBSR_IDE 0x00100000 /* imprecise debug */
  239. #define _DBSR_MRRM 0x00000300 /* Most recent reset mask */
  240. #define _DBSR_MRR(n) ((n) << 8)  /* Most recent reset */
  241. #define _DBSR_JIF 0x00000004 /* jtag serial inbound buffer full */
  242. #define _DBSR_JIO 0x00000002 /* jtag serial inbound buffer overrun */
  243. #define _DBSR_JOE 0x00000001 /* jtag serial outbound buffer empty */
  244. /* mask for hardware breakpoints */
  245. #define _DBSR_HWBP_MSK (_DBSR_IA1 | _DBSR_IA2 | 
  246.                          _DBSR_DR1 | _DBSR_DW1 | 
  247.  _DBSR_DR2 | _DBSR_DW2)
  248. /* device control registers */
  249. #define _PPC403_BEAR 0x90 /* bus error address register (read only) */
  250. #define _PPC403_BESR 0x91 /* bus error syndrom register (r/w) */
  251. #define _PPC403_BR0 0x80 /* bank register 0 (r/w) */
  252. #define _PPC403_BR1 0x81 /* bank register 1 (r/w) */
  253. #define _PPC403_BR2 0x82 /* bank register 2 (r/w) */
  254. #define _PPC403_BR3 0x83 /* bank register 3 (r/w) */
  255. #define _PPC403_BR4 0x84 /* bank register 4 (r/w) */
  256. #define _PPC403_BR5 0x85 /* bank register 5 (r/w) */
  257. #define _PPC403_BR6 0x86 /* bank register 6 (r/w) */
  258. #define _PPC403_BR7 0x87 /* bank register 7 (r/w) */
  259. #define _PPC403_DMACC0 0xc4 /* dma chained count 0 (r/w) */
  260. #define _PPC403_DMACC1 0xcc     /* dma chained count 1 (r/w) */
  261. #define _PPC403_DMACC2 0xd4     /* dma chained count 2 (r/w) */
  262. #define _PPC403_DMACC3 0xdc     /* dma chained count 3 (r/w) */
  263. #define _PPC403_DMACR0 0xc0 /* dma channel control register 0 (r/w) */
  264. #define _PPC403_DMACR1 0xc8 /* dma channel control register 1 (r/w) */
  265. #define _PPC403_DMACR2 0xd0 /* dma channel control register 2 (r/w) */
  266. #define _PPC403_DMACR3 0xd8 /* dma channel control register 3 (r/w) */
  267. #define _PPC403_DMACT0 0xc1 /* dma count register 0 (r/w) */
  268. #define _PPC403_DMACT1 0xc9 /* dma count register 1 (r/w) */
  269. #define _PPC403_DMACT2 0xd1 /* dma count register 2 (r/w) */
  270. #define _PPC403_DMACT3 0xd9 /* dma count register 3 (r/w) */
  271. #define _PPC403_DMADA0 0xc2 /* dma destination address register 0 (r/w) */
  272. #define _PPC403_DMADA1 0xca /* dma destination address register 1 (r/w) */
  273. #define _PPC403_DMADA2 0xd2 /* dma destination address register 2 (r/w) */
  274. #define _PPC403_DMADA3 0xda /* dma destination address register 3 (r/w) */
  275. #define _PPC403_DMASA0 0xc3 /* dma source address register 0 (r/w) */
  276. #define _PPC403_DMASA1 0xcb /* dma source address register 1 (r/w) */
  277. #define _PPC403_DMASA2 0xd3 /* dma source address register 2 (r/w) */
  278. #define _PPC403_DMASA3 0xdb /* dma source address register 3 (r/w) */
  279. #define _PPC403_DMASR  0xe0 /* dma status register (r/w) */
  280. #define _PPC403_EXISR  0x40 /* external interrupt status register (r/w) */
  281. #define _PPC403_EXIER  0x42 /* external interrupt enable register (r/w) */
  282. #define _PPC403_IOCR   0xa0 /* input/output configuration register (r/w) */
  283. /* time control register */
  284. #define _PPC403_TCR_WPM_U 0xc000 /* watchdog period mask */
  285. #define _PPC403_TCR_WRCM_U 0x3000 /* wotchdog reset control */
  286. #define _PPC403_TCR_WIEM_U 0x0800 /* watchdog interrupt enable */
  287. #define _PPC403_TCR_PIEM_U 0x0400 /* pit interupt enable */
  288. #define _PPC403_TCR_FPM_U 0x0300 /* fit period */
  289. #define _PPC403_TCR_FIEM_U 0x0080 /* fit interrupt enable */
  290. /* timer control register */
  291. #define _PPC403_TCR_WPM_U 0xc000 /* watchdog period */
  292. #define _PPC403_TCR_WRCM_U 0x3000 /* watchdog reset control */
  293. #define _PPC403_TCR_WIEM_U 0x0800 /* watchdog interrupt enable */
  294. #define _PPC403_TCR_PIEM_U 0x0400 /* pit interrupt enable */
  295. #define _PPC403_TCR_FP_U 0x0300 /* fit period */
  296. #define _PPC403_TCR_FIE_U 0x0080 /* fit interrupt enable */
  297. #define _PPC403_TCR_ARE_U 0x0040 /* fit auto-reload enable */
  298. /* timer status register */
  299. #define _PPC403_TSR_SNWM_U 0x8000 /* supress next watchdog */
  300. #define _PPC403_TSR_WISM_U 0x4000 /* watchdog interrupt status */
  301. #define _PPC403_TSR_WRSM_U 0x3000 /* watchdog reset status */
  302. #define _PPC403_TSR_PISM_U 0x0800 /* pit interrupt status */
  303. #define _PPC403_TSR_FISM_U 0x0400 /* fit interrupt status */
  304. /* defintion of external interrupt status and enable registers' mask bits */
  305. /* Interrupts are enabled by setting the corresponding bits in the EXIER  */
  306. /* When interrupts occur, the corresponding bits in EXISR are set to one. */
  307. #define _PPC403_EXI_CI 0x80000000 /* critical interrupt */
  308. #define _PPC403_EXI_SRI 0x08000000 /* serial port receiver interrupt */
  309. #define _PPC403_EXI_STI 0x04000000 /* serial port transmitter interrupt */
  310. #define _PPC403_EXI_JRI 0x02000000 /* JTAG serial port receiver */
  311. #define _PPC403_EXI_JTI 0x01000000 /* JTAG serial port receiver */
  312. #define _PPC403_EXI_D0I 0x00800000 /* dma channel 0 */
  313. #define _PPC403_EXI_D1I 0x00400000 /* dma channel 1 */
  314. #define _PPC403_EXI_D2I 0x00200000 /* dma channel 2 */
  315. #define _PPC403_EXI_D3I 0x00100000 /* dma channel 3 */
  316. #define _PPC403_EXI_E0I 0x00000010 /* external interrupt0 */
  317. #define _PPC403_EXI_E1I 0x00000008 /* external interrupt1 */
  318. #define _PPC403_EXI_E2I 0x00000004 /* external interrupt2 */
  319. #define _PPC403_EXI_E3I 0x00000002 /* external interrupt3 */
  320. #define _PPC403_EXI_E4I 0x00000001 /* external interrupt4 */
  321. #define _PPC403_IOCR_E0TM 0x80000000  /* external intr 0 triggering */
  322.     /* 0 - level sensitive */
  323.     /* 1 - edge triggered */
  324. #define _PPC403_IOCR_E0LM 0x40000000  /* external inter 0 active level */
  325. #define _PPC403_IOCR_E1TM 0x20000000  /* external intr 1 triggering */
  326. #define _PPC403_IOCR_E1LM 0x10000000  /* external intr 1 active level */
  327. #define _PPC403_IOCR_E2TM 0x08000000  /* external intr 2 triggering */
  328. #define _PPC403_IOCR_E2LM 0x04000000  /* external intr 2 active level */
  329. #define _PPC403_IOCR_E3TM 0x02000000  /* external intr 3 triggering */
  330. #define _PPC403_IOCR_E3LM 0x01000000  /* external intr 3 active level */
  331. #define _PPC403_IOCR_E4TM 0x00800000  /* external intr 4 triggering */
  332. #define _PPC403_IOCR_E4LM 0x00400000  /* external intr 4 active level */
  333. #define _PPC403_IOCR_EDT 0x00080000  /* enable dram tri-state (GCX) */
  334. #define _PPC403_IOCR_SOR 0x00040000  /* enable sampling data (GCX) */
  335. #define _PPC403_IOCR_EDO 0x00008000  /* EDO dram enable (GCX) */
  336. #define _PPC403_IOCR_2XC 0x00004000  /* clock double core enable (GCX) */
  337. #define _PPC403_IOCR_ATC 0x00002000  /* adress tri-state control */
  338. #define _PPC403_IOCR_SPD 0x00001000  /* static power disable */
  339. #define _PPC403_IOCR_BEM 0x00000800  /* byte enable mode  SRAM accesses*/
  340. #define _PPC403_IOCR_PTD 0x00000400  /* device-paced mode disable SRAM */
  341. #define _PPC403_IOCR_ARE 0x00000080  /* asynchronous ready enable SRAM */
  342. #define _PPC403_IOCR_DRCM 0x00000020  /* DRAM read on CAS */
  343. #define _PPC403_IOCR_RDMM 0x00000018  /* real time debug mode */
  344.     /* b'00 - trace status output disabled */
  345.     /* b'01 - program and bus status */
  346.     /* b'10 - program status and trace output */
  347.     /* b'11 - reserved */
  348. #define _PPC403_IOCR_RDM(n) ((n)<<3)    /* real time debug mode */
  349. #define _PPC403_IOCR_TCSM 0x00000004  /* timer clock source */
  350.     /* 0 - SysClk pin */
  351.     /* 1 - TimerClk pin */
  352. #define _PPC403_IOCR_SCSM 0x00000002  /* serial port clock source */
  353.     /* 0 - SysClk pin */
  354.     /* 1 - SerClk pin */
  355. #define _PPC403_IOCR_SPCM 0x00000001  /* serial port configuration */
  356.     /* 0 - DSR/DTR */
  357.     /* 1 - CTS/RTS */
  358. /* exception syndrome register mask bits: 
  359.  * 0 - error not occured 1 - error occured */
  360. #define _PPC403_ESR_IMCPM 0x80000000  /* instr machine check protection */
  361. #define _PPC403_ESR_IMCNM 0x40000000  /* instr machine check non-configured */
  362. #define _PPC403_ESR_IMCBM 0x20000000  /* instr machine check bus error */
  363. #define _PPC403_ESR_IMCTM 0x10000000  /* instr machine check timeout */
  364. #define _PPC403_ESR_PEIM  0x08000000  /* program exception - illegal */
  365. #define _PPC403_ESR_PEPM  0x04000000  /* program exception - previledged */
  366. #define _PPC403_ESR_PETM  0x02000000  /* program exception - trap */
  367. #define _PPC403_ESR_DST   0x00800000  /* data storage exception - store fault */
  368. #define _PPC403_ESR_DIZ   0x00400000  /* data/inst storage exception - zone f.*/
  369. /* bus error syndrome register mask bits: 0 - no eroor  1 - error occured */
  370. #define _PPC403_BESR_DSESM 0x80000000  /* data-side error status */
  371. #define _PPC403_BESR_DMESM 0x40000000  /* dma error status */
  372. #define _PPC403_BESR_RWSM 0x20000000  /* read/write status */
  373.     /* 0 - write error */
  374.     /* 1 - read error */
  375. #define _PPC403_BESR_ETM 0x1c000000  /* error type */
  376.     /* 000 - protection violation */
  377.     /* 001 - parity error (GCX) */
  378.     /* 010 - access to non configured bank */
  379.     /* 100 - active level error on bus eroor input pin */
  380.     /* 110 - bus time-out */
  381.     /* 111 - reserved */
  382. /* exception vector prefix register */
  383. #define _PPC403_EVPR_EVPM 0xffff0000  /* exception vector prefix mask */
  384. /* common bits for sram and dram configuration */
  385. #define _PPC403_BR_BASM    0xff000000 /* base address select mask*/
  386. #define _PPC403_BR_BAS(n)  ((n)<<24) /* base address select */
  387. #define _PPC403_BR_BSM    0x00e00000 /* bank size mask */
  388. #define _PPC403_BR_BS_1MB  0x00000000 /* bank size : 000 - 1MB */
  389. #define _PPC403_BR_BS_2MB  0x00200000 /* bank size : 001 - 2MB */
  390. #define _PPC403_BR_BS_4MB  0x00400000 /* bank size : 010 - 4MB */
  391. #define _PPC403_BR_BS_8MB  0x00600000 /* bank size : 011 - 8MB */
  392. #define _PPC403_BR_BS_16MB 0x00800000 /* bank size : 100 - 16MB */
  393. #define _PPC403_BR_BS_32MB 0x00a00000 /* bank size : 101 - 32MB */
  394. #define _PPC403_BR_BS_64MB 0x00c00000 /* bank size : 110 - 64MB */
  395. #define _PPC403_BR_BUM    0x00180000 /* bank usage mask */
  396. #define _PPC403_BR_BU_DIS  0x00000000 /* bank usage: 00 - disable */ 
  397. #define _PPC403_BR_BU_RO   0x00080000 /* bank usage: 01 - read only */ 
  398. #define _PPC403_BR_BU_WO   0x00100000 /* bank usage: 10 - write only */ 
  399. #define _PPC403_BR_BU_RW   0x00180000 /* bank usage: 11 - read/write only */ 
  400. #define _PPC403_BR_SLFM    0x00040000 /* sram-dram sequential line fill */
  401. #define _PPC403_BR_BWM    0x00018000 /* bus width mask */
  402. #define _PPC403_BR_BW_8    0x00000000 /* bus width 00 - 8 bit  */
  403. #define _PPC403_BR_BW_16   0x00008000 /* bus width 01 - 16 bit */
  404. #define _PPC403_BR_BW_32   0x00010000 /* bus width 10 - 32 bit */
  405. #define _PPC403_BR_BW_64   0x00018000 /* bus width 11 - 64 bit */
  406. #define _PPC403_BR_SDM    0x00000001 /* sram-dram selection 0-dram 1-sram */
  407. /* sram configuration (br0 - br7) */
  408. #define _PPC403_BRS_BMEM   0x00020000 /* burst mode enable - 0 disabled */
  409. #define _PPC403_BRS_REM    0x00004000 /* ready enable - 0 disabled */
  410. #define _PPC403_BRS_TWM    0x00003f00 /* transfer wiat-contains the number
  411.  * of wait states inserted by the 
  412.  * processor into all transactions */
  413. #define _PPC403_BRS_TWT(n)  ((n)<<8) /* transfer wait states - non-burst */
  414. #define _PPC403_BRS_FWM     0x00003c00 /* first wait states mask */
  415. #define _PPC403_BRS_FWT(n)  ((N)<<10) /* first wait states - burst */
  416. #define _PPC403_BRS_BWM     0x00000300 /* burst wait states mask */
  417. #define _PPC403_BRS_BWT(n)  ((N)<<10) /* burst wait states */
  418. #define _PPC403_BRS_CSTM    0x00000080 /* chip select on timing
  419.  * 0 - valid when address is valid
  420.  * 1 - valid one SysClk cycle after
  421.  * address is valid */
  422. #define _PPC403_BRS_OETM 0x00000040 /* output enable on timing
  423.  * 0 - valid when chip select is valid
  424.  * 1 - valid one SysClk cycle after
  425.  * chip select is valid */
  426. #define _PPC403_BRS_WBNM 0x00000020 /* write byte enable on timing
  427.  * 0 - valid one chip select is valid
  428.  * 1 - on SysClk Cycle after */
  429. #define _PPC403_BRS_WBFM 0x00000010 /* write byte enable off on timing
  430.  * 0 - inactive when chip select 
  431.  *     becomes inactive
  432.  * 1 - inactive one SysClk cycle 
  433.  *     before chip select becoms
  434.  *     inactive */
  435. #define _PPC403_BRS_THM 0x0000000e /* transfer hold mask */
  436. #define _PPC403_BRS_TH(n)  ((n)<<1) /* transfer hold */
  437. /* dram configuration (br4 - br7) */
  438. #define _PPC403_BRD_ERM  0x00020000 /* Early Ras Mode */
  439. #define _PPC403_BRD_IEM  0x00004000 /* internal/external multiplex */
  440. #define _PPC403_BRD_RCTM 0x00002000 /* RAS active to CAS active timing */
  441. #define _PPC403_BRD_ARMM 0x00001000 /* alternate refresh mode 
  442.  * 0 - normal refresh
  443.  * 1 - immediate or self refresh */
  444. #define _PPC403_BRD_PMM  0x00000800 /* page mode 
  445.  * 0 - single accesses only
  446.  * 1 - burst access supported */
  447. #define _PPC403_BRD_FACM 0x00000600 /* first access timing mask */
  448. #define _PPC403_BRD_FAC(n) ((n)<<9) /* first access timing */
  449. #define _PPC403_BRD_BACM 0x00000180 /* burst access timing mask */
  450. #define _PPC403_BRD_BAC(n) ((n)<<7) /* burst access timing */
  451. #define _PPC403_BRD_PPCM 0x00000040 /* precharge cycles */
  452. #define _PPC403_BRD_RARM 0x00000020 /* RAS active during refresh
  453.  * 0 - one and half sysclk cycle
  454.  * 1 - two and half */
  455. #define _PPC403_BRD_RRM 0x0000001e /* refresh interval mask */
  456. #define _PPC403_BRD_RR(n)  ((n)<<1) /* refresh interval */
  457. /* bank register high configuration (brh0 - brh7) */
  458. #define _PPC403_BRH_PCE 0x80000000 /* parity check enable */
  459. /* dma channel control register */
  460. #define _DMACR_CE 0x80000000 /* channel enable */
  461. #define _DMACR_CIE 0x40000000 /* channel interrupt enable */
  462. #define _DMACR_TD 0x20000000 /* transfer direction */
  463. #define _DMACR_PL 0x10000000 /* peripheral location */
  464. #define _DMACR_PW_MASK  0x0c000000 /* peripheral width */
  465. #define _DMACR_PW_BYTE  0x00000000 /* byte */
  466. #define _DMACR_PW_SHORT 0x04000000 /* halfword */
  467. #define _DMACR_PW_WORD  0x08000000 /* word */
  468. #define _DMACR_PW_RES  0x0c000000 /* reserved */
  469. #define _DMACR_DAI 0x02000000 /* destination address increment */
  470. #define _DMACR_SAI 0x01000000 /* source address increment */
  471. #define _DMACR_CP 0x00800000 /* channel priority */
  472. #define _DMACR_TM_M 0x00600000 /* transfer mode mask */
  473. #define _DMACR_TM_B 0x00000000 /* buffered dma */
  474. #define _DMACR_TM_F 0x00200000 /* fly-by dma */
  475. #define _DMACR_TM_S 0x00400000 /* software initiated mem-to-mem dma */
  476. #define _DMACR_TM_H 0x00600000 /* hardware initiated mem-to-mem dma */
  477. #define _DMACR_PSC_M 0x00180000 /* peripheral setup cycles mask */
  478. #define _DMACR_PSC_0 0x00000000 /* no cycles */
  479. #define _DMACR_PSC_1 0x00080000 /* one cycles */
  480. #define _DMACR_PSC_2 0x00100000 /* two cycles */
  481. #define _DMACR_PSC_3 0x00180000 /* three cycles */
  482. #define _DMACR_PWC_MASK 0x0007e000  /* peripheral wait cycles mask */
  483. #define _DMACR_PHC_MASK 0x00001c00 /* peripheral hold cycles */
  484. #define _DMACR_ETD 0x00000200 /* eoc/tc pin direction */
  485. #define _DMACR_TCE 0x00000100 /* terminal count enable 
  486.  * 0 - end-of-transfer input
  487.  * 1 - terminal count output
  488.  */
  489. #define _DMACR_CH 0x00000080 /* chaining enable */
  490. #define _DMACR_BME 0x00000040 /* burst mode enable  */
  491. #define _DMACR_ECE 0x00000020 /* EOT chain mode enable */
  492. #define _DMACR_TCD 0x00000010 /* TC chain mode disable */
  493. #define _DMACR_PCE 0x00000008 /* parity check enable */
  494. /* dma status registers */
  495. #define _DMASR_CS0_MASK 0x80000000 /* channel 0 terminal status */
  496. #define _DMASR_CS1_MASK 0x40000000 /* channel 1 terminal status */
  497. #define _DMASR_CS2_MASK 0x20000000 /* channel 2 terminal status */
  498. #define _DMASR_CS3_MASK 0x10000000 /* channel 3 terminal status */
  499. #define _DMASR_TS0_MASK 0x08000000 /* channel 0 end-of-transfer status */
  500. #define _DMASR_TS1_MASK 0x04000000 /* channel 1 end-of-transfer status */
  501. #define _DMASR_TS2_MASK 0x02000000 /* channel 2 end-of-transfer status */
  502. #define _DMASR_TS3_MASK 0x01000000 /* channel 3 end-of-transfer status */
  503. #define _DMASR_RI0_MASK 0x00800000 /* channel 0 error status */
  504. #define _DMASR_RI1_MASK 0x00400000 /* channel 1 error status */
  505. #define _DMASR_RI2_MASK 0x00200000 /* channel 2 error status */
  506. #define _DMASR_RI3_MASK 0x00100000 /* channel 3 error status */
  507. #define _DMASR_IR0_MASK 0x00040000 /* internal dma reguest 0 */
  508. #define _DMASR_IR1_MASK 0x00020000 /* internal dma reguest 1 */
  509. #define _DMASR_IR2_MASK 0x00010000 /* internal dma reguest 2 */
  510. #define _DMASR_IR3_MASK 0x00008000 /* internal dma reguest 3 */
  511. #define _DMASR_ER0_MASK 0x00004000 /* external dma reguest 0 */
  512. #define _DMASR_ER1_MASK 0x00002000 /* external dma reguest 1 */
  513. #define _DMASR_ER2_MASK 0x00001000 /* external dma reguest 2 */
  514. #define _DMASR_ER3_MASK 0x00000800 /* external dma reguest 3 */
  515. #define _DMASR_CB0_MASK 0x00000400 /* channel 0 busy */
  516. #define _DMASR_CB1_MASK 0x00000200 /* channel 1 busy */
  517. #define _DMASR_CB2_MASK 0x00000100 /* channel 2 busy */
  518. #define _DMASR_CB3_MASK 0x00000080 /* channel 3 busy */
  519. #define _DMASR_CT0_MASK 0x00080000 /* chained transfer on channel 0 */
  520. #define _DMASR_CT1_MASK 0x00000040      /* chained transfer on channel 1 */
  521. #define _DMASR_CT2_MASK 0x00000020      /* chained transfer on channel 1 */
  522. #define _DMASR_CT3_MASK 0x00000010      /* chained transfer on channel 1 */
  523. /* PVR definition */
  524. #define _PVR_FAM_MSK 0xfff00000 /* processor family mask*/
  525. #define _PVR_MEM_MSK 0x000f0000 /* processor family member mask */
  526. #define _PVR_CCF_MSK 0x0000f000 /* Core Configuration mask */
  527. #define _PVR_PCF_MSK 0x00000f00 /* Peripheral Configuration mask */
  528. #define _PVR_MAJ_MSK 0x000000f0 /* Major Change Level mask */
  529. #define _PVR_MIN_MSK 0x0000000f /* Minor Change Level mask */
  530. #define _PVR_CONF_403GA     0x0000 /* processor conf. bits for 403GA */
  531. #define _PVR_CONF_403GC     0x0002 /* processor conf. bits for 403GC */
  532. #define _PVR_CONF_403GCX    0x0014 /* processor conf. bits for 403GCX */
  533. #ifdef __cplusplus
  534. }
  535. #endif
  536. #endif /* __INCppc403h */