1/* --------------------------------------------------------------------------*/
2/* @file:    startup_LPC5512.s                                                */
3/* @purpose: CMSIS Cortex-M33 Core Device Startup File                       */
4/*           LPC5512                                                          */
5/* @version: 1.1                                                      */
6/* @date:    2019-12-3                                                         */
7/* --------------------------------------------------------------------------*/
8/*                                                                           */
9/* Copyright 1997-2016 Freescale Semiconductor, Inc.                         */
10/* Copyright 2016-2021 NXP                                                   */
11/* All rights reserved.                                                      */
12/*                                                                           */
13/* SPDX-License-Identifier: BSD-3-Clause                                     */
14/*****************************************************************************/
15/* Version: GCC for ARM Embedded Processors                                  */
16/*****************************************************************************/
17
18
19    .syntax unified
20    .arch armv8-m.main
21
22    .section .isr_vector, "a"
23    .align 2
24    .globl __Vectors
25__Vectors:
26    .long   __StackTop                                      /* Top of Stack */
27    .long   Reset_Handler                                   /* Reset Handler */
28    .long   NMI_Handler                                     /* NMI Handler*/
29    .long   HardFault_Handler                               /* Hard Fault Handler*/
30    .long   MemManage_Handler                               /* MPU Fault Handler*/
31    .long   BusFault_Handler                                /* Bus Fault Handler*/
32    .long   UsageFault_Handler                              /* Usage Fault Handler*/
33    .long   SecureFault_Handler                             /* Secure Fault Handler*/
34    .long   0                                               /* Reserved*/
35    .long   0                                               /* Reserved*/
36    .long   0                                               /* Reserved*/
37    .long   SVC_Handler                                     /* SVCall Handler*/
38    .long   DebugMon_Handler                                /* Debug Monitor Handler*/
39    .long   0                                               /* Reserved*/
40    .long   PendSV_Handler                                  /* PendSV Handler*/
41    .long   SysTick_Handler                                 /* SysTick Handler*/
42
43    /* External Interrupts */
44    .long   WDT_BOD_IRQHandler  /* Windowed watchdog timer, Brownout detect, Flash interrupt */
45    .long   DMA0_IRQHandler  /* DMA0 controller */
46    .long   GINT0_IRQHandler  /* GPIO group 0 */
47    .long   GINT1_IRQHandler  /* GPIO group 1 */
48    .long   PIN_INT0_IRQHandler  /* Pin interrupt 0 or pattern match engine slice 0 */
49    .long   PIN_INT1_IRQHandler  /* Pin interrupt 1or pattern match engine slice 1 */
50    .long   PIN_INT2_IRQHandler  /* Pin interrupt 2 or pattern match engine slice 2 */
51    .long   PIN_INT3_IRQHandler  /* Pin interrupt 3 or pattern match engine slice 3 */
52    .long   UTICK0_IRQHandler  /* Micro-tick Timer */
53    .long   MRT0_IRQHandler  /* Multi-rate timer */
54    .long   CTIMER0_IRQHandler  /* Standard counter/timer CTIMER0 */
55    .long   CTIMER1_IRQHandler  /* Standard counter/timer CTIMER1 */
56    .long   SCT0_IRQHandler  /* SCTimer/PWM */
57    .long   CTIMER3_IRQHandler  /* Standard counter/timer CTIMER3 */
58    .long   FLEXCOMM0_IRQHandler  /* Flexcomm Interface 0 (USART, SPI, I2C, I2S, FLEXCOMM) */
59    .long   FLEXCOMM1_IRQHandler  /* Flexcomm Interface 1 (USART, SPI, I2C, I2S, FLEXCOMM) */
60    .long   FLEXCOMM2_IRQHandler  /* Flexcomm Interface 2 (USART, SPI, I2C, I2S, FLEXCOMM) */
61    .long   FLEXCOMM3_IRQHandler  /* Flexcomm Interface 3 (USART, SPI, I2C, I2S, FLEXCOMM) */
62    .long   FLEXCOMM4_IRQHandler  /* Flexcomm Interface 4 (USART, SPI, I2C, I2S, FLEXCOMM) */
63    .long   FLEXCOMM5_IRQHandler  /* Flexcomm Interface 5 (USART, SPI, I2C, I2S, FLEXCOMM) */
64    .long   FLEXCOMM6_IRQHandler  /* Flexcomm Interface 6 (USART, SPI, I2C, I2S, FLEXCOMM) */
65    .long   FLEXCOMM7_IRQHandler  /* Flexcomm Interface 7 (USART, SPI, I2C, I2S, FLEXCOMM) */
66    .long   ADC0_IRQHandler  /* ADC0  */
67    .long   Reserved39_IRQHandler  /* Reserved interrupt */
68    .long   ACMP_IRQHandler  /* ACMP interrupts */
69    .long   Reserved41_IRQHandler  /* Reserved interrupt */
70    .long   Reserved42_IRQHandler  /* Reserved interrupt */
71    .long   USB0_NEEDCLK_IRQHandler  /* USB Activity Wake-up Interrupt */
72    .long   USB0_IRQHandler  /* USB device */
73    .long   RTC_IRQHandler  /* RTC alarm and wake-up interrupts */
74    .long   Reserved46_IRQHandler  /* Reserved interrupt */
75    .long   Reserved47_IRQHandler  /* Reserved interrupt */
76    .long   PIN_INT4_IRQHandler  /* Pin interrupt 4 or pattern match engine slice 4 int */
77    .long   PIN_INT5_IRQHandler  /* Pin interrupt 5 or pattern match engine slice 5 int */
78    .long   PIN_INT6_IRQHandler  /* Pin interrupt 6 or pattern match engine slice 6 int */
79    .long   PIN_INT7_IRQHandler  /* Pin interrupt 7 or pattern match engine slice 7 int */
80    .long   CTIMER2_IRQHandler  /* Standard counter/timer CTIMER2 */
81    .long   CTIMER4_IRQHandler  /* Standard counter/timer CTIMER4 */
82    .long   OS_EVENT_IRQHandler  /* OS_EVENT_TIMER and OS_EVENT_WAKEUP interrupts */
83    .long   Reserved55_IRQHandler  /* Reserved interrupt */
84    .long   Reserved56_IRQHandler  /* Reserved interrupt */
85    .long   Reserved57_IRQHandler  /* Reserved interrupt */
86    .long   Reserved58_IRQHandler  /* Reserved interrupt */
87    .long   CAN0_IRQ0_IRQHandler  /* CAN0 interrupt0 */
88    .long   CAN0_IRQ1_IRQHandler  /* CAN0 interrupt1 */
89    .long   Reserved61_IRQHandler  /* Reserved interrupt */
90    .long   USB1_PHY_IRQHandler  /* USB1_PHY */
91    .long   USB1_IRQHandler  /* USB1 interrupt */
92    .long   USB1_NEEDCLK_IRQHandler  /* USB1 activity */
93    .long   SEC_HYPERVISOR_CALL_IRQHandler  /* SEC_HYPERVISOR_CALL interrupt */
94    .long   SEC_GPIO_INT0_IRQ0_IRQHandler  /* SEC_GPIO_INT0_IRQ0 interrupt */
95    .long   SEC_GPIO_INT0_IRQ1_IRQHandler  /* SEC_GPIO_INT0_IRQ1 interrupt */
96    .long   PLU_IRQHandler  /* PLU interrupt */
97    .long   SEC_VIO_IRQHandler  /* SEC_VIO interrupt */
98    .long   Reserved70_IRQHandler  /* Reserved interrupt */
99    .long   CASER_IRQHandler  /* CASPER interrupt */
100    .long   PUF_IRQHandler  /* PUF interrupt */
101    .long   Reserved73_IRQHandler  /* Reserved interrupt */
102    .long   DMA1_IRQHandler  /* DMA1 interrupt */
103    .long   FLEXCOMM8_IRQHandler  /* Flexcomm Interface 8 (SPI, , FLEXCOMM) */
104    .long   CDOG_IRQHandler  /* CDOG interrupt */
105
106    .size   __Vectors, . - __Vectors
107
108    .text
109    .thumb
110
111/* Reset Handler */
112    .thumb_func
113    .align 2
114    .globl   Reset_Handler
115    .weak    Reset_Handler
116    .type    Reset_Handler, %function
117Reset_Handler:
118    cpsid   i               /* Mask interrupts */
119    .equ    VTOR, 0xE000ED08
120    ldr     r0, =VTOR
121    ldr     r1, =__Vectors
122    str     r1, [r0]
123    ldr     r2, [r1]
124    msr     msp, r2
125    ldr     R0, =__StackLimit
126    msr     msplim, R0
127#ifndef __NO_SYSTEM_INIT
128    ldr   r0,=SystemInit
129    blx   r0
130#endif
131/*     Loop to copy data from read only memory to RAM. The ranges
132 *      of copy from/to are specified by following symbols evaluated in
133 *      linker script.
134 *      __etext: End of code section, i.e., begin of data sections to copy from.
135 *      __data_start__/__data_end__: RAM address range that data should be
136 *      copied to. Both must be aligned to 4 bytes boundary.  */
137
138    ldr    r1, =__etext
139    ldr    r2, =__data_start__
140    ldr    r3, =__data_end__
141
142#if 1
143/* Here are two copies of loop implemenations. First one favors code size
144 * and the second one favors performance. Default uses the first one.
145 * Change to "#if 0" to use the second one */
146.LC0:
147    cmp     r2, r3
148    ittt    lt
149    ldrlt   r0, [r1], #4
150    strlt   r0, [r2], #4
151    blt    .LC0
152#else
153    subs    r3, r2
154    ble    .LC1
155.LC0:
156    subs    r3, #4
157    ldr    r0, [r1, r3]
158    str    r0, [r2, r3]
159    bgt    .LC0
160.LC1:
161#endif
162
163#ifdef __STARTUP_CLEAR_BSS
164/*     This part of work usually is done in C library startup code. Otherwise,
165 *     define this macro to enable it in this startup.
166 *
167 *     Loop to zero out BSS section, which uses following symbols
168 *     in linker script:
169 *      __bss_start__: start of BSS section. Must align to 4
170 *      __bss_end__: end of BSS section. Must align to 4
171 */
172    ldr r1, =__bss_start__
173    ldr r2, =__bss_end__
174
175    movs    r0, 0
176.LC2:
177    cmp     r1, r2
178    itt    lt
179    strlt   r0, [r1], #4
180    blt    .LC2
181#endif /* __STARTUP_CLEAR_BSS */
182
183/* Add stack / heap initializaiton */
184    movs    r0, 0
185    ldr     r1, =__HeapBase
186    ldr     r2, =__HeapLimit
187.LC3:
188    cmp     r1, r2
189    itt     lt
190    strlt   r0, [r1], #4
191    blt     .LC3
192
193    ldr     r1, =__StackLimit
194    ldr     r2, =__StackTop
195.LC4:
196    cmp     r1, r2
197    itt     lt
198    strlt   r0, [r1], #4
199    blt     .LC4
200/*End of stack / heap initializaiton */
201    cpsie   i               /* Unmask interrupts */
202
203#ifndef __START
204#define __START _start
205#endif
206#ifndef __ATOLLIC__
207    ldr   r0,=__START
208    blx   r0
209#else
210    ldr   r0,=__libc_init_array
211    blx   r0
212    ldr   r0,=main
213    bx    r0
214#endif
215    .pool
216    .size Reset_Handler, . - Reset_Handler
217
218    .align  1
219    .thumb_func
220    .weak DefaultISR
221    .type DefaultISR, %function
222DefaultISR:
223    b DefaultISR
224    .size DefaultISR, . - DefaultISR
225
226    .align 1
227    .thumb_func
228    .weak NMI_Handler
229    .type NMI_Handler, %function
230NMI_Handler:
231    ldr   r0,=NMI_Handler
232    bx    r0
233    .size NMI_Handler, . - NMI_Handler
234
235    .align 1
236    .thumb_func
237    .weak HardFault_Handler
238    .type HardFault_Handler, %function
239HardFault_Handler:
240    ldr   r0,=HardFault_Handler
241    bx    r0
242    .size HardFault_Handler, . - HardFault_Handler
243
244    .align 1
245    .thumb_func
246    .weak SVC_Handler
247    .type SVC_Handler, %function
248SVC_Handler:
249    ldr   r0,=SVC_Handler
250    bx    r0
251    .size SVC_Handler, . - SVC_Handler
252
253    .align 1
254    .thumb_func
255    .weak PendSV_Handler
256    .type PendSV_Handler, %function
257PendSV_Handler:
258    ldr   r0,=PendSV_Handler
259    bx    r0
260    .size PendSV_Handler, . - PendSV_Handler
261
262    .align 1
263    .thumb_func
264    .weak SysTick_Handler
265    .type SysTick_Handler, %function
266SysTick_Handler:
267    ldr   r0,=SysTick_Handler
268    bx    r0
269    .size SysTick_Handler, . - SysTick_Handler
270
271    .align 1
272    .thumb_func
273    .weak WDT_BOD_IRQHandler
274    .type WDT_BOD_IRQHandler, %function
275WDT_BOD_IRQHandler:
276    ldr   r0,=WDT_BOD_DriverIRQHandler
277    bx    r0
278    .size WDT_BOD_IRQHandler, . - WDT_BOD_IRQHandler
279
280    .align 1
281    .thumb_func
282    .weak DMA0_IRQHandler
283    .type DMA0_IRQHandler, %function
284DMA0_IRQHandler:
285    ldr   r0,=DMA0_DriverIRQHandler
286    bx    r0
287    .size DMA0_IRQHandler, . - DMA0_IRQHandler
288
289    .align 1
290    .thumb_func
291    .weak GINT0_IRQHandler
292    .type GINT0_IRQHandler, %function
293GINT0_IRQHandler:
294    ldr   r0,=GINT0_DriverIRQHandler
295    bx    r0
296    .size GINT0_IRQHandler, . - GINT0_IRQHandler
297
298    .align 1
299    .thumb_func
300    .weak GINT1_IRQHandler
301    .type GINT1_IRQHandler, %function
302GINT1_IRQHandler:
303    ldr   r0,=GINT1_DriverIRQHandler
304    bx    r0
305    .size GINT1_IRQHandler, . - GINT1_IRQHandler
306
307    .align 1
308    .thumb_func
309    .weak PIN_INT0_IRQHandler
310    .type PIN_INT0_IRQHandler, %function
311PIN_INT0_IRQHandler:
312    ldr   r0,=PIN_INT0_DriverIRQHandler
313    bx    r0
314    .size PIN_INT0_IRQHandler, . - PIN_INT0_IRQHandler
315
316    .align 1
317    .thumb_func
318    .weak PIN_INT1_IRQHandler
319    .type PIN_INT1_IRQHandler, %function
320PIN_INT1_IRQHandler:
321    ldr   r0,=PIN_INT1_DriverIRQHandler
322    bx    r0
323    .size PIN_INT1_IRQHandler, . - PIN_INT1_IRQHandler
324
325    .align 1
326    .thumb_func
327    .weak PIN_INT2_IRQHandler
328    .type PIN_INT2_IRQHandler, %function
329PIN_INT2_IRQHandler:
330    ldr   r0,=PIN_INT2_DriverIRQHandler
331    bx    r0
332    .size PIN_INT2_IRQHandler, . - PIN_INT2_IRQHandler
333
334    .align 1
335    .thumb_func
336    .weak PIN_INT3_IRQHandler
337    .type PIN_INT3_IRQHandler, %function
338PIN_INT3_IRQHandler:
339    ldr   r0,=PIN_INT3_DriverIRQHandler
340    bx    r0
341    .size PIN_INT3_IRQHandler, . - PIN_INT3_IRQHandler
342
343    .align 1
344    .thumb_func
345    .weak UTICK0_IRQHandler
346    .type UTICK0_IRQHandler, %function
347UTICK0_IRQHandler:
348    ldr   r0,=UTICK0_DriverIRQHandler
349    bx    r0
350    .size UTICK0_IRQHandler, . - UTICK0_IRQHandler
351
352    .align 1
353    .thumb_func
354    .weak MRT0_IRQHandler
355    .type MRT0_IRQHandler, %function
356MRT0_IRQHandler:
357    ldr   r0,=MRT0_DriverIRQHandler
358    bx    r0
359    .size MRT0_IRQHandler, . - MRT0_IRQHandler
360
361    .align 1
362    .thumb_func
363    .weak CTIMER0_IRQHandler
364    .type CTIMER0_IRQHandler, %function
365CTIMER0_IRQHandler:
366    ldr   r0,=CTIMER0_DriverIRQHandler
367    bx    r0
368    .size CTIMER0_IRQHandler, . - CTIMER0_IRQHandler
369
370    .align 1
371    .thumb_func
372    .weak CTIMER1_IRQHandler
373    .type CTIMER1_IRQHandler, %function
374CTIMER1_IRQHandler:
375    ldr   r0,=CTIMER1_DriverIRQHandler
376    bx    r0
377    .size CTIMER1_IRQHandler, . - CTIMER1_IRQHandler
378
379    .align 1
380    .thumb_func
381    .weak SCT0_IRQHandler
382    .type SCT0_IRQHandler, %function
383SCT0_IRQHandler:
384    ldr   r0,=SCT0_DriverIRQHandler
385    bx    r0
386    .size SCT0_IRQHandler, . - SCT0_IRQHandler
387
388    .align 1
389    .thumb_func
390    .weak CTIMER3_IRQHandler
391    .type CTIMER3_IRQHandler, %function
392CTIMER3_IRQHandler:
393    ldr   r0,=CTIMER3_DriverIRQHandler
394    bx    r0
395    .size CTIMER3_IRQHandler, . - CTIMER3_IRQHandler
396
397    .align 1
398    .thumb_func
399    .weak FLEXCOMM0_IRQHandler
400    .type FLEXCOMM0_IRQHandler, %function
401FLEXCOMM0_IRQHandler:
402    ldr   r0,=FLEXCOMM0_DriverIRQHandler
403    bx    r0
404    .size FLEXCOMM0_IRQHandler, . - FLEXCOMM0_IRQHandler
405
406    .align 1
407    .thumb_func
408    .weak FLEXCOMM1_IRQHandler
409    .type FLEXCOMM1_IRQHandler, %function
410FLEXCOMM1_IRQHandler:
411    ldr   r0,=FLEXCOMM1_DriverIRQHandler
412    bx    r0
413    .size FLEXCOMM1_IRQHandler, . - FLEXCOMM1_IRQHandler
414
415    .align 1
416    .thumb_func
417    .weak FLEXCOMM2_IRQHandler
418    .type FLEXCOMM2_IRQHandler, %function
419FLEXCOMM2_IRQHandler:
420    ldr   r0,=FLEXCOMM2_DriverIRQHandler
421    bx    r0
422    .size FLEXCOMM2_IRQHandler, . - FLEXCOMM2_IRQHandler
423
424    .align 1
425    .thumb_func
426    .weak FLEXCOMM3_IRQHandler
427    .type FLEXCOMM3_IRQHandler, %function
428FLEXCOMM3_IRQHandler:
429    ldr   r0,=FLEXCOMM3_DriverIRQHandler
430    bx    r0
431    .size FLEXCOMM3_IRQHandler, . - FLEXCOMM3_IRQHandler
432
433    .align 1
434    .thumb_func
435    .weak FLEXCOMM4_IRQHandler
436    .type FLEXCOMM4_IRQHandler, %function
437FLEXCOMM4_IRQHandler:
438    ldr   r0,=FLEXCOMM4_DriverIRQHandler
439    bx    r0
440    .size FLEXCOMM4_IRQHandler, . - FLEXCOMM4_IRQHandler
441
442    .align 1
443    .thumb_func
444    .weak FLEXCOMM5_IRQHandler
445    .type FLEXCOMM5_IRQHandler, %function
446FLEXCOMM5_IRQHandler:
447    ldr   r0,=FLEXCOMM5_DriverIRQHandler
448    bx    r0
449    .size FLEXCOMM5_IRQHandler, . - FLEXCOMM5_IRQHandler
450
451    .align 1
452    .thumb_func
453    .weak FLEXCOMM6_IRQHandler
454    .type FLEXCOMM6_IRQHandler, %function
455FLEXCOMM6_IRQHandler:
456    ldr   r0,=FLEXCOMM6_DriverIRQHandler
457    bx    r0
458    .size FLEXCOMM6_IRQHandler, . - FLEXCOMM6_IRQHandler
459
460    .align 1
461    .thumb_func
462    .weak FLEXCOMM7_IRQHandler
463    .type FLEXCOMM7_IRQHandler, %function
464FLEXCOMM7_IRQHandler:
465    ldr   r0,=FLEXCOMM7_DriverIRQHandler
466    bx    r0
467    .size FLEXCOMM7_IRQHandler, . - FLEXCOMM7_IRQHandler
468
469    .align 1
470    .thumb_func
471    .weak ADC0_IRQHandler
472    .type ADC0_IRQHandler, %function
473ADC0_IRQHandler:
474    ldr   r0,=ADC0_DriverIRQHandler
475    bx    r0
476    .size ADC0_IRQHandler, . - ADC0_IRQHandler
477
478    .align 1
479    .thumb_func
480    .weak Reserved39_IRQHandler
481    .type Reserved39_IRQHandler, %function
482Reserved39_IRQHandler:
483    ldr   r0,=Reserved39_DriverIRQHandler
484    bx    r0
485    .size Reserved39_IRQHandler, . - Reserved39_IRQHandler
486
487    .align 1
488    .thumb_func
489    .weak ACMP_IRQHandler
490    .type ACMP_IRQHandler, %function
491ACMP_IRQHandler:
492    ldr   r0,=ACMP_DriverIRQHandler
493    bx    r0
494    .size ACMP_IRQHandler, . - ACMP_IRQHandler
495
496    .align 1
497    .thumb_func
498    .weak Reserved41_IRQHandler
499    .type Reserved41_IRQHandler, %function
500Reserved41_IRQHandler:
501    ldr   r0,=Reserved41_DriverIRQHandler
502    bx    r0
503    .size Reserved41_IRQHandler, . - Reserved41_IRQHandler
504
505    .align 1
506    .thumb_func
507    .weak Reserved42_IRQHandler
508    .type Reserved42_IRQHandler, %function
509Reserved42_IRQHandler:
510    ldr   r0,=Reserved42_DriverIRQHandler
511    bx    r0
512    .size Reserved42_IRQHandler, . - Reserved42_IRQHandler
513
514    .align 1
515    .thumb_func
516    .weak USB0_NEEDCLK_IRQHandler
517    .type USB0_NEEDCLK_IRQHandler, %function
518USB0_NEEDCLK_IRQHandler:
519    ldr   r0,=USB0_NEEDCLK_DriverIRQHandler
520    bx    r0
521    .size USB0_NEEDCLK_IRQHandler, . - USB0_NEEDCLK_IRQHandler
522
523    .align 1
524    .thumb_func
525    .weak USB0_IRQHandler
526    .type USB0_IRQHandler, %function
527USB0_IRQHandler:
528    ldr   r0,=USB0_DriverIRQHandler
529    bx    r0
530    .size USB0_IRQHandler, . - USB0_IRQHandler
531
532    .align 1
533    .thumb_func
534    .weak RTC_IRQHandler
535    .type RTC_IRQHandler, %function
536RTC_IRQHandler:
537    ldr   r0,=RTC_DriverIRQHandler
538    bx    r0
539    .size RTC_IRQHandler, . - RTC_IRQHandler
540
541    .align 1
542    .thumb_func
543    .weak Reserved46_IRQHandler
544    .type Reserved46_IRQHandler, %function
545Reserved46_IRQHandler:
546    ldr   r0,=Reserved46_DriverIRQHandler
547    bx    r0
548    .size Reserved46_IRQHandler, . - Reserved46_IRQHandler
549
550    .align 1
551    .thumb_func
552    .weak Reserved47_IRQHandler
553    .type Reserved47_IRQHandler, %function
554Reserved47_IRQHandler:
555    ldr   r0,=Reserved47_DriverIRQHandler
556    bx    r0
557    .size Reserved47_IRQHandler, . - Reserved47_IRQHandler
558
559    .align 1
560    .thumb_func
561    .weak PIN_INT4_IRQHandler
562    .type PIN_INT4_IRQHandler, %function
563PIN_INT4_IRQHandler:
564    ldr   r0,=PIN_INT4_DriverIRQHandler
565    bx    r0
566    .size PIN_INT4_IRQHandler, . - PIN_INT4_IRQHandler
567
568    .align 1
569    .thumb_func
570    .weak PIN_INT5_IRQHandler
571    .type PIN_INT5_IRQHandler, %function
572PIN_INT5_IRQHandler:
573    ldr   r0,=PIN_INT5_DriverIRQHandler
574    bx    r0
575    .size PIN_INT5_IRQHandler, . - PIN_INT5_IRQHandler
576
577    .align 1
578    .thumb_func
579    .weak PIN_INT6_IRQHandler
580    .type PIN_INT6_IRQHandler, %function
581PIN_INT6_IRQHandler:
582    ldr   r0,=PIN_INT6_DriverIRQHandler
583    bx    r0
584    .size PIN_INT6_IRQHandler, . - PIN_INT6_IRQHandler
585
586    .align 1
587    .thumb_func
588    .weak PIN_INT7_IRQHandler
589    .type PIN_INT7_IRQHandler, %function
590PIN_INT7_IRQHandler:
591    ldr   r0,=PIN_INT7_DriverIRQHandler
592    bx    r0
593    .size PIN_INT7_IRQHandler, . - PIN_INT7_IRQHandler
594
595    .align 1
596    .thumb_func
597    .weak CTIMER2_IRQHandler
598    .type CTIMER2_IRQHandler, %function
599CTIMER2_IRQHandler:
600    ldr   r0,=CTIMER2_DriverIRQHandler
601    bx    r0
602    .size CTIMER2_IRQHandler, . - CTIMER2_IRQHandler
603
604    .align 1
605    .thumb_func
606    .weak CTIMER4_IRQHandler
607    .type CTIMER4_IRQHandler, %function
608CTIMER4_IRQHandler:
609    ldr   r0,=CTIMER4_DriverIRQHandler
610    bx    r0
611    .size CTIMER4_IRQHandler, . - CTIMER4_IRQHandler
612
613    .align 1
614    .thumb_func
615    .weak OS_EVENT_IRQHandler
616    .type OS_EVENT_IRQHandler, %function
617OS_EVENT_IRQHandler:
618    ldr   r0,=OS_EVENT_DriverIRQHandler
619    bx    r0
620    .size OS_EVENT_IRQHandler, . - OS_EVENT_IRQHandler
621
622    .align 1
623    .thumb_func
624    .weak Reserved55_IRQHandler
625    .type Reserved55_IRQHandler, %function
626Reserved55_IRQHandler:
627    ldr   r0,=Reserved55_DriverIRQHandler
628    bx    r0
629    .size Reserved55_IRQHandler, . - Reserved55_IRQHandler
630
631    .align 1
632    .thumb_func
633    .weak Reserved56_IRQHandler
634    .type Reserved56_IRQHandler, %function
635Reserved56_IRQHandler:
636    ldr   r0,=Reserved56_DriverIRQHandler
637    bx    r0
638    .size Reserved56_IRQHandler, . - Reserved56_IRQHandler
639
640    .align 1
641    .thumb_func
642    .weak Reserved57_IRQHandler
643    .type Reserved57_IRQHandler, %function
644Reserved57_IRQHandler:
645    ldr   r0,=Reserved57_DriverIRQHandler
646    bx    r0
647    .size Reserved57_IRQHandler, . - Reserved57_IRQHandler
648
649    .align 1
650    .thumb_func
651    .weak Reserved58_IRQHandler
652    .type Reserved58_IRQHandler, %function
653Reserved58_IRQHandler:
654    ldr   r0,=Reserved58_DriverIRQHandler
655    bx    r0
656    .size Reserved58_IRQHandler, . - Reserved58_IRQHandler
657
658    .align 1
659    .thumb_func
660    .weak CAN0_IRQ0_IRQHandler
661    .type CAN0_IRQ0_IRQHandler, %function
662CAN0_IRQ0_IRQHandler:
663    ldr   r0,=CAN0_IRQ0_DriverIRQHandler
664    bx    r0
665    .size CAN0_IRQ0_IRQHandler, . - CAN0_IRQ0_IRQHandler
666
667    .align 1
668    .thumb_func
669    .weak CAN0_IRQ1_IRQHandler
670    .type CAN0_IRQ1_IRQHandler, %function
671CAN0_IRQ1_IRQHandler:
672    ldr   r0,=CAN0_IRQ1_DriverIRQHandler
673    bx    r0
674    .size CAN0_IRQ1_IRQHandler, . - CAN0_IRQ1_IRQHandler
675
676    .align 1
677    .thumb_func
678    .weak Reserved61_IRQHandler
679    .type Reserved61_IRQHandler, %function
680Reserved61_IRQHandler:
681    ldr   r0,=Reserved61_DriverIRQHandler
682    bx    r0
683    .size Reserved61_IRQHandler, . - Reserved61_IRQHandler
684
685    .align 1
686    .thumb_func
687    .weak USB1_PHY_IRQHandler
688    .type USB1_PHY_IRQHandler, %function
689USB1_PHY_IRQHandler:
690    ldr   r0,=USB1_PHY_DriverIRQHandler
691    bx    r0
692    .size USB1_PHY_IRQHandler, . - USB1_PHY_IRQHandler
693
694    .align 1
695    .thumb_func
696    .weak USB1_IRQHandler
697    .type USB1_IRQHandler, %function
698USB1_IRQHandler:
699    ldr   r0,=USB1_DriverIRQHandler
700    bx    r0
701    .size USB1_IRQHandler, . - USB1_IRQHandler
702
703    .align 1
704    .thumb_func
705    .weak USB1_NEEDCLK_IRQHandler
706    .type USB1_NEEDCLK_IRQHandler, %function
707USB1_NEEDCLK_IRQHandler:
708    ldr   r0,=USB1_NEEDCLK_DriverIRQHandler
709    bx    r0
710    .size USB1_NEEDCLK_IRQHandler, . - USB1_NEEDCLK_IRQHandler
711
712    .align 1
713    .thumb_func
714    .weak SEC_HYPERVISOR_CALL_IRQHandler
715    .type SEC_HYPERVISOR_CALL_IRQHandler, %function
716SEC_HYPERVISOR_CALL_IRQHandler:
717    ldr   r0,=SEC_HYPERVISOR_CALL_DriverIRQHandler
718    bx    r0
719    .size SEC_HYPERVISOR_CALL_IRQHandler, . - SEC_HYPERVISOR_CALL_IRQHandler
720
721    .align 1
722    .thumb_func
723    .weak SEC_GPIO_INT0_IRQ0_IRQHandler
724    .type SEC_GPIO_INT0_IRQ0_IRQHandler, %function
725SEC_GPIO_INT0_IRQ0_IRQHandler:
726    ldr   r0,=SEC_GPIO_INT0_IRQ0_DriverIRQHandler
727    bx    r0
728    .size SEC_GPIO_INT0_IRQ0_IRQHandler, . - SEC_GPIO_INT0_IRQ0_IRQHandler
729
730    .align 1
731    .thumb_func
732    .weak SEC_GPIO_INT0_IRQ1_IRQHandler
733    .type SEC_GPIO_INT0_IRQ1_IRQHandler, %function
734SEC_GPIO_INT0_IRQ1_IRQHandler:
735    ldr   r0,=SEC_GPIO_INT0_IRQ1_DriverIRQHandler
736    bx    r0
737    .size SEC_GPIO_INT0_IRQ1_IRQHandler, . - SEC_GPIO_INT0_IRQ1_IRQHandler
738
739    .align 1
740    .thumb_func
741    .weak PLU_IRQHandler
742    .type PLU_IRQHandler, %function
743PLU_IRQHandler:
744    ldr   r0,=PLU_DriverIRQHandler
745    bx    r0
746    .size PLU_IRQHandler, . - PLU_IRQHandler
747
748    .align 1
749    .thumb_func
750    .weak SEC_VIO_IRQHandler
751    .type SEC_VIO_IRQHandler, %function
752SEC_VIO_IRQHandler:
753    ldr   r0,=SEC_VIO_DriverIRQHandler
754    bx    r0
755    .size SEC_VIO_IRQHandler, . - SEC_VIO_IRQHandler
756
757    .align 1
758    .thumb_func
759    .weak Reserved70_IRQHandler
760    .type Reserved70_IRQHandler, %function
761Reserved70_IRQHandler:
762    ldr   r0,=Reserved70_DriverIRQHandler
763    bx    r0
764    .size Reserved70_IRQHandler, . - Reserved70_IRQHandler
765
766    .align 1
767    .thumb_func
768    .weak CASER_IRQHandler
769    .type CASER_IRQHandler, %function
770CASER_IRQHandler:
771    ldr   r0,=CASER_DriverIRQHandler
772    bx    r0
773    .size CASER_IRQHandler, . - CASER_IRQHandler
774
775    .align 1
776    .thumb_func
777    .weak PUF_IRQHandler
778    .type PUF_IRQHandler, %function
779PUF_IRQHandler:
780    ldr   r0,=PUF_DriverIRQHandler
781    bx    r0
782    .size PUF_IRQHandler, . - PUF_IRQHandler
783
784    .align 1
785    .thumb_func
786    .weak Reserved73_IRQHandler
787    .type Reserved73_IRQHandler, %function
788Reserved73_IRQHandler:
789    ldr   r0,=Reserved73_DriverIRQHandler
790    bx    r0
791    .size Reserved73_IRQHandler, . - Reserved73_IRQHandler
792
793    .align 1
794    .thumb_func
795    .weak DMA1_IRQHandler
796    .type DMA1_IRQHandler, %function
797DMA1_IRQHandler:
798    ldr   r0,=DMA1_DriverIRQHandler
799    bx    r0
800    .size DMA1_IRQHandler, . - DMA1_IRQHandler
801
802    .align 1
803    .thumb_func
804    .weak FLEXCOMM8_IRQHandler
805    .type FLEXCOMM8_IRQHandler, %function
806FLEXCOMM8_IRQHandler:
807    ldr   r0,=FLEXCOMM8_DriverIRQHandler
808    bx    r0
809    .size FLEXCOMM8_IRQHandler, . - FLEXCOMM8_IRQHandler
810
811    .align 1
812    .thumb_func
813    .weak CDOG_IRQHandler
814    .type CDOG_IRQHandler, %function
815CDOG_IRQHandler:
816    ldr   r0,=CDOG_DriverIRQHandler
817    bx    r0
818    .size CDOG_IRQHandler, . - CDOG_IRQHandler
819
820/*    Macro to define default handlers. Default handler
821 *    will be weak symbol and just dead loops. They can be
822 *    overwritten by other handlers */
823    .macro def_irq_handler  handler_name
824    .weak \handler_name
825    .set  \handler_name, DefaultISR
826    .endm
827/* Exception Handlers */
828    def_irq_handler    MemManage_Handler
829    def_irq_handler    BusFault_Handler
830    def_irq_handler    UsageFault_Handler
831    def_irq_handler    SecureFault_Handler
832    def_irq_handler    DebugMon_Handler
833                def_irq_handler     WDT_BOD_DriverIRQHandler
834                def_irq_handler     DMA0_DriverIRQHandler
835                def_irq_handler     GINT0_DriverIRQHandler
836                def_irq_handler     GINT1_DriverIRQHandler
837                def_irq_handler     PIN_INT0_DriverIRQHandler
838                def_irq_handler     PIN_INT1_DriverIRQHandler
839                def_irq_handler     PIN_INT2_DriverIRQHandler
840                def_irq_handler     PIN_INT3_DriverIRQHandler
841                def_irq_handler     UTICK0_DriverIRQHandler
842                def_irq_handler     MRT0_DriverIRQHandler
843                def_irq_handler     CTIMER0_DriverIRQHandler
844                def_irq_handler     CTIMER1_DriverIRQHandler
845                def_irq_handler     SCT0_DriverIRQHandler
846                def_irq_handler     CTIMER3_DriverIRQHandler
847                def_irq_handler     FLEXCOMM0_DriverIRQHandler
848                def_irq_handler     FLEXCOMM1_DriverIRQHandler
849                def_irq_handler     FLEXCOMM2_DriverIRQHandler
850                def_irq_handler     FLEXCOMM3_DriverIRQHandler
851                def_irq_handler     FLEXCOMM4_DriverIRQHandler
852                def_irq_handler     FLEXCOMM5_DriverIRQHandler
853                def_irq_handler     FLEXCOMM6_DriverIRQHandler
854                def_irq_handler     FLEXCOMM7_DriverIRQHandler
855                def_irq_handler     ADC0_DriverIRQHandler
856                def_irq_handler     Reserved39_DriverIRQHandler
857                def_irq_handler     ACMP_DriverIRQHandler
858                def_irq_handler     Reserved41_DriverIRQHandler
859                def_irq_handler     Reserved42_DriverIRQHandler
860                def_irq_handler     USB0_NEEDCLK_DriverIRQHandler
861                def_irq_handler     USB0_DriverIRQHandler
862                def_irq_handler     RTC_DriverIRQHandler
863                def_irq_handler     Reserved46_DriverIRQHandler
864                def_irq_handler     Reserved47_DriverIRQHandler
865                def_irq_handler     PIN_INT4_DriverIRQHandler
866                def_irq_handler     PIN_INT5_DriverIRQHandler
867                def_irq_handler     PIN_INT6_DriverIRQHandler
868                def_irq_handler     PIN_INT7_DriverIRQHandler
869                def_irq_handler     CTIMER2_DriverIRQHandler
870                def_irq_handler     CTIMER4_DriverIRQHandler
871                def_irq_handler     OS_EVENT_DriverIRQHandler
872                def_irq_handler     Reserved55_DriverIRQHandler
873                def_irq_handler     Reserved56_DriverIRQHandler
874                def_irq_handler     Reserved57_DriverIRQHandler
875                def_irq_handler     Reserved58_DriverIRQHandler
876                def_irq_handler     CAN0_IRQ0_DriverIRQHandler
877                def_irq_handler     CAN0_IRQ1_DriverIRQHandler
878                def_irq_handler     Reserved61_DriverIRQHandler
879                def_irq_handler     USB1_PHY_DriverIRQHandler
880                def_irq_handler     USB1_DriverIRQHandler
881                def_irq_handler     USB1_NEEDCLK_DriverIRQHandler
882                def_irq_handler     SEC_HYPERVISOR_CALL_DriverIRQHandler
883                def_irq_handler     SEC_GPIO_INT0_IRQ0_DriverIRQHandler
884                def_irq_handler     SEC_GPIO_INT0_IRQ1_DriverIRQHandler
885                def_irq_handler     PLU_DriverIRQHandler
886                def_irq_handler     SEC_VIO_DriverIRQHandler
887                def_irq_handler     Reserved70_DriverIRQHandler
888                def_irq_handler     CASER_DriverIRQHandler
889                def_irq_handler     PUF_DriverIRQHandler
890                def_irq_handler     Reserved73_DriverIRQHandler
891                def_irq_handler     DMA1_DriverIRQHandler
892                def_irq_handler     FLEXCOMM8_DriverIRQHandler
893                def_irq_handler     CDOG_DriverIRQHandler
894
895    .end
896