source: trunk/libs/newlib/src/libgloss/mt/startup-ms2.S @ 621

Last change on this file since 621 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 16.9 KB
Line 
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)
Note: See TracBrowser for help on using the repository browser.