[444] | 1 | /** |
---|
| 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 |
---|