]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M4F_Infineon_XMC4000_GCC_Dave/Startup/startup_XMC4400.s
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / CORTEX_M4F_Infineon_XMC4000_GCC_Dave / Startup / startup_XMC4400.s
1 /*****************************************************************************/
2 /* Startup_XMC4400.s: Startup file for XMC4400 device series                 */
3 /*****************************************************************************/
4
5 /* ********************* Version History *********************************** */
6 /* ***************************************************************************
7 V0.1 , Aug, 13, 2012 ES:  initial version
8 V0.2 , Oct, 12, 2012 PKB: C++ support
9 V0.3 , Jan, 25, 2013 PKB: Prefetch bug workaround for STEP_AA
10 **************************************************************************** */
11 /**
12 * @file     Startup_XMC4400.s
13 *           XMC4000 Device Series
14 * @version  V0.3
15 * @date     Jan 2013
16 *
17 Copyright (C) 2013 Infineon Technologies AG. All rights reserved.
18 *
19 *
20 * @par
21 * Infineon Technologies AG (Infineon) is supplying this software for use with 
22 * Infineon's microcontrollers.  This file can be freely distributed
23 * within development tools that are supporting such microcontrollers.
24 *
25 * @par
26 * THIS SOFTWARE IS PROVIDED AS IS.  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
27 * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
28 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
29 * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
30 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
31 *
32 ******************************************************************************/
33 #include <uc_id.inc>
34
35 /* ===========START : MACRO DEFINITION MACRO DEFINITION ================== */
36 /*
37  * STEP_AB and below have the prefetch bug. A veneer defined below will first
38  * be executed which in turn branches to the final exception handler.
39  * 
40  * In addition to defining the veneers, the vector table must for these buggy
41  * devices contain the veneers. 
42  */
43  
44 /* A macro to setup a vector table entry based on STEP ID */ 
45 .macro Entry Handler
46  #if (UC_STEP > STEP_AA)
47    .long \Handler
48  #else
49    .long \Handler\()_Veneer
50  #endif
51 .endm
52
53 /* A macro to ease definition of the various handlers based on STEP ID */
54 #if (UC_STEP == STEP_AA)
55  /* First define the final exception handler */
56  .macro Insert_ExceptionHandler Handler_Func 
57   .weak \Handler_Func
58   .type \Handler_Func, %function
59   \Handler_Func:
60   B .
61   .size \Handler_Func, . - \Handler_Func
62
63   /* And then define a veneer that will branch to the final excp handler */
64   .weak \Handler_Func\()_Veneer
65   .type \Handler_Func\()_Veneer, %function
66   \Handler_Func\()_Veneer:
67   LDR     R0, =\Handler_Func
68   PUSH    {LR}
69   BLX     R0
70   POP     {PC}
71   .size \Handler_Func\()_Veneer, . - \Handler_Func\()_Veneer
72  .endm
73 #else
74  /* No prefetch bug, hence define only the final exception handler */
75  .macro Insert_ExceptionHandler Handler_Func 
76   .weak \Handler_Func
77   .type \Handler_Func, %function
78   \Handler_Func:
79   B .
80   .size \Handler_Func, . - \Handler_Func
81  .endm
82 #endif 
83 /* =============END : MACRO DEFINITION MACRO DEFINITION ================== */
84 /* ================== START OF VECTOR TABLE DEFINITION ====================== */
85 /* Vector Table - This gets programed into VTOR register by onchip BootROM */
86     .syntax unified
87
88     .section ".Xmc4400.reset"
89     .globl  __Xmc4400_interrupt_vector_cortex_m
90     .type   __Xmc4400_interrupt_vector_cortex_m, %object
91
92 __Xmc4400_interrupt_vector_cortex_m:
93     .long   __Xmc4400_stack             /* Top of Stack                 */
94     .long   __Xmc4400_reset_cortex_m    /* Reset Handler                */
95
96     Entry   NMI_Handler                 /* NMI Handler                  */
97     Entry   HardFault_Handler           /* Hard Fault Handler           */
98     Entry   MemManage_Handler           /* MPU Fault Handler            */
99     Entry   BusFault_Handler            /* Bus Fault Handler            */
100     Entry   UsageFault_Handler          /* Usage Fault Handler          */
101     .long   0                           /* Reserved                     */
102     .long   0                           /* Reserved                     */
103     .long   0                           /* Reserved                     */
104     .long   0                           /* Reserved                     */
105     Entry   SVC_Handler                 /* SVCall Handler               */
106     Entry   DebugMon_Handler            /* Debug Monitor Handler        */
107     .long   0                           /* Reserved                     */
108     Entry   PendSV_Handler              /* PendSV Handler               */
109     Entry   SysTick_Handler             /* SysTick Handler              */
110
111     /* Interrupt Handlers for Service Requests (SR) from XMC4400 Peripherals */
112     Entry   SCU_0_IRQHandler            /* Handler name for SR SCU_0     */
113     Entry   ERU0_0_IRQHandler           /* Handler name for SR ERU0_0    */
114     Entry   ERU0_1_IRQHandler           /* Handler name for SR ERU0_1    */
115     Entry   ERU0_2_IRQHandler           /* Handler name for SR ERU0_2    */
116     Entry   ERU0_3_IRQHandler           /* Handler name for SR ERU0_3    */ 
117     Entry   ERU1_0_IRQHandler           /* Handler name for SR ERU1_0    */
118     Entry   ERU1_1_IRQHandler           /* Handler name for SR ERU1_1    */
119     Entry   ERU1_2_IRQHandler           /* Handler name for SR ERU1_2    */
120     Entry   ERU1_3_IRQHandler           /* Handler name for SR ERU1_3    */
121     .long   0                           /* Not Available                 */
122     .long   0                           /* Not Available                 */
123     .long   0                           /* Not Available                 */
124     Entry   PMU0_0_IRQHandler           /* Handler name for SR PMU0_0    */
125     .long   0                           /* Not Available                 */
126     Entry   VADC0_C0_0_IRQHandler       /* Handler name for SR VADC0_C0_0  */
127     Entry   VADC0_C0_1_IRQHandler       /* Handler name for SR VADC0_C0_1  */
128     Entry   VADC0_C0_2_IRQHandler       /* Handler name for SR VADC0_C0_1  */
129     Entry   VADC0_C0_3_IRQHandler       /* Handler name for SR VADC0_C0_3  */
130     Entry   VADC0_G0_0_IRQHandler       /* Handler name for SR VADC0_G0_0  */
131     Entry   VADC0_G0_1_IRQHandler       /* Handler name for SR VADC0_G0_1  */
132     Entry   VADC0_G0_2_IRQHandler       /* Handler name for SR VADC0_G0_2  */
133     Entry   VADC0_G0_3_IRQHandler       /* Handler name for SR VADC0_G0_3  */
134     Entry   VADC0_G1_0_IRQHandler       /* Handler name for SR VADC0_G1_0  */
135     Entry   VADC0_G1_1_IRQHandler       /* Handler name for SR VADC0_G1_1  */
136     Entry   VADC0_G1_2_IRQHandler       /* Handler name for SR VADC0_G1_2  */
137     Entry   VADC0_G1_3_IRQHandler       /* Handler name for SR VADC0_G1_3  */
138     Entry   VADC0_G2_0_IRQHandler       /* Handler name for SR VADC0_G2_0  */
139     Entry   VADC0_G2_1_IRQHandler       /* Handler name for SR VADC0_G2_1  */
140     Entry   VADC0_G2_2_IRQHandler       /* Handler name for SR VADC0_G2_2  */
141     Entry   VADC0_G2_3_IRQHandler       /* Handler name for SR VADC0_G2_3  */
142     Entry   VADC0_G3_0_IRQHandler       /* Handler name for SR VADC0_G3_0  */
143     Entry   VADC0_G3_1_IRQHandler       /* Handler name for SR VADC0_G3_1  */
144     Entry   VADC0_G3_2_IRQHandler       /* Handler name for SR VADC0_G3_2  */
145     Entry   VADC0_G3_3_IRQHandler       /* Handler name for SR VADC0_G3_3  */
146     Entry   DSD0_0_IRQHandler           /* Handler name for SR DSD_SRM_0 */
147     Entry   DSD0_1_IRQHandler           /* Handler name for SR DSD_SRM_1 */
148     Entry   DSD0_2_IRQHandler           /* Handler name for SR DSD_SRM_2 */
149     Entry   DSD0_3_IRQHandler           /* Handler name for SR DSD_SRM_3 */
150     Entry   DSD0_4_IRQHandler           /* Handler name for SR DSD_SRA_0 */
151     Entry   DSD0_5_IRQHandler           /* Handler name for SR DSD_SRA_1 */
152     Entry   DSD0_6_IRQHandler           /* Handler name for SR DSD_SRA_2 */
153     Entry   DSD0_7_IRQHandler           /* Handler name for SR DSD_SRA_3 */
154     Entry   DAC0_0_IRQHandler           /* Handler name for SR DAC0_0    */
155     Entry   DAC0_1_IRQHandler           /* Handler name for SR DAC0_1    */
156     Entry   CCU40_0_IRQHandler          /* Handler name for SR CCU40_0   */
157     Entry   CCU40_1_IRQHandler          /* Handler name for SR CCU40_1   */
158     Entry   CCU40_2_IRQHandler          /* Handler name for SR CCU40_2   */
159     Entry   CCU40_3_IRQHandler          /* Handler name for SR CCU40_3   */
160     Entry   CCU41_0_IRQHandler          /* Handler name for SR CCU41_0   */
161     Entry   CCU41_1_IRQHandler          /* Handler name for SR CCU41_1   */
162     Entry   CCU41_2_IRQHandler          /* Handler name for SR CCU41_2   */
163     Entry   CCU41_3_IRQHandler          /* Handler name for SR CCU41_3   */
164     Entry   CCU42_0_IRQHandler          /* Handler name for SR CCU42_0   */
165     Entry   CCU42_1_IRQHandler          /* Handler name for SR CCU42_1   */
166     Entry   CCU42_2_IRQHandler          /* Handler name for SR CCU42_2   */
167     Entry   CCU42_3_IRQHandler          /* Handler name for SR CCU42_3   */
168     Entry   CCU43_0_IRQHandler          /* Handler name for SR CCU43_0   */
169     Entry   CCU43_1_IRQHandler          /* Handler name for SR CCU43_1   */
170     Entry   CCU43_2_IRQHandler          /* Handler name for SR CCU43_2   */
171     Entry   CCU43_3_IRQHandler          /* Handler name for SR CCU43_3   */
172     Entry   CCU80_0_IRQHandler          /* Handler name for SR CCU80_0   */
173     Entry   CCU80_1_IRQHandler          /* Handler name for SR CCU80_1   */
174     Entry   CCU80_2_IRQHandler          /* Handler name for SR CCU80_2   */
175     Entry   CCU80_3_IRQHandler          /* Handler name for SR CCU80_3   */
176     Entry   CCU81_0_IRQHandler          /* Handler name for SR CCU81_0   */
177     Entry   CCU81_1_IRQHandler          /* Handler name for SR CCU81_1   */
178     Entry   CCU81_2_IRQHandler          /* Handler name for SR CCU81_2   */
179     Entry   CCU81_3_IRQHandler          /* Handler name for SR CCU81_3   */
180     Entry   POSIF0_0_IRQHandler         /* Handler name for SR POSIF0_0  */
181     Entry   POSIF0_1_IRQHandler         /* Handler name for SR POSIF0_1  */
182     Entry   POSIF1_0_IRQHandler         /* Handler name for SR POSIF1_0  */
183     Entry   POSIF1_1_IRQHandler         /* Handler name for SR POSIF1_1  */
184     Entry   HRPWM_0_IRQHandler          /* Handler name for SR HRPWM_0   */
185     Entry   HRPWM_1_IRQHandler          /* Handler name for SR HRPWM_1   */
186     Entry   HRPWM_2_IRQHandler          /* Handler name for SR HRPWM_2   */
187     Entry   HRPWM_3_IRQHandler          /* Handler name for SR HRPWM_3   */
188     Entry   CAN0_0_IRQHandler           /* Handler name for SR CAN0_0    */
189     Entry   CAN0_1_IRQHandler           /* Handler name for SR CAN0_1    */
190     Entry   CAN0_2_IRQHandler           /* Handler name for SR CAN0_2    */
191     Entry   CAN0_3_IRQHandler           /* Handler name for SR CAN0_3    */
192     Entry   CAN0_4_IRQHandler           /* Handler name for SR CAN0_4    */
193     Entry   CAN0_5_IRQHandler           /* Handler name for SR CAN0_5    */
194     Entry   CAN0_6_IRQHandler           /* Handler name for SR CAN0_6    */
195     Entry   CAN0_7_IRQHandler           /* Handler name for SR CAN0_7    */
196     Entry   USIC0_0_IRQHandler          /* Handler name for SR USIC0_0   */
197     Entry   USIC0_1_IRQHandler          /* Handler name for SR USIC0_1   */
198     Entry   USIC0_2_IRQHandler          /* Handler name for SR USIC0_2   */
199     Entry   USIC0_3_IRQHandler          /* Handler name for SR USIC0_3   */
200     Entry   USIC0_4_IRQHandler          /* Handler name for SR USIC0_4   */
201     Entry   USIC0_5_IRQHandler          /* Handler name for SR USIC0_5   */
202     Entry   USIC1_0_IRQHandler          /* Handler name for SR USIC1_0   */
203     Entry   USIC1_1_IRQHandler          /* Handler name for SR USIC1_1   */
204     Entry   USIC1_2_IRQHandler          /* Handler name for SR USIC1_2   */
205     Entry   USIC1_3_IRQHandler          /* Handler name for SR USIC1_3   */
206     Entry   USIC1_4_IRQHandler          /* Handler name for SR USIC1_4   */
207     Entry   USIC1_5_IRQHandler          /* Handler name for SR USIC1_5   */
208     .long   0                           /* Not Available                 */
209     .long   0                           /* Not Available                 */
210     .long   0                           /* Not Available                 */
211     .long   0                           /* Not Available                 */
212     .long   0                           /* Not Available                 */
213     .long   0                           /* Not Available                 */
214     Entry   LEDTS0_0_IRQHandler         /* Handler name for SR LEDTS0_0  */
215     .long   0                           /* Not Available                 */
216     Entry   FCE0_0_IRQHandler           /* Handler name for SR FCE0_0    */
217     Entry   GPDMA0_0_IRQHandler         /* Handler name for SR GPDMA0_0  */
218     .long   0                           /* Not Available                 */
219     Entry   USB0_0_IRQHandler           /* Handler name for SR USB0_0    */
220     Entry   ETH0_0_IRQHandler           /* Handler name for SR ETH0_0    */
221     .long   0                           /* Not Available                 */
222     .long   0                           /* Not Available                 */
223     .long   0                           /* Not Available                 */
224
225     .size  __Xmc4400_interrupt_vector_cortex_m, . - __Xmc4400_interrupt_vector_cortex_m
226 /* ================== END OF VECTOR TABLE DEFINITION ======================= */
227
228 /* ================== START OF VECTOR ROUTINES ============================= */
229     .thumb
230 /* ======================================================================== */
231 /* Reset Handler */
232
233     .thumb_func
234     .globl  __Xmc4400_reset_cortex_m
235     .type   __Xmc4400_reset_cortex_m, %function
236 __Xmc4400_reset_cortex_m:
237     .fnstart
238
239     /* C routines are likely to be called. Setup the stack now */
240     /* This is already setup by BootROM,hence this step is optional */ 
241     LDR SP,=__Xmc4400_stack
242
243     /* Clock tree, External memory setup etc may be done here */    
244     LDR     R0, =SystemInit
245     BLX     R0
246
247 /* 
248    SystemInit_DAVE3() is provided by DAVE3 code generation engine. It is  
249    weakly defined here though for a potential override.
250 */
251     LDR     R0, =SystemInit_DAVE3       
252     BLX     R0
253
254     B       __Xmc4400_Program_Loader 
255     
256     .pool
257     .cantunwind
258     .fnend
259     .size   __Xmc4400_reset_cortex_m,.-__Xmc4400_reset_cortex_m
260 /* ======================================================================== */
261 /* __Xmc4400_reset must yield control to __Xmc4400_Program_Loader before control
262    to C land is given */
263    .section .Xmc4400.postreset,"x",%progbits
264    __Xmc4400_Program_Loader:
265    .fnstart
266    /* Memories are accessible now*/
267    
268    /* DATA COPY */
269    /* R0 = Start address, R1 = Destination address, R2 = Size */
270    LDR R0, =eROData
271    LDR R1, =__Xmc4400_sData
272    LDR R2, =__Xmc4400_Data_Size
273
274    /* Is there anything to be copied? */
275    CMP R2,#0
276    BEQ SKIPCOPY
277    
278    /* For bytecount less than 4, at least 1 word must be copied */
279    CMP R2,#4
280    BCS STARTCOPY
281    
282    /* Byte count < 4 ; so bump it up */
283    MOV R2,#4
284
285 STARTCOPY:
286    /* 
287       R2 contains byte count. Change it to word count. It is ensured in the 
288       linker script that the length is always word aligned.
289    */
290    LSR R2,R2,#2 /* Divide by 4 to obtain word count */
291
292    /* The proverbial loop from the schooldays */
293 COPYLOOP:
294    LDR R3,[R0]
295    STR R3,[R1]
296    SUBS R2,#1
297    BEQ SKIPCOPY
298    ADD R0,#4
299    ADD R1,#4
300    B COPYLOOP
301     
302 SKIPCOPY:
303    /* BSS CLEAR */
304    LDR R0, =__Xmc4400_sBSS     /* Start of BSS */
305    LDR R1, =__Xmc4400_BSS_Size /* BSS size in bytes */
306
307    /* Find out if there are items assigned to BSS */   
308    CMP R1,#0 
309    BEQ SKIPCLEAR
310
311    /* At least 1 word must be copied */
312    CMP R1,#4
313    BCS STARTCLEAR
314    
315    /* Byte count < 4 ; so bump it up to a word*/
316    MOV R1,#4
317
318 STARTCLEAR:
319    LSR R1,R1,#2            /* BSS size in words */
320    
321    MOV R2,#0
322 CLEARLOOP:
323    STR R2,[R0]
324    SUBS R1,#1
325    BEQ SKIPCLEAR
326    ADD R0,#4
327    B CLEARLOOP
328     
329 SKIPCLEAR:
330    /* Remap vector table */
331    /* This is already setup by BootROM,hence this step is optional */ 
332    LDR R0, =__Xmc4400_interrupt_vector_cortex_m 
333    LDR R1, =SCB_VTOR
334    STR R0,[R1]
335    
336    /* Update System Clock */
337    LDR R0,=SystemCoreClockUpdate
338    BLX R0
339
340    /* C++ : Call the global constructor */
341    LDR R0,=__libc_init_array
342    BLX R0
343
344    /* Reset stack pointer before zipping off to user application, Optional */
345    LDR SP,=__Xmc4400_stack 
346    MOV R0,#0
347    MOV R1,#0
348    LDR PC, =main        
349    .pool
350    .cantunwind
351    .fnend
352    .size   __Xmc4400_Program_Loader,.-__Xmc4400_Program_Loader
353 /* ======================================================================== */
354 /* ========== START OF EXCEPTION HANDLER DEFINITION ======================== */
355
356 /* Default exception Handlers - Users may override this default functionality by
357    defining handlers of the same name in their C code */
358     .thumb
359     .text
360      
361      Insert_ExceptionHandler NMI_Handler
362 /* ======================================================================== */
363      Insert_ExceptionHandler HardFault_Handler
364 /* ======================================================================== */
365      Insert_ExceptionHandler MemManage_Handler
366 /* ======================================================================== */
367      Insert_ExceptionHandler BusFault_Handler
368 /* ======================================================================== */
369      Insert_ExceptionHandler UsageFault_Handler
370 /* ======================================================================== */
371      Insert_ExceptionHandler SVC_Handler
372 /* ======================================================================== */
373      Insert_ExceptionHandler DebugMon_Handler
374 /* ======================================================================== */
375      Insert_ExceptionHandler PendSV_Handler
376 /* ======================================================================== */
377      Insert_ExceptionHandler SysTick_Handler
378 /* ======================================================================== */
379
380 /* ============= END OF EXCEPTION HANDLER DEFINITION ======================== */
381
382 /* ============= START OF INTERRUPT HANDLER DEFINITION ====================== */
383
384 /* IRQ Handlers */
385      Insert_ExceptionHandler SCU_0_IRQHandler
386 /* ======================================================================== */
387      Insert_ExceptionHandler ERU0_0_IRQHandler
388 /* ======================================================================== */
389      Insert_ExceptionHandler ERU0_1_IRQHandler
390 /* ======================================================================== */
391      Insert_ExceptionHandler ERU0_2_IRQHandler
392 /* ======================================================================== */
393      Insert_ExceptionHandler ERU0_3_IRQHandler
394 /* ======================================================================== */
395      Insert_ExceptionHandler ERU1_0_IRQHandler
396 /* ======================================================================== */
397      Insert_ExceptionHandler ERU1_1_IRQHandler
398 /* ======================================================================== */
399      Insert_ExceptionHandler ERU1_2_IRQHandler
400 /* ======================================================================== */
401      Insert_ExceptionHandler ERU1_3_IRQHandler
402 /* ======================================================================== */
403      Insert_ExceptionHandler PMU0_0_IRQHandler
404 /* ======================================================================== */
405      Insert_ExceptionHandler VADC0_C0_0_IRQHandler
406 /* ======================================================================== */
407      Insert_ExceptionHandler VADC0_C0_1_IRQHandler
408 /* ======================================================================== */
409      Insert_ExceptionHandler VADC0_C0_2_IRQHandler
410 /* ======================================================================== */
411      Insert_ExceptionHandler VADC0_C0_3_IRQHandler
412 /* ======================================================================== */
413      Insert_ExceptionHandler VADC0_G0_0_IRQHandler
414 /* ======================================================================== */
415      Insert_ExceptionHandler VADC0_G0_1_IRQHandler
416 /* ======================================================================== */
417      Insert_ExceptionHandler VADC0_G0_2_IRQHandler
418 /* ======================================================================== */
419      Insert_ExceptionHandler VADC0_G0_3_IRQHandler
420 /* ======================================================================== */
421      Insert_ExceptionHandler VADC0_G1_0_IRQHandler
422 /* ======================================================================== */
423      Insert_ExceptionHandler VADC0_G1_1_IRQHandler
424 /* ======================================================================== */
425      Insert_ExceptionHandler VADC0_G1_2_IRQHandler
426 /* ======================================================================== */
427      Insert_ExceptionHandler VADC0_G1_3_IRQHandler
428 /* ======================================================================== */
429      Insert_ExceptionHandler VADC0_G2_0_IRQHandler
430 /* ======================================================================== */
431      Insert_ExceptionHandler VADC0_G2_1_IRQHandler
432 /* ======================================================================== */
433      Insert_ExceptionHandler VADC0_G2_2_IRQHandler
434 /* ======================================================================== */
435      Insert_ExceptionHandler VADC0_G2_3_IRQHandler
436 /* ======================================================================== */
437      Insert_ExceptionHandler VADC0_G3_0_IRQHandler
438 /* ======================================================================== */
439      Insert_ExceptionHandler VADC0_G3_1_IRQHandler
440 /* ======================================================================== */
441      Insert_ExceptionHandler VADC0_G3_2_IRQHandler
442 /* ======================================================================== */
443      Insert_ExceptionHandler VADC0_G3_3_IRQHandler
444 /* ======================================================================== */
445      Insert_ExceptionHandler DSD0_0_IRQHandler
446 /* ======================================================================== */
447      Insert_ExceptionHandler DSD0_1_IRQHandler
448 /* ======================================================================== */
449      Insert_ExceptionHandler DSD0_2_IRQHandler
450 /* ======================================================================== */
451      Insert_ExceptionHandler DSD0_3_IRQHandler
452 /* ======================================================================== */
453      Insert_ExceptionHandler DSD0_4_IRQHandler
454 /* ======================================================================== */
455      Insert_ExceptionHandler DSD0_5_IRQHandler
456 /* ======================================================================== */
457      Insert_ExceptionHandler DSD0_6_IRQHandler
458 /* ======================================================================== */
459      Insert_ExceptionHandler DSD0_7_IRQHandler
460 /* ======================================================================== */
461      Insert_ExceptionHandler DAC0_0_IRQHandler
462 /* ======================================================================== */
463      Insert_ExceptionHandler DAC0_1_IRQHandler
464 /* ======================================================================== */
465      Insert_ExceptionHandler CCU40_0_IRQHandler
466 /* ======================================================================== */
467      Insert_ExceptionHandler CCU40_1_IRQHandler
468 /* ======================================================================== */
469      Insert_ExceptionHandler CCU40_2_IRQHandler
470 /* ======================================================================== */
471      Insert_ExceptionHandler CCU40_3_IRQHandler
472 /* ======================================================================== */
473      Insert_ExceptionHandler CCU41_0_IRQHandler
474 /* ======================================================================== */
475      Insert_ExceptionHandler CCU41_1_IRQHandler
476 /* ======================================================================== */
477      Insert_ExceptionHandler CCU41_2_IRQHandler
478 /* ======================================================================== */
479      Insert_ExceptionHandler CCU41_3_IRQHandler
480 /* ======================================================================== */
481      Insert_ExceptionHandler CCU42_0_IRQHandler
482 /* ======================================================================== */
483      Insert_ExceptionHandler CCU42_1_IRQHandler
484 /* ======================================================================== */
485      Insert_ExceptionHandler CCU42_2_IRQHandler
486 /* ======================================================================== */
487      Insert_ExceptionHandler CCU42_3_IRQHandler
488 /* ======================================================================== */
489      Insert_ExceptionHandler CCU43_0_IRQHandler
490 /* ======================================================================== */
491      Insert_ExceptionHandler CCU43_1_IRQHandler
492 /* ======================================================================== */
493      Insert_ExceptionHandler CCU43_2_IRQHandler
494 /* ======================================================================== */
495      Insert_ExceptionHandler CCU43_3_IRQHandler
496 /* ======================================================================== */
497      Insert_ExceptionHandler CCU80_0_IRQHandler
498 /* ======================================================================== */
499      Insert_ExceptionHandler CCU80_1_IRQHandler
500 /* ======================================================================== */
501      Insert_ExceptionHandler CCU80_2_IRQHandler
502 /* ======================================================================== */
503      Insert_ExceptionHandler CCU80_3_IRQHandler
504 /* ======================================================================== */
505      Insert_ExceptionHandler CCU81_0_IRQHandler
506 /* ======================================================================== */
507      Insert_ExceptionHandler CCU81_1_IRQHandler
508 /* ======================================================================== */
509      Insert_ExceptionHandler CCU81_2_IRQHandler
510 /* ======================================================================== */
511      Insert_ExceptionHandler CCU81_3_IRQHandler
512 /* ======================================================================== */
513      Insert_ExceptionHandler POSIF0_0_IRQHandler
514 /* ======================================================================== */
515      Insert_ExceptionHandler POSIF0_1_IRQHandler
516 /* ======================================================================== */
517      Insert_ExceptionHandler POSIF1_0_IRQHandler
518 /* ======================================================================== */
519      Insert_ExceptionHandler POSIF1_1_IRQHandler
520 /* ======================================================================== */
521      Insert_ExceptionHandler HRPWM_0_IRQHandler
522 /* ======================================================================== */
523      Insert_ExceptionHandler HRPWM_1_IRQHandler
524 /* ======================================================================== */
525      Insert_ExceptionHandler HRPWM_2_IRQHandler
526 /* ======================================================================== */
527      Insert_ExceptionHandler HRPWM_3_IRQHandler
528 /* ======================================================================== */
529      Insert_ExceptionHandler CAN0_0_IRQHandler
530 /* ======================================================================== */
531      Insert_ExceptionHandler CAN0_1_IRQHandler
532 /* ======================================================================== */
533      Insert_ExceptionHandler CAN0_2_IRQHandler
534 /* ======================================================================== */
535      Insert_ExceptionHandler CAN0_3_IRQHandler
536 /* ======================================================================== */
537      Insert_ExceptionHandler CAN0_4_IRQHandler
538 /* ======================================================================== */
539      Insert_ExceptionHandler CAN0_5_IRQHandler
540 /* ======================================================================== */
541      Insert_ExceptionHandler CAN0_6_IRQHandler
542 /* ======================================================================== */
543      Insert_ExceptionHandler CAN0_7_IRQHandler
544 /* ======================================================================== */
545      Insert_ExceptionHandler USIC0_0_IRQHandler
546 /* ======================================================================== */
547      Insert_ExceptionHandler USIC0_1_IRQHandler
548 /* ======================================================================== */
549      Insert_ExceptionHandler USIC0_2_IRQHandler
550 /* ======================================================================== */
551      Insert_ExceptionHandler USIC0_3_IRQHandler
552 /* ======================================================================== */
553      Insert_ExceptionHandler USIC0_4_IRQHandler
554 /* ======================================================================== */
555      Insert_ExceptionHandler USIC0_5_IRQHandler
556 /* ======================================================================== */
557      Insert_ExceptionHandler USIC1_0_IRQHandler
558 /* ======================================================================== */
559      Insert_ExceptionHandler USIC1_1_IRQHandler
560 /* ======================================================================== */
561      Insert_ExceptionHandler USIC1_2_IRQHandler
562 /* ======================================================================== */
563      Insert_ExceptionHandler USIC1_3_IRQHandler
564 /* ======================================================================== */
565      Insert_ExceptionHandler USIC1_4_IRQHandler
566 /* ======================================================================== */
567      Insert_ExceptionHandler USIC1_5_IRQHandler
568 /* ======================================================================== */
569      Insert_ExceptionHandler LEDTS0_0_IRQHandler
570 /* ======================================================================== */
571      Insert_ExceptionHandler FCE0_0_IRQHandler
572 /* ======================================================================== */
573      Insert_ExceptionHandler GPDMA0_0_IRQHandler
574 /* ======================================================================== */
575      Insert_ExceptionHandler USB0_0_IRQHandler
576 /* ======================================================================== */
577      Insert_ExceptionHandler ETH0_0_IRQHandler
578 /* ======================================================================== */
579 /* ======================================================================== */
580
581 /* ============= END OF INTERRUPT HANDLER DEFINITION ======================== */
582
583 /* ========= Decision function queried by CMSIS startup for PLL setup ======== */
584 /* In the absence of DAVE code engine, CMSIS SystemInit() must perform clock 
585    tree setup. 
586    
587    This decision routine defined here will always return TRUE.
588    
589    When overridden by a definition defined in DAVE code engine, this routine
590    returns FALSE indicating that the code engine has performed the clock setup
591 */   
592     .weak   AllowPLLInitByStartup
593     .type   AllowPLLInitByStartup, %function
594 AllowPLLInitByStartup:
595     MOV R0,#1
596     BX LR
597     .size   AllowPLLInitByStartup, . - AllowPLLInitByStartup
598
599 /* ======  Definition of the default weak SystemInit_DAVE3 function =========
600 If DAVE3 requires an extended SystemInit it will create its own version of
601 SystemInit_DAVE3 which overrides this weak definition. Example includes
602 setting up of external memory interfaces.
603 */
604      .section ".XmcStartup"
605      .weak SystemInit_DAVE3
606      .type SystemInit_DAVE3, %function
607 SystemInit_DAVE3:
608      NOP
609      BX LR
610      .size SystemInit_DAVE3, . - SystemInit_DAVE3
611 /* ======================================================================== */
612 /* ======================================================================== */
613
614 /* ======================== Data references =============================== */
615 .equ  SCB_VTOR,       0xE000ED08
616 .equ  PREF_PCON,      0x58004000
617 .equ  SCU_GCU_PEEN,   0x5000413C
618 .equ  SCU_GCU_PEFLAG, 0x50004150
619 .equ  FLASH_FCON,     0x58002014
620
621     .end