x86, AMD IOMMU: replace DEVID macro with a function
[sfrench/cifs-2.6.git] / arch / ppc / boot / simple / rw4 / ppc_40x.h
1 /*----------------------------------------------------------------------------+
2 |       This source code has been made available to you by IBM on an AS-IS
3 |       basis.  Anyone receiving this source is licensed under IBM
4 |       copyrights to use it in any way he or she deems fit, including
5 |       copying it, modifying it, compiling it, and redistributing it either
6 |       with or without modifications.  No license under IBM patents or
7 |       patent applications is to be implied by the copyright license.
8 |
9 |       Any user of this software should understand that IBM cannot provide
10 |       technical support for this software and will not be responsible for
11 |       any consequences resulting from the use of this software.
12 |
13 |       Any person who transfers this source code or any derivative work
14 |       must include the IBM copyright notice, this paragraph, and the
15 |       preceding two paragraphs in the transferred software.
16 |
17 |       COPYRIGHT   I B M   CORPORATION 1997
18 |       LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
19 +----------------------------------------------------------------------------*/
20 /*----------------------------------------------------------------------------+
21 | Author:    Tony J. Cerreto
22 | Component: Assembler include file.
23 | File:      ppc_40x.h
24 | Purpose:   Include file containing PPC DCR defines.
25 |
26 | Changes:
27 | Date       Author  Comment
28 | ---------  ------  --------------------------------------------------------
29 | 01-Mar-00  tjc     Created
30 +----------------------------------------------------------------------------*/
31 /* added by linguohui*/
32 #define MW
33 /*----------------------------------------------------------------------------+
34 | PPC Special purpose registers Numbers
35 +----------------------------------------------------------------------------*/
36 #define ccr0            0x3b3               /* core configuration reg        */
37 #define ctr             0x009               /* count register                */
38 #define ctrreg          0x009               /* count register                */
39 #define dbcr0           0x3f2               /* debug control register 0      */
40 #define dbcr1           0x3bd               /* debug control register 1      */
41 #define dbsr            0x3f0               /* debug status register         */
42 #define dccr            0x3fa               /* data cache control reg.       */
43 #define dcwr            0x3ba               /* data cache write-thru reg     */
44 #define dear            0x3d5               /* data exception address reg    */
45 #define esr             0x3d4               /* exception syndrome register   */
46 #define evpr            0x3d6               /* exception vector prefix reg   */
47 #define iccr            0x3fb               /* instruction cache cntrl re    */
48 #define icdbdr          0x3d3               /* instr cache dbug data reg     */
49 #define lrreg           0x008               /* link register                 */
50 #define pid             0x3b1               /* process id reg                */
51 #define pit             0x3db               /* programmable interval time    */
52 #define pvr             0x11f               /* processor version register    */
53 #define sgr             0x3b9               /* storage guarded reg           */
54 #define sler            0x3bb               /* storage little endian reg     */
55 #define sprg0           0x110               /* special general purpose 0     */
56 #define sprg1           0x111               /* special general purpose 1     */
57 #define sprg2           0x112               /* special general purpose 2     */
58 #define sprg3           0x113               /* special general purpose 3     */
59 #define sprg4           0x114               /* special general purpose 4     */
60 #define sprg5           0x115               /* special general purpose 5     */
61 #define sprg6           0x116               /* special general purpose 6     */
62 #define sprg7           0x117               /* special general purpose 7     */
63 #define srr0            0x01a               /* save/restore register 0       */
64 #define srr1            0x01b               /* save/restore register 1       */
65 #define srr2            0x3de               /* save/restore register 2       */
66 #define srr3            0x3df               /* save/restore register 3       */
67 #define tbhi            0x11D
68 #define tblo            0x11C
69 #define tcr             0x3da               /* timer control register        */
70 #define tsr             0x3d8               /* timer status register         */
71 #define xerreg          0x001               /* fixed point exception         */
72 #define xer             0x001               /* fixed point exception         */
73 #define zpr             0x3b0               /* zone protection reg           */
74
75 /*----------------------------------------------------------------------------+
76 | Decompression Controller
77 +----------------------------------------------------------------------------*/
78 #define kiar            0x014               /* Decompression cntl addr reg   */
79 #define kidr            0x015               /* Decompression cntl data reg   */
80 #define kitor0          0x00                /* index table origin Reg 0      */
81 #define kitor1          0x01                /* index table origin Reg 1      */
82 #define kitor2          0x02                /* index table origin Reg 2      */
83 #define kitor3          0x03                /* index table origin Reg 3      */
84 #define kaddr0          0x04                /* addr decode Definition Reg 0  */
85 #define kaddr1          0x05                /* addr decode Definition Reg 1  */
86 #define kconf           0x40                /* Decompression cntl config reg */
87 #define kid             0x41                /* Decompression cntl id reg     */
88 #define kver            0x42                /* Decompression cntl ver number */
89 #define kpear           0x50                /* bus error addr reg (PLB)      */
90 #define kbear           0x51                /* bus error addr reg (DCP-EBC)  */
91 #define kesr0           0x52                /* bus error status reg 0        */
92
93 /*----------------------------------------------------------------------------+
94 | Romeo Specific Device Control Register Numbers.
95 +----------------------------------------------------------------------------*/
96 #ifndef VESTA
97 #define cdbcr           0x3d7                   /* cache debug cntrl reg     */
98
99 #define a_latcnt        0x1a9                   /* PLB Latency count         */
100 #define a_tgval         0x1ac                   /* tone generation value     */
101 #define a_plb_pr        0x1bf                   /* PLB priority              */
102
103 #define cic_sel1        0x031                   /* select register 1         */
104 #define cic_sel2        0x032                   /* select register 2         */
105
106 #define clkgcrst        0x122                   /* chip reset register */
107
108 #define cp_cpmsr        0x100                   /*rstatus register           */
109 #define cp_cpmer        0x101                   /* enable register           */
110
111 #define dcp_kiar        0x190                   /* indirect address register */
112 #define dcp_kidr        0x191                   /* indirect data register    */
113
114 #define hsmc_mcgr       0x1c0                   /* HSMC global register      */
115 #define hsmc_mcbesr     0x1c1                   /* bus error status register */
116 #define hsmc_mcbear     0x1c2                   /* bus error address register*/
117 #define hsmc_mcbr0      0x1c4                   /* SDRAM sub-ctrl bank reg 0 */
118 #define hsmc_mccr0      0x1c5                   /* SDRAM sub-ctrl ctrl reg 0 */
119 #define hsmc_mcbr1      0x1c7                   /* SDRAM sub-ctrl bank reg 1 */
120 #define hsmc_mccr1      0x1c8                   /* SDRAM sub-ctrl ctrl reg 1 */
121 #define hsmc_sysr       0x1d1                   /* system register           */
122 #define hsmc_data       0x1d2                   /* data register             */
123 #define hsmc_mccrr      0x1d3                   /* refresh register          */
124
125 #define ocm_pbar        0x1E0                   /* base address register     */
126
127 #define plb0_pacr0      0x057                   /* PLB arbiter control reg   */
128 #define plb1_pacr1      0x067                   /* PLB arbiter control reg   */
129
130 #define v_displb        0x157                   /* set left border of display*/
131 #define v_disptb        0x158                   /* top border of display     */
132 #define v_osd_la        0x159                   /* first link address for OSD*/
133 #define v_ptsdlta       0x15E                   /* PTS delta register        */
134 #define v_v0base        0x16C                   /* base mem add for VBI-0    */
135 #define v_v1base        0x16D                   /* base mem add for VBI-1    */
136 #define v_osbase        0x16E                   /* base mem add for OSD data */
137 #endif
138
139 /*----------------------------------------------------------------------------+
140 | Vesta Device Control Register Numbers.
141 +----------------------------------------------------------------------------*/
142 /*----------------------------------------------------------------------------+
143 | Cross bar switch.
144 +----------------------------------------------------------------------------*/
145 #define cbs0_cr         0x010               /* CBS configuration register    */
146
147 /*----------------------------------------------------------------------------+
148 | DCR external master (DCRX).
149 +----------------------------------------------------------------------------*/
150 #define dcrx0_icr       0x020               /* internal control register     */
151 #define dcrx0_isr       0x021               /* internal status register      */
152 #define dcrx0_ecr       0x022               /* external control register     */
153 #define dcrx0_esr       0x023               /* external status register      */
154 #define dcrx0_tar       0x024               /* target address register       */
155 #define dcrx0_tdr       0x025               /* target data register          */
156 #define dcrx0_igr       0x026               /* interrupt generation register */
157 #define dcrx0_bcr       0x027               /* buffer control register       */
158
159 /*----------------------------------------------------------------------------+
160 | Chip interconnect configuration.
161 +----------------------------------------------------------------------------*/
162 #define cic0_cr         0x030               /* CIC control register          */
163 #define cic0_vcr        0x033               /* video macro control reg       */
164 #define cic0_sel3       0x035               /* select register 3             */
165
166 /*----------------------------------------------------------------------------+
167 | Chip interconnect configuration.
168 +----------------------------------------------------------------------------*/
169 #define sgpo0_sgpO      0x036               /* simplified GPIO output        */
170 #define sgpo0_gpod      0x037               /* simplified GPIO open drain    */
171 #define sgpo0_gptc      0x038               /* simplified GPIO tristate cntl */
172 #define sgpo0_gpi       0x039               /* simplified GPIO input         */
173
174 /*----------------------------------------------------------------------------+
175 | Universal interrupt controller.
176 +----------------------------------------------------------------------------*/
177 #define uic0_sr         0x040               /* status register               */
178 #define uic0_srs        0x041               /* status register set           */
179 #define uic0_er         0x042               /* enable register               */
180 #define uic0_cr         0x043               /* critical register             */
181 #define uic0_pr         0x044               /* parity register               */
182 #define uic0_tr         0x045               /* triggering register           */
183 #define uic0_msr        0x046               /* masked status register        */
184 #define uic0_vr         0x047               /* vector register               */
185 #define uic0_vcr        0x048               /* enable config register        */
186
187 /*----------------------------------------------------------------------------+
188 | PLB 0 and 1.
189 +----------------------------------------------------------------------------*/
190 #define pb0_pesr        0x054               /* PLB error status reg 0        */
191 #define pb0_pesrs       0x055               /* PLB error status reg 0 set    */
192 #define pb0_pear        0x056               /* PLB error address reg         */
193
194 #define pb1_pesr        0x064               /* PLB error status reg 1        */
195 #define pb1_pesrs       0x065               /* PLB error status reg 1 set    */
196 #define pb1_pear        0x066               /* PLB error address reg         */
197
198 /*----------------------------------------------------------------------------+
199 | EBIU DCR registers.
200 +----------------------------------------------------------------------------*/
201 #define ebiu0_brcrh0    0x070               /* bus region register 0 high    */
202 #define ebiu0_brcrh1    0x071               /* bus region register 1 high    */
203 #define ebiu0_brcrh2    0x072               /* bus region register 2 high    */
204 #define ebiu0_brcrh3    0x073               /* bus region register 3 high    */
205 #define ebiu0_brcrh4    0x074               /* bus region register 4 high    */
206 #define ebiu0_brcrh5    0x075               /* bus region register 5 high    */
207 #define ebiu0_brcrh6    0x076               /* bus region register 6 high    */
208 #define ebiu0_brcrh7    0x077               /* bus region register 7 high    */
209 #define ebiu0_brcr0     0x080               /* bus region register 0         */
210 #define ebiu0_brcr1     0x081               /* bus region register 1         */
211 #define ebiu0_brcr2     0x082               /* bus region register 2         */
212 #define ebiu0_brcr3     0x083               /* bus region register 3         */
213 #define ebiu0_brcr4     0x084               /* bus region register 4         */
214 #define ebiu0_brcr5     0x085               /* bus region register 5         */
215 #define ebiu0_brcr6     0x086               /* bus region register 6         */
216 #define ebiu0_brcr7     0x087               /* bus region register 7         */
217 #define ebiu0_bear      0x090               /* bus error address register    */
218 #define ebiu0_besr      0x091               /* bus error syndrome reg        */
219 #define ebiu0_besr0s    0x093               /* bus error syndrome reg        */
220 #define ebiu0_biucr     0x09a               /* bus interface control reg     */
221
222 /*----------------------------------------------------------------------------+
223 | OPB bridge.
224 +----------------------------------------------------------------------------*/
225 #define opbw0_gesr      0x0b0               /* error status reg              */
226 #define opbw0_gesrs     0x0b1               /* error status reg              */
227 #define opbw0_gear      0x0b2               /* error address reg             */
228
229 /*----------------------------------------------------------------------------+
230 | DMA.
231 +----------------------------------------------------------------------------*/
232 #define dma0_cr0        0x0c0               /* DMA channel control reg 0     */
233 #define dma0_ct0        0x0c1               /* DMA count register 0          */
234 #define dma0_da0        0x0c2               /* DMA destination addr reg 0    */
235 #define dma0_sa0        0x0c3               /* DMA source addr register 0    */
236 #define dma0_cc0        0x0c4               /* DMA chained count 0           */
237 #define dma0_cr1        0x0c8               /* DMA channel control reg 1     */
238 #define dma0_ct1        0x0c9               /* DMA count register 1          */
239 #define dma0_da1        0x0ca               /* DMA destination addr reg 1    */
240 #define dma0_sa1        0x0cb               /* DMA source addr register 1    */
241 #define dma0_cc1        0x0cc               /* DMA chained count 1           */
242 #define dma0_cr2        0x0d0               /* DMA channel control reg 2     */
243 #define dma0_ct2        0x0d1               /* DMA count register 2          */
244 #define dma0_da2        0x0d2               /* DMA destination addr reg 2    */
245 #define dma0_sa2        0x0d3               /* DMA source addr register 2    */
246 #define dma0_cc2        0x0d4               /* DMA chained count 2           */
247 #define dma0_cr3        0x0d8               /* DMA channel control reg 3     */
248 #define dma0_ct3        0x0d9               /* DMA count register 3          */
249 #define dma0_da3        0x0da               /* DMA destination addr reg 3    */
250 #define dma0_sa3        0x0db               /* DMA source addr register 3    */
251 #define dma0_cc3        0x0dc               /* DMA chained count 3           */
252 #define dma0_sr         0x0e0               /* DMA status register           */
253 #define dma0_srs        0x0e1               /* DMA status register           */
254 #define dma0_s1         0x031               /* DMA select1 register          */
255 #define dma0_s2         0x032               /* DMA select2 register          */
256
257 /*---------------------------------------------------------------------------+
258 | Clock and power management.
259 +----------------------------------------------------------------------------*/
260 #define cpm0_fr         0x102               /* force register                */
261
262 /*----------------------------------------------------------------------------+
263 | Serial Clock Control.
264 +----------------------------------------------------------------------------*/
265 #define ser0_ccr        0x120               /* serial clock control register */
266
267 /*----------------------------------------------------------------------------+
268 | Audio Clock Control.
269 +----------------------------------------------------------------------------*/
270 #define aud0_apcr       0x121               /* audio clock ctrl register     */
271
272 /*----------------------------------------------------------------------------+
273 | DENC.
274 +----------------------------------------------------------------------------*/
275 #define denc0_idr       0x130               /* DENC ID register              */
276 #define denc0_cr1       0x131               /* control register 1            */
277 #define denc0_rr1       0x132               /* microvision 1 (reserved 1)    */
278 #define denc0_cr2       0x133               /* control register 2            */
279 #define denc0_rr2       0x134               /* microvision 2 (reserved 2)    */
280 #define denc0_rr3       0x135               /* microvision 3 (reserved 3)    */
281 #define denc0_rr4       0x136               /* microvision 4 (reserved 4)    */
282 #define denc0_rr5       0x137               /* microvision 5 (reserved 5)    */
283 #define denc0_ccdr      0x138               /* closed caption data           */
284 #define denc0_cccr      0x139               /* closed caption control        */
285 #define denc0_trr       0x13A               /* teletext request register     */
286 #define denc0_tosr      0x13B               /* teletext odd field line se    */
287 #define denc0_tesr      0x13C               /* teletext even field line s    */
288 #define denc0_rlsr      0x13D               /* RGB rhift left register       */
289 #define denc0_vlsr      0x13E               /* video level shift register    */
290 #define denc0_vsr       0x13F               /* video scaling register        */
291
292 /*----------------------------------------------------------------------------+
293 | Video decoder.  Suspect 0x179, 0x169, 0x16a, 0x152 (rc).
294 +----------------------------------------------------------------------------*/
295 #define vid0_ccntl      0x140               /* control decoder operation     */
296 #define vid0_cmode      0x141               /* video operational mode        */
297 #define vid0_sstc0      0x142               /* STC high order bits 31:0      */
298 #define vid0_sstc1      0x143               /* STC low order bit 32          */
299 #define vid0_spts0      0x144               /* PTS high order bits 31:0      */
300 #define vid0_spts1      0x145               /* PTS low order bit 32          */
301 #define vid0_fifo       0x146               /* FIFO data port                */
302 #define vid0_fifos      0x147               /* FIFO status                   */
303 #define vid0_cmd        0x148               /* send command to decoder       */
304 #define vid0_cmdd       0x149               /* port for command params       */
305 #define vid0_cmdst      0x14A               /* command status                */
306 #define vid0_cmdad      0x14B               /* command address               */
307 #define vid0_procia     0x14C               /* instruction store             */
308 #define vid0_procid     0x14D               /* data port for I_Store         */
309 #define vid0_osdm       0x151               /* OSD mode control              */
310 #define vid0_hosti      0x152               /* base interrupt register       */
311 #define vid0_mask       0x153               /* interrupt mask register       */
312 #define vid0_dispm      0x154               /* operational mode for Disp     */
313 #define vid0_dispd      0x155               /* setting for 'Sync' delay      */
314 #define vid0_vbctl      0x156               /* VBI                           */
315 #define vid0_ttxctl     0x157               /* teletext control              */
316 #define vid0_disptb     0x158               /* display left/top border       */
317 #define vid0_osdgla     0x159               /* Graphics plane link addr      */
318 #define vid0_osdila     0x15A               /* Image plane link addr         */
319 #define vid0_rbthr      0x15B               /* rate buffer threshold         */
320 #define vid0_osdcla     0x15C               /* Cursor link addr              */
321 #define vid0_stcca      0x15D               /* STC common address            */
322 #define vid0_ptsctl     0x15F               /* PTS Control                   */
323 #define vid0_wprot      0x165               /* write protect for I_Store     */
324 #define vid0_vcqa       0x167               /* video clip queued block Ad    */
325 #define vid0_vcql       0x168               /* video clip queued block Le    */
326 #define vid0_blksz      0x169               /* block size bytes for copy op  */
327 #define vid0_srcad      0x16a               /* copy source address bits 6-31 */
328 #define vid0_udbas      0x16B               /* base mem add for user data    */
329 #define vid0_vbibas     0x16C               /* base mem add for VBI 0/1      */
330 #define vid0_osdibas    0x16D               /* Image plane base address      */
331 #define vid0_osdgbas    0x16E               /* Graphic plane base address    */
332 #define vid0_rbbase     0x16F               /* base mem add for video buf    */
333 #define vid0_dramad     0x170               /* DRAM address                  */
334 #define vid0_dramdt     0x171               /* data port for DRAM access     */
335 #define vid0_dramcs     0x172               /* DRAM command and statusa      */
336 #define vid0_vcwa       0x173               /* v clip work address           */
337 #define vid0_vcwl       0x174               /* v clip work length            */
338 #define vid0_mseg0      0x175               /* segment address 0             */
339 #define vid0_mseg1      0x176               /* segment address 1             */
340 #define vid0_mseg2      0x177               /* segment address 2             */
341 #define vid0_mseg3      0x178               /* segment address 3             */
342 #define vid0_fbbase     0x179               /* frame buffer base memory      */
343 #define vid0_osdcbas    0x17A               /* Cursor base addr              */
344 #define vid0_lboxtb     0x17B               /* top left border               */
345 #define vid0_trdly      0x17C               /* transparency gate delay       */
346 #define vid0_sbord      0x17D               /* left/top small pict. bord.    */
347 #define vid0_zoffs      0x17E               /* hor/ver zoom window           */
348 #define vid0_rbsz       0x17F               /* rate buffer size read         */
349
350 /*----------------------------------------------------------------------------+
351 | Transport demultiplexer.
352 +----------------------------------------------------------------------------*/
353 #define xpt0_lr         0x180               /* demux location register       */
354 #define xpt0_data       0x181               /* demux data register           */
355 #define xpt0_ir         0x182               /* demux interrupt register      */
356
357 #define xpt0_config1    0x0000              /* configuration 1               */
358 #define xpt0_control1   0x0001              /* control 1                     */
359 #define xpt0_festat     0x0002              /* Front-end status              */
360 #define xpt0_feimask    0x0003              /* Front_end interrupt Mask      */
361 #define xpt0_ocmcnfg    0x0004              /* OCM Address                   */
362 #define xpt0_settapi    0x0005              /* Set TAP Interrupt             */
363
364 #define xpt0_pcrhi      0x0010              /* PCR High                      */
365 #define xpt0_pcrlow     0x0011              /* PCR Low                       */
366 #define xpt0_lstchi     0x0012              /* Latched STC High              */
367 #define xpt0_lstclow    0x0013              /* Latched STC Low               */
368 #define xpt0_stchi      0x0014              /* STC High                      */
369 #define xpt0_stclow     0x0015              /* STC Low                       */
370 #define xpt0_pwm        0x0016              /* PWM                           */
371 #define xpt0_pcrstct    0x0017              /* PCR-STC Threshold             */
372 #define xpt0_pcrstcd    0x0018              /* PCR-STC Delta                 */
373 #define xpt0_stccomp    0x0019              /* STC Compare                   */
374 #define xpt0_stccmpd    0x001a              /* STC Compare Disarm            */
375
376 #define xpt0_dsstat     0x0048              /* Descrambler Status            */
377 #define xpt0_dsimask    0x0049              /* Descrambler Interrupt Mask    */
378
379 #define xpt0_vcchng     0x01f0              /* Video Channel Change          */
380 #define xpt0_acchng     0x01f1              /* Audio Channel Change          */
381 #define xpt0_axenable   0x01fe              /* Aux PID Enables               */
382 #define xpt0_pcrpid     0x01ff              /* PCR PID                       */
383
384 #define xpt0_config2    0x1000              /* Configuration 2               */
385 #define xpt0_pbuflvl    0x1002              /* Packet Buffer Level           */
386 #define xpt0_intmask    0x1003              /* Interrupt Mask                */
387 #define xpt0_plbcnfg    0x1004              /* PLB Configuration             */
388
389 #define xpt0_qint       0x1010              /* Queues Interrupts             */
390 #define xpt0_qintmsk    0x1011              /* Queues Interrupts Mask        */
391 #define xpt0_astatus    0x1012              /* Audio Status                  */
392 #define xpt0_aintmask   0x1013              /* Audio Interrupt Mask          */
393 #define xpt0_vstatus    0x1014              /* Video Status                  */
394 #define xpt0_vintmask   0x1015              /* Video Interrupt Mask          */
395
396 #define xpt0_qbase      0x1020              /* Queue Base                    */
397 #define xpt0_bucketq    0x1021              /* Bucket Queue                  */
398 #define xpt0_qstops     0x1024              /* Queue Stops                   */
399 #define xpt0_qresets    0x1025              /* Queue Resets                  */
400 #define xpt0_sfchng     0x1026              /* Section Filter Change         */
401
402 /*----------------------------------------------------------------------------+
403 | Audio decoder. Suspect 0x1ad, 0x1b4, 0x1a3, 0x1a5 (read/write status)
404 +----------------------------------------------------------------------------*/
405 #define aud0_ctrl0      0x1a0               /* control 0                     */
406 #define aud0_ctrl1      0x1a1               /* control 1                     */
407 #define aud0_ctrl2      0x1a2               /* control 2                     */
408 #define aud0_cmd        0x1a3               /* command register              */
409 #define aud0_isr        0x1a4               /* interrupt status register     */
410 #define aud0_imr        0x1a5               /* interrupt mask register       */
411 #define aud0_dsr        0x1a6               /* decoder status register       */
412 #define aud0_stc        0x1a7               /* system time clock             */
413 #define aud0_csr        0x1a8               /* channel status register       */
414 #define aud0_lcnt       0x1a9               /* queued address register 2     */
415 #define aud0_pts        0x1aa               /* presentation time stamp       */
416 #define aud0_tgctrl     0x1ab               /* tone generation control       */
417 #define aud0_qlr2       0x1ac               /* queued length register 2      */
418 #define aud0_auxd       0x1ad               /* aux data                      */
419 #define aud0_strmid     0x1ae               /* stream ID                     */
420 #define aud0_qar        0x1af               /* queued address register       */
421 #define aud0_dsps       0x1b0               /* DSP status                    */
422 #define aud0_qlr        0x1b1               /* queued len address            */
423 #define aud0_dspc       0x1b2               /* DSP control                   */
424 #define aud0_wlr2       0x1b3               /* working length register 2     */
425 #define aud0_instd      0x1b4               /* instruction download          */
426 #define aud0_war        0x1b5               /* working address register      */
427 #define aud0_seg1       0x1b6               /* segment 1 base register       */
428 #define aud0_seg2       0x1b7               /* segment 2 base register       */
429 #define aud0_avf        0x1b9               /* audio att value front         */
430 #define aud0_avr        0x1ba               /* audio att value rear          */
431 #define aud0_avc        0x1bb               /* audio att value center        */
432 #define aud0_seg3       0x1bc               /* segment 3 base register       */
433 #define aud0_offset     0x1bd               /* offset address                */
434 #define aud0_wrl        0x1be               /* working length register       */
435 #define aud0_war2       0x1bf               /* working address register 2    */
436
437 /*----------------------------------------------------------------------------+
438 | High speed memory controller 0 and 1.
439 +----------------------------------------------------------------------------*/
440 #define hsmc0_gr        0x1e0               /* HSMC global register          */
441 #define hsmc0_besr      0x1e1               /* bus error status register     */
442 #define hsmc0_bear      0x1e2               /* bus error address register    */
443 #define hsmc0_br0       0x1e4               /* SDRAM sub-ctrl bank reg 0     */
444 #define hsmc0_cr0       0x1e5               /* SDRAM sub-ctrl ctrl reg 0     */
445 #define hsmc0_br1       0x1e7               /* SDRAM sub-ctrl bank reg 1     */
446 #define hsmc0_cr1       0x1e8               /* SDRAM sub-ctrl ctrl reg 1     */
447 #define hsmc0_sysr      0x1f1               /* system register               */
448 #define hsmc0_data      0x1f2               /* data register                 */
449 #define hsmc0_crr       0x1f3               /* refresh register              */
450
451 #define hsmc1_gr        0x1c0               /* HSMC global register          */
452 #define hsmc1_besr      0x1c1               /* bus error status register     */
453 #define hsmc1_bear      0x1c2               /* bus error address register    */
454 #define hsmc1_br0       0x1c4               /* SDRAM sub-ctrl bank reg 0     */
455 #define hsmc1_cr0       0x1c5               /* SDRAM sub-ctrl ctrl reg 0     */
456 #define hsmc1_br1       0x1c7               /* SDRAM sub-ctrl bank reg 1     */
457 #define hsmc1_cr1       0x1c8               /* SDRAM sub-ctrl ctrl reg 1     */
458 #define hsmc1_sysr      0x1d1               /* system register               */
459 #define hsmc1_data      0x1d2               /* data register                 */
460 #define hsmc1_crr       0x1d3               /* refresh register              */
461
462 /*----------------------------------------------------------------------------+
463 | Machine State Register bit definitions.
464 +----------------------------------------------------------------------------*/
465 #define msr_ape         0x00100000
466 #define msr_apa         0x00080000
467 #define msr_we          0x00040000
468 #define msr_ce          0x00020000
469 #define msr_ile         0x00010000
470 #define msr_ee          0x00008000
471 #define msr_pr          0x00004000
472 #define msr_me          0x00001000
473 #define msr_de          0x00000200
474 #define msr_ir          0x00000020
475 #define msr_dr          0x00000010
476 #define msr_le          0x00000001
477
478 /*----------------------------------------------------------------------------+
479 | Used during interrupt processing.
480 +----------------------------------------------------------------------------*/
481 #define stack_reg_image_size            160
482
483 /*----------------------------------------------------------------------------+
484 | Function prolog definition and other Metaware (EABI) defines.
485 +----------------------------------------------------------------------------*/
486 #ifdef MW
487
488 #define r0              0
489 #define r1              1
490 #define r2              2
491 #define r3              3
492 #define r4              4
493 #define r5              5
494 #define r6              6
495 #define r7              7
496 #define r8              8
497 #define r9              9
498 #define r10             10
499 #define r11             11
500 #define r12             12
501 #define r13             13
502 #define r14             14
503 #define r15             15
504 #define r16             16
505 #define r17             17
506 #define r18             18
507 #define r19             19
508 #define r20             20
509 #define r21             21
510 #define r22             22
511 #define r23             23
512 #define r24             24
513 #define r25             25
514 #define r26             26
515 #define r27             27
516 #define r28             28
517 #define r29             29
518 #define r30             30
519 #define r31             31
520
521 #define cr0             0
522 #define cr1             1
523 #define cr2             2
524 #define cr3             3
525 #define cr4             4
526 #define cr5             5
527 #define cr6             6
528 #define cr7             7
529
530 #define function_prolog(func_name)      .text; \
531                                         .align  2; \
532                                         .globl  func_name; \
533                                         func_name:
534 #define function_epilog(func_name)      .type func_name,@function; \
535                                         .size func_name,.-func_name
536
537 #define function_call(func_name)        bl func_name
538
539 #define stack_frame_min                 8
540 #define stack_frame_bc                  0
541 #define stack_frame_lr                  4
542 #define stack_neg_off                   0
543
544 #endif
545
546 /*----------------------------------------------------------------------------+
547 | Function prolog definition and other DIAB (Elf) defines.
548 +----------------------------------------------------------------------------*/
549 #ifdef ELF_DIAB
550
551 fprolog:        macro   f_name
552                 .text
553                 .align  2
554                 .globl  f_name
555 f_name:
556                 endm
557
558 fepilog:        macro   f_name
559                 .type   f_name,@function
560                 .size   f_name,.-f_name
561                 endm
562
563 #define function_prolog(func_name)      fprolog func_name
564 #define function_epilog(func_name)      fepilog func_name
565 #define function_call(func_name)        bl func_name
566
567 #define stack_frame_min                 8
568 #define stack_frame_bc                  0
569 #define stack_frame_lr                  4
570 #define stack_neg_off                   0
571
572 #endif
573
574 /*----------------------------------------------------------------------------+
575 | Function prolog definition and other Xlc (XCOFF) defines.
576 +----------------------------------------------------------------------------*/
577 #ifdef XCOFF
578
579 .machine "403ga"
580
581 #define r0              0
582 #define r1              1
583 #define r2              2
584 #define r3              3
585 #define r4              4
586 #define r5              5
587 #define r6              6
588 #define r7              7
589 #define r8              8
590 #define r9              9
591 #define r10             10
592 #define r11             11
593 #define r12             12
594 #define r13             13
595 #define r14             14
596 #define r15             15
597 #define r16             16
598 #define r17             17
599 #define r18             18
600 #define r19             19
601 #define r20             20
602 #define r21             21
603 #define r22             22
604 #define r23             23
605 #define r24             24
606 #define r25             25
607 #define r26             26
608 #define r27             27
609 #define r28             28
610 #define r29             29
611 #define r30             30
612 #define r31             31
613
614 #define cr0             0
615 #define cr1             1
616 #define cr2             2
617 #define cr3             3
618 #define cr4             4
619 #define cr5             5
620 #define cr6             6
621 #define cr7             7
622
623 #define function_prolog(func_name)      .csect .func_name[PR]; \
624                                         .globl .func_name[PR]; \
625                                         func_name:
626
627 #define function_epilog(func_name)      .toc; \
628                                         .csect  func_name[DS]; \
629                                         .globl  func_name[DS]; \
630                                         .long   .func_name[PR]; \
631                                         .long   TOC[tc0]
632
633 #define function_call(func_name)        .extern .func_name[PR]; \
634                                         stw     r2,stack_frame_toc(r1); \
635                                         mfspr   r2,sprg0; \
636                                         bl      .func_name[PR]; \
637                                         lwz     r2,stack_frame_toc(r1)
638
639 #define stack_frame_min                 56
640 #define stack_frame_bc                  0
641 #define stack_frame_lr                  8
642 #define stack_frame_toc                 20
643 #define stack_neg_off                   276
644
645 #endif
646 #define function_prolog(func_name)      .text; \
647                                         .align  2; \
648                                         .globl  func_name; \
649                                         func_name:
650 #define function_epilog(func_name)      .type func_name,@function; \
651                                         .size func_name,.-func_name
652
653 #define function_call(func_name)        bl func_name
654
655 /*----------------------------------------------------------------------------+
656 | Function prolog definition for GNU
657 +----------------------------------------------------------------------------*/
658 #ifdef _GNU_TOOL
659
660 #define function_prolog(func_name)      .globl  func_name; \
661                                         func_name:
662 #define function_epilog(func_name)
663
664 #endif