1 |
148 |
jeremybenn |
/**
|
2 |
|
|
* fido-crt0.S -- Simple startup code
|
3 |
|
|
*
|
4 |
|
|
* Copyright (c) 1995, 1996, 1998 Cygnus Support
|
5 |
|
|
*
|
6 |
|
|
* The authors hereby grant permission to use, copy, modify, distribute,
|
7 |
|
|
* and license this software and its documentation for any purpose, provided
|
8 |
|
|
* that existing copyright notices are retained in all copies and that this
|
9 |
|
|
* notice is included verbatim in any distributions. No written agreement,
|
10 |
|
|
* license, or royalty fee is required for any of the authorized uses.
|
11 |
|
|
* Modifications to this software may be copyrighted by their authors
|
12 |
|
|
* and need not follow the licensing terms described here, provided that
|
13 |
|
|
* the new terms are clearly indicated on the first page of each file where
|
14 |
|
|
* they apply.
|
15 |
|
|
*
|
16 |
|
|
* Copyright 2006 Innovasic Semiconductor, All Rights Reserved.
|
17 |
|
|
* Part of the fido Realtime Support Library
|
18 |
|
|
*
|
19 |
|
|
* Description:
|
20 |
|
|
* This routine performs initializations assuming a Fido
|
21 |
|
|
* development board. In order, the following functions are performed:
|
22 |
|
|
*
|
23 |
|
|
* -- memory offset register initialization
|
24 |
|
|
* -- chip select register initialization for external memory
|
25 |
|
|
* -- SDRAM ctrl register initialization for external memory
|
26 |
|
|
* -- in line test of external SRAM
|
27 |
|
|
* -- sets user SP for MasterContext0 (main)
|
28 |
|
|
* -- copies the bss section to RAM
|
29 |
|
|
* -- transfers control to MasterContext0 (main)
|
30 |
|
|
*
|
31 |
|
|
*/
|
32 |
|
|
|
33 |
|
|
#include "asm.h"
|
34 |
|
|
#include "fido.h"
|
35 |
|
|
|
36 |
|
|
.title "fido-crt0.S for Fido"
|
37 |
|
|
|
38 |
|
|
/*----------------------------------------------------------------------------*/
|
39 |
|
|
//--------- 66 MHz values --------
|
40 |
|
|
// set up CS0 for flash
|
41 |
|
|
#define CS0_CTRL_VAL 0x0000024A
|
42 |
|
|
#define CS0_TIMING_VAL 0x01000000
|
43 |
|
|
|
44 |
|
|
// set up CS1 for SDRAM
|
45 |
|
|
#define CS1_CTRL_VAL 0x0200030A /* selects SDRAM ctrl instead of CS1 */
|
46 |
|
|
#define CS1_TIMING_VAL 0x00000000 /* N/A for SDRAM operation */
|
47 |
|
|
#define SDRAM_TIMING_0_VAL 0x00022522 /* TRP=0x2, TRCD=0x2, TRF=0x5, TWR=0x5 TCL=0x5 */
|
48 |
|
|
#define SDRAM_TIMING_1_VAL 0x00120407 /* INI_PREC=0x1, INI_REFT=0x2, REF_INTV=0x407 */
|
49 |
|
|
#define SDRAM_CONFIG_0_VAL 0x00002113 /* MA2T=0, DDW=x16device=0x2, dsz=64MBit, mbw=16bit, bnksz=8Mbyte */
|
50 |
|
|
#define SDRAM_CONFIG_1_VAL 0x00000000 /* IPREC=0, IREF=0, ISMR=0, PWDN=0, SREF=0 */
|
51 |
|
|
#define SDRAM_EXT_BANK_1_VAL 0x00001020 /* SDRAM memory bank 0 at addr 0x0200_0000 */
|
52 |
|
|
|
53 |
|
|
// set up CS2 for SRAM
|
54 |
|
|
#define CS2_CTRL_VAL 0x03000267
|
55 |
|
|
#define CS2_TIMING_VAL 0x08400000
|
56 |
|
|
/*----------------------------------------------------------------------------*/
|
57 |
|
|
|
58 |
|
|
#define EXT_SRAM_END_ADDR 0x30FFFFC /* 1 MB of ext. SRAM (2-512Kx8 chips) */
|
59 |
|
|
#define PERP_PWRUP_MASK 0x0000 /* turn on all peripherals */
|
60 |
|
|
|
61 |
|
|
/*
|
62 |
|
|
* Define an empty environment.
|
63 |
|
|
*/
|
64 |
|
|
.data 2
|
65 |
|
|
.align 2
|
66 |
|
|
SYM (environ):
|
67 |
|
|
.long 0
|
68 |
|
|
|
69 |
|
|
.align 2
|
70 |
|
|
.text 2
|
71 |
|
|
|
72 |
|
|
/*
|
73 |
|
|
* These symbols are defined in C code, so they need to always be
|
74 |
|
|
* named with SYM because of the difference between object file formats.
|
75 |
|
|
*/
|
76 |
|
|
|
77 |
|
|
/* These are defined in C code. */
|
78 |
|
|
/* .extern SYM (main) */
|
79 |
|
|
.extern SYM (exit)
|
80 |
|
|
.extern SYM (hardware_init_hook)
|
81 |
|
|
.extern SYM (software_init_hook)
|
82 |
|
|
.extern SYM (atexit)
|
83 |
|
|
.extern SYM (__do_global_dtors)
|
84 |
|
|
/*
|
85 |
|
|
* These values are set in the linker script, so they must be
|
86 |
|
|
* explicitly named here without SYM.
|
87 |
|
|
*/
|
88 |
|
|
#ifdef FIDO_rom
|
89 |
|
|
.extern __stack
|
90 |
|
|
#endif
|
91 |
|
|
.extern __bss_start
|
92 |
|
|
.extern _end
|
93 |
|
|
|
94 |
|
|
/*
|
95 |
|
|
* set things up so application will run. This *must* be called _start.
|
96 |
|
|
*/
|
97 |
|
|
.global SYM (_start)
|
98 |
|
|
|
99 |
|
|
SYM (_start):
|
100 |
|
|
|
101 |
|
|
#ifdef FIDO_rom
|
102 |
|
|
/* save initial value of base offset register */
|
103 |
|
|
movec mbb,d7
|
104 |
|
|
|
105 |
|
|
/* Initialize memory offset register to offset value in FIDOmemmap.h */
|
106 |
|
|
movel #FIDO_MEM_OFFSET,d0 /* Load memory offset into REG d0 */
|
107 |
|
|
movec d0,mbb
|
108 |
|
|
|
109 |
|
|
movel #0x011, FIDO_DBG_CTRL /* set the debug control reg */
|
110 |
|
|
|
111 |
|
|
/* At POR the PerpPowerCtrlReg is set to 0x3F0F, all peripherals off
|
112 |
|
|
See PerpPowerCtrlReg definition, this example turns ON everything */
|
113 |
|
|
movel #PERP_PWRUP_MASK,FIDO_CLOCK_MASK_REGISTER
|
114 |
|
|
|
115 |
|
|
/* Set up chip selects for ROM, SRAM, and SDRAM (all external mem.) */
|
116 |
|
|
movel #CS0_CTRL_VAL, FIDO_BIU_CS0_CONTROL /* flash memory CS0 */
|
117 |
|
|
movel #CS0_TIMING_VAL, FIDO_BIU_CS0_TIMING
|
118 |
|
|
|
119 |
|
|
movel #CS2_CTRL_VAL, FIDO_BIU_CS2_CONTROL /* SRAM memory CS2 */
|
120 |
|
|
movel #CS2_TIMING_VAL, FIDO_BIU_CS2_TIMING
|
121 |
|
|
|
122 |
|
|
/* if this is not POR then say so */
|
123 |
|
|
movel FIDO_POR_REG,d6
|
124 |
|
|
|
125 |
|
|
/* test external SRAM -- */
|
126 |
|
|
/* a0 == working pointer */
|
127 |
|
|
/* a1 == pointer to base of memory */
|
128 |
|
|
/* a2 == pointer to end of memory */
|
129 |
|
|
/* d0,d1,d2,d3 working registers */
|
130 |
|
|
|
131 |
|
|
moveal #0x3000000,a1
|
132 |
|
|
moveal #0x30FFFFC,a2
|
133 |
|
|
|
134 |
|
|
movel a1,a0
|
135 |
|
|
/* walking ones */
|
136 |
|
|
movel #1,d0
|
137 |
|
|
|
138 |
|
|
.LWalkOnes:
|
139 |
|
|
movel d0, (a0) /* write value out */
|
140 |
|
|
cmpl (a0), d0 /* read it back */
|
141 |
|
|
bne .LFailOnes
|
142 |
|
|
lsl.l #1, d0 /* move to next value */
|
143 |
|
|
bne .LWalkOnes /* when it goes to zero you're done */
|
144 |
|
|
bra .LValTest
|
145 |
|
|
.LFailOnes:
|
146 |
|
|
movel #0x01, d0
|
147 |
|
|
bra .LMemTestEnd
|
148 |
|
|
|
149 |
|
|
.LValTest:
|
150 |
|
|
/* ffff's */
|
151 |
|
|
/* 5555's */
|
152 |
|
|
/* aaaa's */
|
153 |
|
|
/* 0000's */
|
154 |
|
|
movel a1,a0
|
155 |
|
|
movel #0xFFFFFFFF,d0
|
156 |
|
|
|
157 |
|
|
.LValLoop:
|
158 |
|
|
movel d0,(a0) /* write value out */
|
159 |
|
|
cmpl (a0)+, d0 /* compare and move to next */
|
160 |
|
|
bne .LFailVal
|
161 |
|
|
cmpl a0,a2 /* at end of memory? */
|
162 |
|
|
bge .LValLoop
|
163 |
|
|
movel d0,d0 /* done writing zeros? */
|
164 |
|
|
beq .LAddrTest
|
165 |
|
|
movel a1,a0 /* go back to start with next value */
|
166 |
|
|
subl #0x55555555,d0 /* get next value (f->a->5->0) */
|
167 |
|
|
bra .LValLoop
|
168 |
|
|
.LFailVal:
|
169 |
|
|
movel #0x02, d0
|
170 |
|
|
bra .LMemTestEnd
|
171 |
|
|
|
172 |
|
|
.LAddrTest:
|
173 |
|
|
/* unique values */
|
174 |
|
|
movel a1,a0
|
175 |
|
|
.LWriteLoop:
|
176 |
|
|
movel a0, (a0)+ /* write value out and move one */
|
177 |
|
|
cmpl a0,a2 /* look for end of memory */
|
178 |
|
|
bge .LWriteLoop
|
179 |
|
|
|
180 |
|
|
movel a1,a0
|
181 |
|
|
.LReadLoop:
|
182 |
|
|
cmpl (a0), a0 /* compare value and move on */
|
183 |
|
|
bne .LFailAddr
|
184 |
|
|
addql #4,a0
|
185 |
|
|
cmpl a0,a2 /* look for end of memory */
|
186 |
|
|
bge .LReadLoop
|
187 |
|
|
clrl d0 /* everything passed */
|
188 |
|
|
bra .LMemTestEnd
|
189 |
|
|
|
190 |
|
|
.LFailAddr:
|
191 |
|
|
movel #0x03, d0
|
192 |
|
|
|
193 |
|
|
.LMemTestEnd:
|
194 |
|
|
movel d0,d4 /* mem test result in d4 0 == pass */
|
195 |
|
|
#endif /* ROM */
|
196 |
|
|
|
197 |
|
|
/* See if user supplied their own stack (__stack != 0). If not, then
|
198 |
|
|
* default to using the value of %sp as set by the ROM monitor */
|
199 |
|
|
movel IMM(__stack), a0
|
200 |
|
|
cmpl IMM(0), a0
|
201 |
|
|
jbeq .Lloc1
|
202 |
|
|
movel a0, sp
|
203 |
|
|
.Lloc1:
|
204 |
|
|
/* set up initial stack frame */
|
205 |
|
|
link a6, IMM(-8)
|
206 |
|
|
|
207 |
|
|
#ifdef FIDO_rom
|
208 |
|
|
/*
|
209 |
|
|
* Now set up the SDRAM (waited to let the controller spin up)
|
210 |
|
|
*/
|
211 |
|
|
/* always initialize SDRAM regs, they're cleared by any reset */
|
212 |
|
|
/* SDRAM enbl bit set in CS1 re-directs to SDRAM controller regs */
|
213 |
|
|
|
214 |
|
|
movel #CS1_CTRL_VAL, FIDO_BIU_CS1_CONTROL /* SDRAM memory CS1 */
|
215 |
|
|
movel #SDRAM_TIMING_0_VAL, FIDO_SDRAM_TIMING_0 /* SDRAM TIMING REG0 */
|
216 |
|
|
movel #SDRAM_TIMING_1_VAL, FIDO_SDRAM_TIMING_1 /* SDRAM TIMING REG1 */
|
217 |
|
|
movel #SDRAM_CONFIG_0_VAL, FIDO_SDRAM_CONFIG_0 /* SDRAM CONFIG REG */
|
218 |
|
|
movel #0x0000001c, FIDO_SDRAM_CONFIG_1 /* SDRAM CONFIG REG */
|
219 |
|
|
|
220 |
|
|
.LsdConfigLoop:
|
221 |
|
|
movel FIDO_SDRAM_CONFIG_1,d0
|
222 |
|
|
cmpl #0x00000000,d0
|
223 |
|
|
bne .LsdConfigLoop
|
224 |
|
|
|
225 |
|
|
movel #SDRAM_EXT_BANK_1_VAL, FIDO_SDRAM_EXT_BANK_1 /* BANK 1 REG */
|
226 |
|
|
|
227 |
|
|
/*
|
228 |
|
|
* copy data from ROM to RAM
|
229 |
|
|
*/
|
230 |
|
|
|
231 |
|
|
moval IMM(__start_romdata),a0 /* begin data in ROM */
|
232 |
|
|
moval IMM(_data), a1 /* begin data in RAM */
|
233 |
|
|
moval IMM(_edata),a2 /* end of data in RAM */
|
234 |
|
|
|
235 |
|
|
/* while(a1 < a2) *a1++ = *a0++; */
|
236 |
|
|
.LdataCopyLoop:
|
237 |
|
|
movel (a0)+,(a1)+
|
238 |
|
|
cmpal a1,a2
|
239 |
|
|
bgt .LdataCopyLoop
|
240 |
|
|
#endif /* ROM */
|
241 |
|
|
|
242 |
|
|
#ifdef FIDO_ram
|
243 |
|
|
/* For ROM configs, the linker script ensures that
|
244 |
|
|
_vector_table is placed at the proper place. For RAM
|
245 |
|
|
configs, we have to adjust it ourselves. */
|
246 |
|
|
movel IMM (SYM (_vector_table)), FIDO_CTX0_VBR
|
247 |
|
|
#endif
|
248 |
|
|
|
249 |
|
|
#ifndef FIDO_redboot
|
250 |
|
|
/* Setup interrupt vectors for secondary contexts. */
|
251 |
|
|
movel IMM (SYM (_vector_table1)), FIDO_CTX1_VBR
|
252 |
|
|
movel IMM (SYM (_vector_table2)), FIDO_CTX2_VBR
|
253 |
|
|
movel IMM (SYM (_vector_table3)), FIDO_CTX3_VBR
|
254 |
|
|
movel IMM (SYM (_vector_table4)), FIDO_CTX4_VBR
|
255 |
|
|
#endif
|
256 |
|
|
|
257 |
|
|
/*
|
258 |
|
|
* zero out the bss section.
|
259 |
|
|
*/
|
260 |
|
|
movel IMM(__bss_start), d1
|
261 |
|
|
movel IMM(_end), d0
|
262 |
|
|
cmpl d0, d1
|
263 |
|
|
jbeq .Lloc3
|
264 |
|
|
movl d1, a0
|
265 |
|
|
subl d1, d0
|
266 |
|
|
subql IMM(1), d0
|
267 |
|
|
2:
|
268 |
|
|
clrb (a0)+
|
269 |
|
|
#ifndef __mcf5200__
|
270 |
|
|
dbra d0, 2b
|
271 |
|
|
clrw d0
|
272 |
|
|
subql IMM(1), d0
|
273 |
|
|
jbcc 2b
|
274 |
|
|
#else
|
275 |
|
|
subql IMM(1), d0
|
276 |
|
|
jbpl 2b
|
277 |
|
|
#endif
|
278 |
|
|
|
279 |
|
|
.Lloc3:
|
280 |
|
|
|
281 |
|
|
#ifdef ADD_DTORS
|
282 |
|
|
/* put __do_global_dtors in the atexit list so the destructors get run */
|
283 |
|
|
movel IMM (SYM(__do_global_dtors)),(sp)
|
284 |
|
|
jsr SYM (atexit)
|
285 |
|
|
#endif
|
286 |
|
|
movel IMM (_fini),(sp)
|
287 |
|
|
jsr SYM (atexit)
|
288 |
|
|
|
289 |
|
|
jsr _init
|
290 |
|
|
|
291 |
|
|
/*
|
292 |
|
|
* call the main routine from the application to get it going.
|
293 |
|
|
* main (argc, argv, environ)
|
294 |
|
|
* we pass argv as a pointer to NULL.
|
295 |
|
|
*/
|
296 |
|
|
|
297 |
|
|
pea 0
|
298 |
|
|
pea SYM (environ)
|
299 |
|
|
pea sp@(4)
|
300 |
|
|
pea 0
|
301 |
|
|
jsr SYM (main) /* call to main */
|
302 |
|
|
movel d0, sp@-
|
303 |
|
|
|
304 |
|
|
/*
|
305 |
|
|
* drop down into exit in case the user doesn't. This should drop
|
306 |
|
|
* control back to the ROM monitor, if there is one. This calls the
|
307 |
|
|
* exit() from the C library so the C++ tables get cleaned up right.
|
308 |
|
|
*/
|
309 |
|
|
jsr SYM (exit)
|
310 |
|
|
|
311 |
|
|
#ifndef FIDO_redboot
|
312 |
|
|
/* Define the interrupt vector table. The linker script
|
313 |
|
|
ensures that the table is placed at address zero. */
|
314 |
|
|
.section .vector_table,"a"
|
315 |
|
|
|
316 |
|
|
.global SYM (_vector_table)
|
317 |
|
|
|
318 |
|
|
SYM (_vector_table):
|
319 |
|
|
|
320 |
|
|
dc.l __stack /* 000 Initial Stack */
|
321 |
|
|
dc.l _start /* 001 Context 0 Start */
|
322 |
|
|
dc.l _BusErrorHandler /* 002 Bus Error */
|
323 |
|
|
dc.l _AddressErrorHandler /* 003 Address Error */
|
324 |
|
|
dc.l _IllegalInstructionHandler /* 004 Illegal Instruction */
|
325 |
|
|
dc.l _DivideByZeroHandler /* 005 Divide by Zero */
|
326 |
|
|
dc.l _ChkHandler /* 006 CHK, CHK2 Instructions */
|
327 |
|
|
dc.l _TrapccHandler /* 007 TRAPcc, TRAPV Instructions */
|
328 |
|
|
dc.l _PrivilegeViolationHandler /* 008 Privilege Violation */
|
329 |
|
|
dc.l _TraceHandler /* 009 Trace */
|
330 |
|
|
dc.l _ALineHandler /* 010 A-Line Unimplemented Instr */
|
331 |
|
|
dc.l _FLineHandler /* 011 F-Line Unimplemented Instr */
|
332 |
|
|
dc.l _HwBreakpointHandler /* 012 Hardware Breakpoint */
|
333 |
|
|
dc.l _Reserved0Handler /* 013 Reserved */
|
334 |
|
|
dc.l _FormatErrorHandler /* 014 Format Error */
|
335 |
|
|
dc.l _UnitializedIntHandler /* 015 Unitialized Interrupt */
|
336 |
|
|
dc.l _SoftwareIntHandler /* 016 Software Interrupt */
|
337 |
|
|
dc.l _Unassigned0Handler /* 017 Unassigned */
|
338 |
|
|
dc.l _Unassigned1Handler /* 018 Unassigned */
|
339 |
|
|
dc.l _Unassigned2Handler /* 019 Unassigned */
|
340 |
|
|
dc.l _Unassigned3Handler /* 020 Unassigned */
|
341 |
|
|
dc.l _Unassigned4Handler /* 021 Unassigned */
|
342 |
|
|
dc.l _Unassigned5Handler /* 022 Unassigned */
|
343 |
|
|
dc.l _Unassigned6Handler /* 023 Unassigned */
|
344 |
|
|
dc.l _Int0Handler /* 024 Interrupt 0 */
|
345 |
|
|
dc.l _Int1Handler /* 025 Interrupt 1 */
|
346 |
|
|
dc.l _Int2Handler /* 026 Interrupt 2 */
|
347 |
|
|
dc.l _Int3Handler /* 027 Interrupt 3 */
|
348 |
|
|
dc.l _Int4Handler /* 028 Interrupt 4 */
|
349 |
|
|
dc.l _Int5Handler /* 029 Interrupt 5 */
|
350 |
|
|
dc.l _Int6Handler /* 030 Interrupt 6 */
|
351 |
|
|
dc.l _Int7Handler /* 031 Interrupt 7 */
|
352 |
|
|
dc.l _Trap00Handler /* 032 Trap #00 Instruction */
|
353 |
|
|
dc.l _Trap01Handler /* 033 Trap #01 Instruction */
|
354 |
|
|
dc.l _Trap02Handler /* 034 Trap #02 Instruction */
|
355 |
|
|
dc.l _Trap03Handler /* 035 Trap #03 Instruction */
|
356 |
|
|
dc.l _Trap04Handler /* 036 Trap #04 Instruction */
|
357 |
|
|
dc.l _Trap05Handler /* 037 Trap #05 Instruction */
|
358 |
|
|
dc.l _Trap06Handler /* 038 Trap #06 Instruction */
|
359 |
|
|
dc.l _Trap07Handler /* 039 Trap #07 Instruction */
|
360 |
|
|
dc.l _Trap08Handler /* 040 Trap #08 Instruction */
|
361 |
|
|
dc.l _Trap09Handler /* 041 Trap #09 Instruction */
|
362 |
|
|
dc.l _Trap10Handler /* 042 Trap #10 Instruction */
|
363 |
|
|
dc.l _Trap11Handler /* 043 Trap #11 Instruction */
|
364 |
|
|
dc.l _Trap12Handler /* 044 Trap #12 Instruction */
|
365 |
|
|
dc.l _Trap13Handler /* 045 Trap #13 Instruction */
|
366 |
|
|
dc.l _Trap14Handler /* 046 Trap #14 Instruction */
|
367 |
|
|
dc.l _Trap15Handler /* 047 Trap #15 Instruction */
|
368 |
|
|
dc.l _Reserved048Handler /* 048 Reserved */
|
369 |
|
|
dc.l _Reserved049Handler /* 049 Reserved */
|
370 |
|
|
dc.l _Reserved050Handler /* 050 Reserved */
|
371 |
|
|
dc.l _Reserved051Handler /* 051 Reserved */
|
372 |
|
|
dc.l _Reserved052Handler /* 052 Reserved */
|
373 |
|
|
dc.l _Reserved053Handler /* 053 Reserved */
|
374 |
|
|
dc.l _Reserved054Handler /* 054 Reserved */
|
375 |
|
|
dc.l _Reserved055Handler /* 055 Reserved */
|
376 |
|
|
dc.l _Reserved056Handler /* 056 Reserved */
|
377 |
|
|
dc.l _Reserved057Handler /* 057 Reserved */
|
378 |
|
|
dc.l _Reserved058Handler /* 058 Reserved */
|
379 |
|
|
dc.l _Reserved059Handler /* 059 Reserved */
|
380 |
|
|
dc.l _Reserved060Handler /* 060 Reserved */
|
381 |
|
|
dc.l _Reserved061Handler /* 061 Reserved */
|
382 |
|
|
dc.l _Reserved062Handler /* 062 Reserved */
|
383 |
|
|
dc.l _Reserved063Handler /* 063 Reserved */
|
384 |
|
|
dc.l _ContextOvertimeHandler /* 064 Context Overtime */
|
385 |
|
|
dc.l _MpuErrorHandler /* 065 MPU Error */
|
386 |
|
|
dc.l _SystemTimer0Handler /* 066 System Timer 0 */
|
387 |
|
|
dc.l _SystemTimer1Handler /* 067 System Timer 1 */
|
388 |
|
|
dc.l _SystemTimer2Handler /* 068 System Timer 2 */
|
389 |
|
|
dc.l _SystemTimer3Handler /* 069 System Timer 3 */
|
390 |
|
|
dc.l _SystemTimer4Handler /* 070 System Timer 4 */
|
391 |
|
|
dc.l _WatchdogTimerHandler /* 071 Watchdog Timer */
|
392 |
|
|
dc.l _TimerCounter0Handler /* 072 Timer Counter 1 */
|
393 |
|
|
dc.l _TimerCounter1Handler /* 073 Timer Counter 2 */
|
394 |
|
|
dc.l _DMA0Handler /* 074 DMA Channel 0 */
|
395 |
|
|
dc.l _DMA1Handler /* 075 DMA Channel 1 */
|
396 |
|
|
dc.l _AtoDConversionHandler /* 076 A/D Conversion Complete */
|
397 |
|
|
dc.l _Pdma0Handler /* 077 PDMA Ch 0 Interrupt */
|
398 |
|
|
dc.l _Pdma1Handler /* 078 PDMA Ch 1 Interrupt */
|
399 |
|
|
dc.l _Pdma2Handler /* 079 PDMA Ch 2 Interrupt */
|
400 |
|
|
dc.l _Pdma3Handler /* 080 PDMA Ch 3 Interrupt */
|
401 |
|
|
dc.l _Reserved081Handler /* 081 Reserved */
|
402 |
|
|
dc.l _Reserved082Handler /* 082 Reserved */
|
403 |
|
|
dc.l _Reserved083Handler /* 083 Reserved */
|
404 |
|
|
dc.l _Reserved084Handler /* 084 Reserved */
|
405 |
|
|
dc.l _Reserved085Handler /* 085 Reserved */
|
406 |
|
|
dc.l _Reserved086Handler /* 086 Reserved */
|
407 |
|
|
dc.l _Reserved087Handler /* 087 Reserved */
|
408 |
|
|
dc.l _Reserved088Handler /* 088 Reserved */
|
409 |
|
|
dc.l _Reserved089Handler /* 089 Reserved */
|
410 |
|
|
dc.l _Reserved090Handler /* 090 Reserved */
|
411 |
|
|
dc.l _Reserved091Handler /* 091 Reserved */
|
412 |
|
|
dc.l _Reserved092Handler /* 092 Reserved */
|
413 |
|
|
dc.l _Reserved093Handler /* 093 Reserved */
|
414 |
|
|
dc.l _Reserved094Handler /* 094 Reserved */
|
415 |
|
|
dc.l _Reserved095Handler /* 095 Reserved */
|
416 |
|
|
dc.l _Trapx00Handler /* 096 Trapx 00 Instruction */
|
417 |
|
|
dc.l _Trapx01Handler /* 097 Trapx 01 Instruction */
|
418 |
|
|
dc.l _Trapx02Handler /* 098 Trapx 02 Instruction */
|
419 |
|
|
dc.l _Trapx03Handler /* 099 Trapx 03 Instruction */
|
420 |
|
|
dc.l _Trapx04Handler /* 100 Trapx 04 Instruction */
|
421 |
|
|
dc.l _Trapx05Handler /* 101 Trapx 05 Instruction */
|
422 |
|
|
dc.l _Trapx06Handler /* 102 Trapx 06 Instruction */
|
423 |
|
|
dc.l _Trapx07Handler /* 103 Trapx 07 Instruction */
|
424 |
|
|
dc.l _Trapx08Handler /* 104 Trapx 08 Instruction */
|
425 |
|
|
dc.l _Trapx09Handler /* 105 Trapx 09 Instruction */
|
426 |
|
|
dc.l _Trapx10Handler /* 106 Trapx 10 Instruction */
|
427 |
|
|
dc.l _Trapx11Handler /* 107 Trapx 11 Instruction */
|
428 |
|
|
dc.l _Trapx12Handler /* 108 Trapx 12 Instruction */
|
429 |
|
|
dc.l _Trapx13Handler /* 109 Trapx 13 Instruction */
|
430 |
|
|
dc.l _Trapx14Handler /* 110 Trapx 14 Instruction */
|
431 |
|
|
dc.l _Trapx15Handler /* 111 Trapx 15 Instruction */
|
432 |
|
|
dc.l _DummyHandler /* 112 */
|
433 |
|
|
dc.l _DummyHandler /* 113 */
|
434 |
|
|
dc.l _DummyHandler /* 114 */
|
435 |
|
|
dc.l _DummyHandler /* 115 */
|
436 |
|
|
dc.l _DummyHandler /* 116 */
|
437 |
|
|
dc.l _DummyHandler /* 117 */
|
438 |
|
|
dc.l _DummyHandler /* 118 */
|
439 |
|
|
dc.l _DummyHandler /* 119 */
|
440 |
|
|
dc.l _DummyHandler /* 120 */
|
441 |
|
|
dc.l _DummyHandler /* 121 */
|
442 |
|
|
dc.l _DummyHandler /* 122 */
|
443 |
|
|
dc.l _DummyHandler /* 123 */
|
444 |
|
|
dc.l _DummyHandler /* 124 */
|
445 |
|
|
dc.l _DummyHandler /* 125 */
|
446 |
|
|
dc.l _DummyHandler /* 126 */
|
447 |
|
|
dc.l _DummyHandler /* 127 */
|
448 |
|
|
dc.l _DummyHandler /* 128 */
|
449 |
|
|
dc.l _DummyHandler /* 129 */
|
450 |
|
|
dc.l _DummyHandler /* 130 */
|
451 |
|
|
dc.l _DummyHandler /* 131 */
|
452 |
|
|
dc.l _DummyHandler /* 132 */
|
453 |
|
|
dc.l _DummyHandler /* 133 */
|
454 |
|
|
dc.l _DummyHandler /* 134 */
|
455 |
|
|
dc.l _DummyHandler /* 135 */
|
456 |
|
|
dc.l _DummyHandler /* 136 */
|
457 |
|
|
dc.l _DummyHandler /* 137 */
|
458 |
|
|
dc.l _DummyHandler /* 138 */
|
459 |
|
|
dc.l _DummyHandler /* 139 */
|
460 |
|
|
dc.l _DummyHandler /* 140 */
|
461 |
|
|
dc.l _DummyHandler /* 141 */
|
462 |
|
|
dc.l _DummyHandler /* 142 */
|
463 |
|
|
dc.l _DummyHandler /* 143 */
|
464 |
|
|
dc.l _DummyHandler /* 144 */
|
465 |
|
|
dc.l _DummyHandler /* 145 */
|
466 |
|
|
dc.l _DummyHandler /* 146 */
|
467 |
|
|
dc.l _DummyHandler /* 147 */
|
468 |
|
|
dc.l _DummyHandler /* 148 */
|
469 |
|
|
dc.l _DummyHandler /* 149 */
|
470 |
|
|
dc.l _DummyHandler /* 150 */
|
471 |
|
|
dc.l _DummyHandler /* 151 */
|
472 |
|
|
dc.l _DummyHandler /* 152 */
|
473 |
|
|
dc.l _DummyHandler /* 153 */
|
474 |
|
|
dc.l _DummyHandler /* 154 */
|
475 |
|
|
dc.l _DummyHandler /* 155 */
|
476 |
|
|
dc.l _DummyHandler /* 156 */
|
477 |
|
|
dc.l _DummyHandler /* 157 */
|
478 |
|
|
dc.l _DummyHandler /* 158 */
|
479 |
|
|
dc.l _DummyHandler /* 159 */
|
480 |
|
|
dc.l _DummyHandler /* 160 */
|
481 |
|
|
dc.l _DummyHandler /* 161 */
|
482 |
|
|
dc.l _DummyHandler /* 162 */
|
483 |
|
|
dc.l _DummyHandler /* 163 */
|
484 |
|
|
dc.l _DummyHandler /* 164 */
|
485 |
|
|
dc.l _DummyHandler /* 165 */
|
486 |
|
|
dc.l _DummyHandler /* 166 */
|
487 |
|
|
dc.l _DummyHandler /* 167 */
|
488 |
|
|
dc.l _DummyHandler /* 168 */
|
489 |
|
|
dc.l _DummyHandler /* 169 */
|
490 |
|
|
dc.l _DummyHandler /* 170 */
|
491 |
|
|
dc.l _DummyHandler /* 171 */
|
492 |
|
|
dc.l _DummyHandler /* 172 */
|
493 |
|
|
dc.l _DummyHandler /* 173 */
|
494 |
|
|
dc.l _DummyHandler /* 174 */
|
495 |
|
|
dc.l _DummyHandler /* 175 */
|
496 |
|
|
dc.l _DummyHandler /* 176 */
|
497 |
|
|
dc.l _DummyHandler /* 177 */
|
498 |
|
|
dc.l _DummyHandler /* 178 */
|
499 |
|
|
dc.l _DummyHandler /* 179 */
|
500 |
|
|
dc.l _DummyHandler /* 180 */
|
501 |
|
|
dc.l _DummyHandler /* 181 */
|
502 |
|
|
dc.l _DummyHandler /* 182 */
|
503 |
|
|
dc.l _DummyHandler /* 183 */
|
504 |
|
|
dc.l _DummyHandler /* 184 */
|
505 |
|
|
dc.l _DummyHandler /* 185 */
|
506 |
|
|
dc.l _DummyHandler /* 186 */
|
507 |
|
|
dc.l _DummyHandler /* 187 */
|
508 |
|
|
dc.l _DummyHandler /* 188 */
|
509 |
|
|
dc.l _DummyHandler /* 189 */
|
510 |
|
|
dc.l _DummyHandler /* 190 */
|
511 |
|
|
dc.l _DummyHandler /* 191 */
|
512 |
|
|
dc.l _DummyHandler /* 192 */
|
513 |
|
|
dc.l _DummyHandler /* 193 */
|
514 |
|
|
dc.l _DummyHandler /* 194 */
|
515 |
|
|
dc.l _DummyHandler /* 195 */
|
516 |
|
|
dc.l _DummyHandler /* 196 */
|
517 |
|
|
dc.l _DummyHandler /* 197 */
|
518 |
|
|
dc.l _DummyHandler /* 198 */
|
519 |
|
|
dc.l _DummyHandler /* 199 */
|
520 |
|
|
dc.l _DummyHandler /* 200 */
|
521 |
|
|
dc.l _DummyHandler /* 201 */
|
522 |
|
|
dc.l _DummyHandler /* 202 */
|
523 |
|
|
dc.l _DummyHandler /* 203 */
|
524 |
|
|
dc.l _DummyHandler /* 204 */
|
525 |
|
|
dc.l _DummyHandler /* 205 */
|
526 |
|
|
dc.l _DummyHandler /* 206 */
|
527 |
|
|
dc.l _DummyHandler /* 207 */
|
528 |
|
|
dc.l _DummyHandler /* 208 */
|
529 |
|
|
dc.l _DummyHandler /* 209 */
|
530 |
|
|
dc.l _DummyHandler /* 210 */
|
531 |
|
|
dc.l _DummyHandler /* 211 */
|
532 |
|
|
dc.l _DummyHandler /* 212 */
|
533 |
|
|
dc.l _DummyHandler /* 213 */
|
534 |
|
|
dc.l _DummyHandler /* 214 */
|
535 |
|
|
dc.l _DummyHandler /* 215 */
|
536 |
|
|
dc.l _DummyHandler /* 216 */
|
537 |
|
|
dc.l _DummyHandler /* 217 */
|
538 |
|
|
dc.l _DummyHandler /* 218 */
|
539 |
|
|
dc.l _DummyHandler /* 219 */
|
540 |
|
|
dc.l _DummyHandler /* 220 */
|
541 |
|
|
dc.l _DummyHandler /* 221 */
|
542 |
|
|
dc.l _DummyHandler /* 222 */
|
543 |
|
|
dc.l _DummyHandler /* 223 */
|
544 |
|
|
dc.l _DummyHandler /* 224 */
|
545 |
|
|
dc.l _DummyHandler /* 225 */
|
546 |
|
|
dc.l _DummyHandler /* 226 */
|
547 |
|
|
dc.l _DummyHandler /* 227 */
|
548 |
|
|
dc.l _DummyHandler /* 228 */
|
549 |
|
|
dc.l _DummyHandler /* 229 */
|
550 |
|
|
dc.l _DummyHandler /* 230 */
|
551 |
|
|
dc.l _DummyHandler /* 231 */
|
552 |
|
|
dc.l _DummyHandler /* 232 */
|
553 |
|
|
dc.l _DummyHandler /* 233 */
|
554 |
|
|
dc.l _DummyHandler /* 234 */
|
555 |
|
|
dc.l _DummyHandler /* 235 */
|
556 |
|
|
dc.l _DummyHandler /* 236 */
|
557 |
|
|
dc.l _DummyHandler /* 237 */
|
558 |
|
|
dc.l _DummyHandler /* 238 */
|
559 |
|
|
dc.l _DummyHandler /* 239 */
|
560 |
|
|
dc.l _DummyHandler /* 240 */
|
561 |
|
|
dc.l _DummyHandler /* 241 */
|
562 |
|
|
dc.l _DummyHandler /* 242 */
|
563 |
|
|
dc.l _DummyHandler /* 243 */
|
564 |
|
|
dc.l _DummyHandler /* 244 */
|
565 |
|
|
dc.l _DummyHandler /* 245 */
|
566 |
|
|
dc.l _DummyHandler /* 246 */
|
567 |
|
|
dc.l _DummyHandler /* 247 */
|
568 |
|
|
dc.l _DummyHandler /* 248 */
|
569 |
|
|
dc.l _DummyHandler /* 249 */
|
570 |
|
|
dc.l _DummyHandler /* 250 */
|
571 |
|
|
dc.l _DummyHandler /* 251 */
|
572 |
|
|
dc.l _DummyHandler /* 252 */
|
573 |
|
|
dc.l _DummyHandler /* 253 */
|
574 |
|
|
dc.l _DummyHandler /* 254 */
|
575 |
|
|
dc.l _DummyHandler /* 255 */
|
576 |
|
|
|
577 |
|
|
/*
|
578 |
|
|
* Define weak symbols for four alternate interrupt vectors.
|
579 |
|
|
* These will be used as the interrupt vectors for the four
|
580 |
|
|
* secondary contexts.
|
581 |
|
|
*/
|
582 |
|
|
.section .data
|
583 |
|
|
|
584 |
|
|
.global SYM (_vector_table1)
|
585 |
|
|
.weak SYM (_vector_table1)
|
586 |
|
|
.set SYM (_vector_table1), SYM (_vector_table)
|
587 |
|
|
|
588 |
|
|
.global SYM (_vector_table2)
|
589 |
|
|
.weak SYM (_vector_table2)
|
590 |
|
|
.set SYM (_vector_table2), SYM (_vector_table)
|
591 |
|
|
|
592 |
|
|
.global SYM (_vector_table3)
|
593 |
|
|
.weak SYM (_vector_table3)
|
594 |
|
|
.set SYM (_vector_table3), SYM (_vector_table)
|
595 |
|
|
|
596 |
|
|
.global SYM (_vector_table4)
|
597 |
|
|
.weak SYM (_vector_table4)
|
598 |
|
|
.set SYM (_vector_table4), SYM (_vector_table)
|
599 |
|
|
|
600 |
|
|
#endif
|