OSDN Git Service

r288@cf-ppc-macosx: monabuilder | 2008-12-07 13:17:34 +0900
[pf3gnuchains/pf3gnuchains3x.git] / libgloss / mt / startup-ms2.S
1 /*
2  *
3  * interrupt_vectors.s -- the interrupt handler jump table. 
4  *
5  *
6  * There are a total of 32 interrupt vector possible, however, only
7  *   11 of those are currently used (the others are reserved). The
8  *   order of vectors is as follows:
9  *
10  *     1. Boot Vector. Vector for power-on/reset.
11  *     2. Software Vector. Vector for handling the SI instruction (an
12  *          explicit interrupt caused by software).
13  *     3. Break Vector. Vector for handling the Break instruction.
14  *     4. Device 0 Vector. Service vector for device zero. 
15  *     5. Device 1 Vector. Service vector for device one. 
16  *     6. Device 2 Vector. Service vector for device two. 
17  *     7. Device 3 Vector. Service vector for device three. 
18  *     8. Device 4 Vector. Service vector for device four. 
19  *     9. Device 5 Vector. Service vector for device five. 
20  *    10. Device 6 Vector. Service vector for device six. 
21  *    11. Device 7 Vector. Service vector for device seven. 
22  *
23  *   The rest of the interrupt vectors are reserved for future use.
24  *
25  *
26  * Each jump table entry consists of the following two instructions:
27  *
28  *   jmp Label          ; Label as appropriate
29  *   nop                ; implemented as or r0,r0,r0
30  *
31  *   The following labels are reserved for the vectors named above,
32  *   respectively:
33  *
34  *     _BOOTIVEC, _SOFTIVEC, _BRKIVEC, _DEV0IVEC, _DEV1IVEC, _DEV2IVEC,
35  *     _DEV3IVEC, _DEV4IVEC, _DEV5IVEC, _DEV6IVEC, _DEV7IVEC
36  *
37  *   28Apr05 (DJK) Added support for the overflow vector.
38  *
39  *   XXXXXXX (DJK) Modified for the MS2 target
40  *
41  *   09Jan04 (DJK) Modified internal I/O port definitions for the
42  *                   MS1-16-003.
43  *
44  *   10Oct01 (DJK) The memory map is finalized and the first 4K of address
45  *                   space is now reserved for memory-mapped I/O devices.
46  *                   (There is over 2K unused, reserved space in this area.)
47  *
48  *   26Sep01 (DJK) The memory map is changed and the device interrupts are
49  *                   now memory-mapped.
50  *
51  *
52  *
53  * Copyright (c) 2001, 2002, 2003, 2004 Morpho Technologies
54  *
55  */
56
57         .section .startup, "a", @progbits
58         .global __boot_start
59 __boot_start:
60 _INTERRUPT_VECTOR_TABLE:
61         jmp     _BOOTIVEC               ; Boot vector
62         or      r0, r0, r0
63         jmp     _SOFTIVEC               ; Vector for SI instruction
64         or      r0, r0, r0
65         jmp     _BRKIVEC                ; Vector for Break instruction
66         or      r0, r0, r0
67         ; The illegal instruction trap is not implemented.
68 _RESERVED1_IVEC:
69         jmp     _RESERVED1_IVEC
70         or      r0, r0, r0
71         jmp     _OVFIVEC
72         or      r0, r0, r0
73 _RESERVED2_IVEC:
74         jmp     _RESERVED2_IVEC
75         or      r0, r0, r0
76 _RESERVED3_IVEC:
77         jmp     _RESERVED3_IVEC
78         or      r0, r0, r0
79 _RESERVED4_IVEC:
80         jmp     _RESERVED4_IVEC
81         or      r0, r0, r0
82
83
84         .text
85
86         .equ SI_IOPORT_ADR, _DEBUG_SW_SYSREQ_REG
87         .equ SI_IOPORT_BIT, 0x1
88         .equ BRK_IOPORT_ADR, _DEBUG_BREAK_REG
89         .equ BRK_IOPORT_BIT, 0x1
90
91         .global _BOOTIVEC
92 _BOOTIVEC:
93         ; Initialize the interrupt controller's interrupt vector registers
94         ldui    r1, #%hi16(_IVEC_DEFAULT)
95         ori     r1, r1, #%lo16(_IVEC_DEFAULT)
96         stw     r1, r0, #%lo16(_DEV0_INTERRUPT_REG)
97         stw     r1, r0, #%lo16(_DEV1_INTERRUPT_REG)
98         stw     r1, r0, #%lo16(_DEV2_INTERRUPT_REG)
99         stw     r1, r0, #%lo16(_DEV3_INTERRUPT_REG)
100         stw     r1, r0, #%lo16(_DEV4_INTERRUPT_REG)
101         stw     r1, r0, #%lo16(_DEV5_INTERRUPT_REG)
102         stw     r1, r0, #%lo16(_DEV6_INTERRUPT_REG)
103         stw     r1, r0, #%lo16(_DEV7_INTERRUPT_REG)
104         stw     r1, r0, #%lo16(_DEV8_INTERRUPT_REG)
105         stw     r1, r0, #%lo16(_DEV9_INTERRUPT_REG)
106         stw     r1, r0, #%lo16(_DEV10_INTERRUPT_REG)
107         stw     r1, r0, #%lo16(_DEV11_INTERRUPT_REG)
108         stw     r1, r0, #%lo16(_DEV12_INTERRUPT_REG)
109         stw     r1, r0, #%lo16(_DEV13_INTERRUPT_REG)
110         stw     r1, r0, #%lo16(_DEV14_INTERRUPT_REG)
111         stw     r1, r0, #%lo16(_DEV15_INTERRUPT_REG)
112         stw     r1, r0, #%lo16(_DEV16_INTERRUPT_REG)
113         stw     r1, r0, #%lo16(_DEV17_INTERRUPT_REG)
114         stw     r1, r0, #%lo16(_DEV18_INTERRUPT_REG)
115
116         ; Statically initialized data must be copied from ROM to RAM.
117         ; This is done in the C run-time start-up code (crt0.o).
118
119         ; Jump to the beginning of the application and enable interrupts.
120         jmp     _start
121         ei
122
123
124         ; Handler for the SI instruction. To perform a system call, the
125         ; C model uses a trapping mechanism which executes an SI instruction.
126         ; The Morpho Technologies simulator simply performs a branch to
127         ; this vector to simulate the SI instruction (this is as the hardware
128         ; behaves). In order to trigger the simulator that a system call
129         ; is needed a write into the I/O register at address $40005 to
130         ; set bit #2 (0x4) is necessary.
131         ;
132         ; The above address has been changed to 0x00031C and the bit number
133         ; is zero. (The manifest constants have been changed to reflect this.)
134         .global _SOFTIVEC
135 _SOFTIVEC:
136         ; Build a frame to save registers.
137         subi    sp, sp, #$8
138         stw     r9, sp, #$4
139         ldui    r9, #%hi16(SI_IOPORT_ADR)
140         stw     r10, sp, #$0
141         ori     r9, r9, #%lo16(SI_IOPORT_ADR)
142         ori     r10, r0, #SI_IOPORT_BIT
143         stw     r10, r9, #$0
144         ; SYS_call is handled by simulator here...
145         or      r0, r0, r0
146         ldw     r10, sp, #$0
147         or      r0, r0, r0
148         ldw     r9, sp, #$4
149         reti    r14
150         addi    sp, sp, #$8
151
152
153
154         .global _BRKIVEC
155 _BRKIVEC:
156         ; Build a frame to save registers.
157         subi    sp, sp, #$8
158         stw     r9, sp, #$4
159         ldui    r9, #%hi16(BRK_IOPORT_ADR)
160         stw     r10, sp, #$0
161         ori     r9, r9, #%lo16(BRK_IOPORT_ADR)
162         ori     r10, r0, #BRK_IOPORT_BIT
163         stw     r10, r9, #$0
164         or      r0, r0, r0
165         or      r0, r0, r0
166         or      r0, r0, r0
167         or      r0, r0, r0
168         or      r0, r0, r0
169         ldw     r10, sp, #$0
170         ldw     r9, sp, #$4
171         reti    r15
172         addi    sp, sp, #$8
173
174
175         .global _OVFIVEC
176 _OVFIVEC:
177         addi    r15, r15, #$4
178         or      r0, r0, r0
179         or      r0, r0, r0      ; added 06Sep05
180         reti    r15
181         or      r0, r0, r0
182
183
184         .global _IVEC_DEFAULT
185 _IVEC_DEFAULT:
186         reti    r15
187         or      r0, r0, r0
188
189
190         .section .internal_io, "a", @nobits
191         .fill 256               ; Fill the first page.
192
193         ; This is the memory-mapped I/O region.
194
195         ; Hardware Interrupt Registers
196         ;.org 0xfffff100
197         .global _DEV0_INTERRUPT_REG
198 _DEV0_INTERRUPT_REG:
199         .word   0x00000000
200
201         .global _DEV1_INTERRUPT_REG
202 _DEV1_INTERRUPT_REG:
203         .word   0x00000000
204
205         .global _DEV2_INTERRUPT_REG
206 _DEV2_INTERRUPT_REG:
207         .word   0x00000000
208
209         .global _DEV3_INTERRUPT_REG
210 _DEV3_INTERRUPT_REG:
211         .word   0x00000000
212
213         .global _DEV4_INTERRUPT_REG
214 _DEV4_INTERRUPT_REG:
215         .word   0x00000000
216
217         .global _DEV5_INTERRUPT_REG
218 _DEV5_INTERRUPT_REG:
219         .word   0x00000000
220
221         .global _DEV6_INTERRUPT_REG
222 _DEV6_INTERRUPT_REG:
223         .word   0x00000000
224
225         .global _DEV7_INTERRUPT_REG
226 _DEV7_INTERRUPT_REG:
227         .word   0x00000000
228
229         .global _DEV8_INTERRUPT_REG
230 _DEV8_INTERRUPT_REG:
231         .word   0x00000000
232
233         .global _DEV9_INTERRUPT_REG
234 _DEV9_INTERRUPT_REG:
235         .word   0x00000000
236
237         .global _DEV10_INTERRUPT_REG
238 _DEV10_INTERRUPT_REG:
239         .word   0x00000000
240
241         .global _DEV11_INTERRUPT_REG
242 _DEV11_INTERRUPT_REG:
243         .word   0x00000000
244
245         .global _DEV12_INTERRUPT_REG
246 _DEV12_INTERRUPT_REG:
247         .word   0x00000000
248
249         .global _DEV13_INTERRUPT_REG
250 _DEV13_INTERRUPT_REG:
251         .word   0x00000000
252
253         .global _DEV14_INTERRUPT_REG
254 _DEV14_INTERRUPT_REG:
255         .word   0x00000000
256
257         .global _DEV15_INTERRUPT_REG
258 _DEV15_INTERRUPT_REG:
259         .word   0x00000000
260
261         .global _DEV16_INTERRUPT_REG
262 _DEV16_INTERRUPT_REG:
263         .word   0x00000000
264
265         .global _DEV17_INTERRUPT_REG
266 _DEV17_INTERRUPT_REG:
267         .word   0x00000000
268
269         .global _DEV18_INTERRUPT_REG
270 _DEV18_INTERRUPT_REG:
271         .word   0x00000000
272
273         ; 128 bytes minus nineteen registers (four bytes per register)
274         .fill (128 - 19 * 4)
275
276         .global _INTERRUPT_MASK_REG
277 _INTERRUPT_MASK_REG:
278         .word   0x00000000
279
280         .global _INTERRUPT_PENDING_REG
281 _INTERRUPT_PENDING_REG:
282         .word   0x00000000
283
284         ; 16 bytes minus two registers (four bytes per register)
285         .fill (16 - 2 * 4)
286
287         .global _DEV0_INTERRUPT_LEVEL_REG
288 _DEV0_INTERRUPT_LEVEL_REG:
289         .word   0x00000000
290
291         .global _DEV1_INTERRUPT_LEVEL_REG
292 _DEV1_INTERRUPT_LEVEL_REG:
293         .word   0x00000000
294
295         .global _DEV2_INTERRUPT_LEVEL_REG
296 _DEV2_INTERRUPT_LEVEL_REG:
297         .word   0x00000000
298
299         .global _DEV3_INTERRUPT_LEVEL_REG
300 _DEV3_INTERRUPT_LEVEL_REG:
301         .word   0x00000000
302
303         .global _DEV4_INTERRUPT_LEVEL_REG
304 _DEV4_INTERRUPT_LEVEL_REG:
305         .word   0x00000000
306
307         .global _DEV5_INTERRUPT_LEVEL_REG
308 _DEV5_INTERRUPT_LEVEL_REG:
309         .word   0x00000000
310
311         .global _DEV6_INTERRUPT_LEVEL_REG
312 _DEV6_INTERRUPT_LEVEL_REG:
313         .word   0x00000000
314
315         .global _DEV7_INTERRUPT_LEVEL_REG
316 _DEV7_INTERRUPT_LEVEL_REG:
317         .word   0x00000000
318
319         .global _DEV8_INTERRUPT_LEVEL_REG
320 _DEV8_INTERRUPT_LEVEL_REG:
321         .word   0x00000000
322
323         .global _DEV9_INTERRUPT_LEVEL_REG
324 _DEV9_INTERRUPT_LEVEL_REG:
325         .word   0x00000000
326
327         .global _DEV10_INTERRUPT_LEVEL_REG
328 _DEV10_INTERRUPT_LEVEL_REG:
329         .word   0x00000000
330
331         .global _DEV11_INTERRUPT_LEVEL_REG
332 _DEV11_INTERRUPT_LEVEL_REG:
333         .word   0x00000000
334
335         .global _DEV12_INTERRUPT_LEVEL_REG
336 _DEV12_INTERRUPT_LEVEL_REG:
337         .word   0x00000000
338
339         .global _DEV13_INTERRUPT_LEVEL_REG
340 _DEV13_INTERRUPT_LEVEL_REG:
341         .word   0x00000000
342
343         .global _DEV14_INTERRUPT_LEVEL_REG
344 _DEV14_INTERRUPT_LEVEL_REG:
345         .word   0x00000000
346
347         .global _DEV15_INTERRUPT_LEVEL_REG
348 _DEV15_INTERRUPT_LEVEL_REG:
349         .word   0x00000000
350
351         .global _DEV16_INTERRUPT_LEVEL_REG
352 _DEV16_INTERRUPT_LEVEL_REG:
353         .word   0x00000000
354
355         .global _DEV17_INTERRUPT_LEVEL_REG
356 _DEV17_INTERRUPT_LEVEL_REG:
357         .word   0x00000000
358
359         .global _DEV18_INTERRUPT_LEVEL_REG
360 _DEV18_INTERRUPT_LEVEL_REG:
361         .word   0x00000000
362
363         ; 128 bytes minus twenty-three registers (four bytes per register)
364         .fill (128 - 23 * 4)
365
366
367         ;.org 0xfffff200
368         ; MorphoSys Decoder Registers
369         .global _MS_DEC_CIRC_BUFF_SEL_REG
370 _MS_DEC_CIRC_BUFF_SEL_REG:
371         .word   0x00000000
372
373         .global _MS_DEC_SKIP_FACTOR_REG
374 _MS_DEC_SKIP_FACTOR_REG:
375         .word   0x00000000
376
377         .global _MS_DEC_CUSTOM_PERM_REG
378 _MS_DEC_CUSTOM_PERM_REG:
379         .word   0x00000000
380
381         .global _MS_DEC_CTXT_BASE_REG
382 _MS_DEC_CTXT_BASE_REG:
383         .word   0x00000000
384
385         .global _MS_DEC_LOOKUP_TBL_REG
386 _MS_DEC_LOOKUP_TBL_REG:
387         .word   0x00000000
388
389         .global _MS_CIRC_BUFF0_I_REG
390 _MS_CIRC_BUFF0_I_REG:
391         .word (__FRAME_BUFFER_END)
392
393         .global _MS_CIRC_BUFF0_P_REG
394 _MS_CIRC_BUFF0_P_REG:
395         .word __FRAME_BUFFER_SIZE
396
397         .global _MS_DATA_BUFF0_B_REG
398 _MS_DATA_BUFF0_B_REG:
399         .word   0x00000000
400
401         .global _MS_DATA_BUFF0_S_REG
402 _MS_DATA_BUFF0_S_REG:
403         .word   0x00000000
404
405         .global _MS_CIRC_BUFF1_I_REG
406 _MS_CIRC_BUFF1_I_REG:
407         .word (__FRAME_BUFFER_END)
408
409         .global _MS_CIRC_BUFF1_P_REG
410 _MS_CIRC_BUFF1_P_REG:
411         .word __FRAME_BUFFER_SIZE
412
413         .global _MS_DATA_BUFF1_B_REG
414 _MS_DATA_BUFF1_B_REG:
415         .word   0x00000000
416
417         .global _MS_DATA_BUFF1_S_REG
418 _MS_DATA_BUFF1_S_REG:
419         .word   0x00000000
420
421         .global _MS_CIRC_BUFF2_I_REG
422 _MS_CIRC_BUFF2_I_REG:
423         .word (__FRAME_BUFFER_END)
424
425         .global _MS_CIRC_BUFF2_P_REG
426 _MS_CIRC_BUFF2_P_REG:
427         .word __FRAME_BUFFER_SIZE
428
429         .global _MS_DATA_BUFF2_B_REG
430 _MS_DATA_BUFF2_B_REG:
431         .word   0x00000000
432
433         .global _MS_DATA_BUFF2_S_REG
434 _MS_DATA_BUFF2_S_REG:
435         .word   0x00000000
436
437         .global _MS_CIRC_BUFF3_I_REG
438 _MS_CIRC_BUFF3_I_REG:
439         .word (__FRAME_BUFFER_END)
440
441         .global _MS_CIRC_BUFF3_P_REG
442 _MS_CIRC_BUFF3_P_REG:
443         .word __FRAME_BUFFER_SIZE
444
445         .global _MS_DATA_BUFF3_B_REG
446 _MS_DATA_BUFF3_B_REG:
447         .word   0x00000000
448
449         .global _MS_DATA_BUFF3_S_REG
450 _MS_DATA_BUFF3_S_REG:
451         .word   0x00000000
452
453         .global _MS_CIRC_BUFF4_I_REG
454 _MS_CIRC_BUFF4_I_REG:
455         .word (__FRAME_BUFFER_END)
456
457         .global _MS_CIRC_BUFF4_P_REG
458 _MS_CIRC_BUFF4_P_REG:
459         .word __FRAME_BUFFER_SIZE
460
461         .global _MS_DATA_BUFF4_B_REG
462 _MS_DATA_BUFF4_B_REG:
463         .word   0x00000000
464
465         .global _MS_DATA_BUFF4_S_REG
466 _MS_DATA_BUFF4_S_REG:
467         .word   0x00000000
468
469         .global _MS_CIRC_BUFF5_I_REG
470 _MS_CIRC_BUFF5_I_REG:
471         .word (__FRAME_BUFFER_END)
472
473         .global _MS_CIRC_BUFF5_P_REG
474 _MS_CIRC_BUFF5_P_REG:
475         .word __FRAME_BUFFER_SIZE
476
477         .global _MS_DATA_BUFF5_B_REG
478 _MS_DATA_BUFF5_B_REG:
479         .word   0x00000000
480
481         .global _MS_DATA_BUFF5_S_REG
482 _MS_DATA_BUFF5_S_REG:
483         .word   0x00000000
484
485         .global _MS_CIRC_BUFF6_I_REG
486 _MS_CIRC_BUFF6_I_REG:
487         .word (__FRAME_BUFFER_END)
488
489         .global _MS_CIRC_BUFF6_P_REG
490 _MS_CIRC_BUFF6_P_REG:
491         .word __FRAME_BUFFER_SIZE
492
493         .global _MS_DATA_BUFF6_B_REG
494 _MS_DATA_BUFF6_B_REG:
495         .word   0x00000000
496
497         .global _MS_DATA_BUFF6_S_REG
498 _MS_DATA_BUFF6_S_REG:
499         .word   0x00000000
500
501         .global _MS_CIRC_BUFF7_I_REG
502 _MS_CIRC_BUFF7_I_REG:
503         .word (__FRAME_BUFFER_END)
504
505         .global _MS_CIRC_BUFF7_P_REG
506 _MS_CIRC_BUFF7_P_REG:
507         .word __FRAME_BUFFER_SIZE
508
509         .global _MS_DATA_BUFF7_B_REG
510 _MS_DATA_BUFF7_B_REG:
511         .word   0x00000000
512
513         .global _MS_DATA_BUFF7_S_REG
514 _MS_DATA_BUFF7_S_REG:
515         .word   0x00000000
516
517         .global _MS_OMEGA_PERM1_REG
518 _MS_OMEGA_PERM1_REG:
519         .word   0x00000000
520
521         .global _MS_WRITE_FB_ADDR_REG
522 _MS_WRITE_FB_ADDR_REG:
523         .word   0x00000000
524
525         .global _MS_OMEGA_PERM2_REG
526 _MS_OMEGA_PERM2_REG:
527         .word   0x00000000
528
529
530         ; 256 bytes minus forty registers (four bytes per register)
531         .fill (256 - 40 * 4)
532
533
534
535         ;.org 0xfffff300
536         ; Debug Registers
537         .global _DEBUG_HALT_REG
538 _DEBUG_HALT_REG:
539         .word   0x00000000
540
541         .global _DEBUG_BREAK_REG
542 _DEBUG_BREAK_REG:
543         .word   0x00000000
544
545         .global _DEBUG_CRITICAL_REG
546 _DEBUG_OWNERSHIP_REG:
547         .word   0x00000000
548
549         .global _DEBUG_KERNEL_ID_REG
550 _DEBUG_KERNEL_ID_REG:
551         .word   0x00000000
552
553         .global _DEBUG_IRQ_STATUS_REG
554 _DEBUG_IRQ_STATUS_REG:
555         .word   0x00000000
556
557         ; There are two reserved registers.
558         .fill (2 * 4)
559
560         .global _DEBUG_SW_SYSREQ_REG
561 _DEBUG_SW_SYSREQ_REG:
562         .word   0x00000000
563
564         ; 128 bytes minus eight registers (four bytes per register)
565         .fill (128 - 8 * 4)
566
567         .global _EXTENDED_GP0_REG
568 _EXTENDED_GP0_REG:
569         .word   0x00000000
570
571         .global _EXTENDED_GP1_REG
572 _EXTENDED_GP1_REG:
573         .word   0x00000000
574
575         .global _EXTENDED_GP2_REG
576 _EXTENDED_GP2_REG:
577         .word   0x00000000
578
579         .global _EXTENDED_GP3_REG
580 _EXTENDED_GP3_REG:
581         .word   0x00000000
582
583         .global _EXTENDED_GP4_REG
584 _EXTENDED_GP4_REG:
585         .word   0x00000000
586
587         .global _EXTENDED_GP5_REG
588 _EXTENDED_GP5_REG:
589         .word   0x00000000
590
591         .global _EXTENDED_GP6_REG
592 _EXTENDED_GP6_REG:
593         .word   0x00000000
594
595         .global _EXTENDED_GP7_REG
596 _EXTENDED_GP7_REG:
597         .word   0x00000000
598
599         .global _MEM_CTRL_EN_NC_MEM_REG
600 _MEM_CTRL_EN_NC_MEM_REG:
601         .word   0x00000000
602
603         .global _MEM_CTRL_BASE0_ADDR_REG
604 _MEM_CTRL_BASE0_ADDR_REG:
605         .word   0x00000000
606
607         .global _MEM_CTRL_MASK0_ADDR_REG
608 _MEM_CTRL_MASK0_ADDR_REG:
609         .word   0x00000000
610
611         .global _MEM_CTRL_BASE1_ADDR_REG
612 _MEM_CTRL_BASE1_ADDR_REG:
613         .word   0x00000000
614
615         .global _MEM_CTRL_MASK1_ADDR_REG
616 _MEM_CTRL_MASK1_ADDR_REG:
617         .word   0x00000000
618
619         .global _MEM_CTRL_BASE2_ADDR_REG
620 _MEM_CTRL_BASE2_ADDR_REG:
621         .word   0x00000000
622
623         .global _MEM_CTRL_MASK2_ADDR_REG
624 _MEM_CTRL_MASK2_ADDR_REG:
625         .word   0x00000000
626
627         .global _MEM_CTRL_BASE3_ADDR_REG
628 _MEM_CTRL_BASE3_ADDR_REG:
629         .word   0x00000000
630
631         .global _MEM_CTRL_MASK3_ADDR_REG
632 _MEM_CTRL_MASK3_ADDR_REG:
633         .word   0x00000000
634
635         ; 128 bytes minus seventeen registers (four bytes per register)
636         .fill (128 - 17 * 4)
637
638
639
640         ; Reserved memory-map space
641         .fill (256 + 256)
642
643
644
645         ;.org 0xfffff600
646         ; Timer Registers
647         .global _TIMER0_VAL_REG
648 _TIMER0_VAL_REG:
649         .word   0x00000000
650
651         .global _TIMER1_VAL_REG
652 _TIMER1_VAL_REG:
653         .word   0x00000000
654
655         .global _TIMER2_VAL_REG
656 _TIMER2_VAL_REG:
657         .word   0x00000000
658
659         .global _TIMER3_VAL_REG
660 _TIMER3_VAL_REG:
661         .word   0x00000000
662
663         ; 256 bytes minus four registers (four bytes per register)
664         .fill (256 - 4 * 4)
665
666
667
668         ;.org 0xfffff700
669         ; Output Line Control Registers
670         .global _OUTPUT0_CTRL
671 _OUTPUT0_CTRL:
672         .word   0x00000000
673
674         .global _OUTPUT1_CTRL
675 _OUTPUT1_CTRL:
676         .word   0x00000000
677
678         .global _OUTPUT2_CTRL
679 _OUTPUT2_CTRL:
680         .word   0x00000000
681
682         .global _OUTPUT3_CTRL
683 _OUTPUT3_CTRL:
684         .word   0x00000000
685
686         .global _OUTPUT4_CTRL
687 _OUTPUT4_CTRL:
688         .word   0x00000000
689
690         .global _OUTPUT5_CTRL
691 _OUTPUT5_CTRL:
692         .word   0x00000000
693
694         .global _OUTPUT6_CTRL
695 _OUTPUT6_CTRL:
696         .word   0x00000000
697
698         ; 128 bytes minus seven registers (four bytes per register)
699         .fill (128 - 7 * 4)
700
701         .global _INPUT0_CTRL
702 _INPUT0_CTRL:
703         .word   0x00000000
704
705         ; 128 bytes minus one register (four bytes per register)
706         .fill (128 - 1 * 4)
707
708
709
710         ;.org 0xfffff800
711         ; IQ Buffer Registers
712         .global _IQ_BUFF_CTRL_REG
713 _IQ_BUFF_CTRL_REG:
714         .word   0x00000000
715
716         .global _IQ_BUFF_STATUS_REG
717 _IQ_BUFF_STATUS_REG:
718         .word   0x00000000
719
720         .global _IQ_BUFF_PARAMETER1_REG
721 _IQ_BUFF_PARAMETER1_REG:
722         .word   0x00000000
723
724         .global _IQ_BUFF_TRANSFER_SIZE1_REG
725 _IQ_BUFF_TRANSFER_SIZE1_REG:
726         .word   0x00000000
727
728         .global _IQ_BUFF_FB_BASE1_REG
729 _IQ_BUFF_FB_BASE1_REG:
730         .word   0x00000000
731
732         .global _IQ_BUFF_FB_SIZE1_REG
733 _IQ_BUFF_FB_SIZE1_REG:
734         .word   0x00000000
735
736         .global _IQ_BUFF_PARAMETER2_REG
737 _IQ_BUFF_PARAMETER2_REG:
738         .word   0x00000000
739
740         .global _IQ_BUFF_TRANSFER_SIZE2_REG
741 _IQ_BUFF_TRANSFER_SIZE2_REG:
742         .word   0x00000000
743
744         .global _IQ_BUFF_FB_BASE2_REG
745 _IQ_BUFF_FB_BASE2_REG:
746         .word   0x00000000
747
748         .global _IQ_BUFF_FB_SIZE2_REG
749 _IQ_BUFF_FB_SIZE2_REG:
750         .word   0x00000000
751
752         ; 256 bytes minus ten registers (four bytes per register)
753         .fill (256 - 10 * 4)
754
755
756
757         ;.org 0xfffff900
758         ; DMA Controller
759         .global _DMA_CTRL_REG
760 _DMA_CTRL_REG:
761         .word   0x00000000
762
763         .global _DMA_STATUS_REG
764 _DMA_STATUS_REG:
765         .word   0x00000000
766
767         .global _DMA_CH0_EADDR_REG
768 _DMA_CH0_EADDR_REG:
769         .word   0x00000000
770
771         .global _DMA_CH0_IADDR_REG
772 _DMA_CH0_IADDR_REG:
773         .word   0x00000000
774
775         .global _DMA_CH0_SIZE_REG
776 _DMA_CH0_SIZE_REG:
777         .word   0x00000000
778
779         .global _DMA_CH1_EADDR_REG
780 _DMA_CH1_EADDR_REG:
781         .word   0x00000000
782
783         .global _DMA_CH1_IADDR_REG
784 _DMA_CH1_IADDR_REG:
785         .word   0x00000000
786
787         .global _DMA_CH1_SIZE_REG
788 _DMA_CH1_SIZE_REG:
789         .word   0x00000000
790
791         .global _DMA_CH2_EADDR_REG
792 _DMA_CH2_EADDR_REG:
793         .word   0x00000000
794
795         .global _DMA_CH2_IADDR_REG
796 _DMA_CH2_IADDR_REG:
797         .word   0x00000000
798
799         .global _DMA_CH2_SIZE_REG
800 _DMA_CH2_SIZE_REG:
801         .word   0x00000000
802
803         .global _DMA_CH3_EADDR_REG
804 _DMA_CH3_EADDR_REG:
805         .word   0x00000000
806
807         .global _DMA_CH3_IADDR_REG
808 _DMA_CH3_IADDR_REG:
809         .word   0x00000000
810
811         .global _DMA_CH3_SIZE_REG
812 _DMA_CH3_SIZE_REG:
813         .word   0x00000000
814
815         ; 256 bytes minus fourteen registers (four bytes per register)
816         .fill (256 - 14 * 4)
817
818
819
820         ;.org 0xfffffa00
821         ; Sequence Generator
822         .global _SEQ_GEN_CTRL_STATUS_REG
823 _SEQ_GEN_CTRL_STATUS_REG:
824         .word   0x00000000
825
826         .global _SEQ_GEN_MASK_REGS
827 _SEQ_GEN_MASK_REGS:
828         .fill (302 * 4)
829
830         .global _SEQ_GEN_SHIFT_REG
831 _SEQ_GEN_SHIFT_REG:
832         .word   0x00000000
833
834         ; 256 bytes minus seven registers (four bytes per register)
835         .fill (256 - 48 * 4)
836
837
838
839         ; Reserved memory-map space
840         .fill (0x1000 - 0xf00)