1/* --------------------------------------------------------------------------*/
2/* @file:    startup_LPC54628.S                                                */
3/* @purpose: CMSIS Cortex-M4 Core Device Startup File                        */
4/*           LPC54628                                                          */
5/* @version: 1.2                                                      */
6/* @date:    2017-6-8                                                         */
7/* --------------------------------------------------------------------------*/
8/*                                                                           */
9/* Copyright 1997-2016 Freescale Semiconductor, Inc.                         */
10/* Copyright 2016-2019 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 armv7-m
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   0                                               /* Reserved */
34    .long   0xFFFFFFFF                                      /* ECRP */
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 */
45    .long   DMA0_IRQHandler                     /* DMA 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, FLEXCOMM) */
59    .long   FLEXCOMM1_IRQHandler                     /* Flexcomm Interface 1 (USART, SPI, I2C, FLEXCOMM) */
60    .long   FLEXCOMM2_IRQHandler                     /* Flexcomm Interface 2 (USART, SPI, I2C, FLEXCOMM) */
61    .long   FLEXCOMM3_IRQHandler                     /* Flexcomm Interface 3 (USART, SPI, I2C, FLEXCOMM) */
62    .long   FLEXCOMM4_IRQHandler                     /* Flexcomm Interface 4 (USART, SPI, I2C, FLEXCOMM) */
63    .long   FLEXCOMM5_IRQHandler                     /* Flexcomm Interface 5 (USART, SPI, I2C,, 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_SEQA_IRQHandler                     /* ADC0 sequence A completion. */
67    .long   ADC0_SEQB_IRQHandler                     /* ADC0 sequence B completion. */
68    .long   ADC0_THCMP_IRQHandler                     /* ADC0 threshold compare and error. */
69    .long   DMIC0_IRQHandler                     /* Digital microphone and DMIC subsystem */
70    .long   HWVAD0_IRQHandler                     /* Hardware Voice Activity Detector */
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   RIT_IRQHandler                     /* Repetitive Interrupt Timer */
83    .long   SPIFI0_IRQHandler                     /* SPI flash interface */
84    .long   FLEXCOMM8_IRQHandler                     /* Flexcomm Interface 8 (USART, SPI, I2C, FLEXCOMM) */
85    .long   FLEXCOMM9_IRQHandler                     /* Flexcomm Interface 9 (USART, SPI, I2C, FLEXCOMM) */
86    .long   SDIO_IRQHandler                     /* SD/MMC  */
87    .long   CAN0_IRQ0_IRQHandler                     /* CAN0 interrupt0 */
88    .long   CAN0_IRQ1_IRQHandler                     /* CAN0 interrupt1 */
89    .long   CAN1_IRQ0_IRQHandler                     /* CAN1 interrupt0 */
90    .long   CAN1_IRQ1_IRQHandler                     /* CAN1 interrupt1 */
91    .long   USB1_IRQHandler                     /* USB1 interrupt */
92    .long   USB1_NEEDCLK_IRQHandler                     /* USB1 activity */
93    .long   ETHERNET_IRQHandler                     /* Ethernet */
94    .long   ETHERNET_PMT_IRQHandler                     /* Ethernet power management interrupt */
95    .long   ETHERNET_MACLP_IRQHandler                     /* Ethernet MAC interrupt */
96    .long   EEPROM_IRQHandler                     /* EEPROM interrupt */
97    .long   LCD_IRQHandler                     /* LCD interrupt */
98    .long   SHA_IRQHandler                     /* SHA interrupt */
99    .long   SMARTCARD0_IRQHandler                     /* Smart card 0 interrupt */
100    .long   SMARTCARD1_IRQHandler                     /* Smart card 1 interrupt */
101
102    .size    __Vectors, . - __Vectors
103
104
105
106    .text
107    .thumb
108
109/* Reset Handler */
110
111    .thumb_func
112    .align 2
113    .globl   Reset_Handler
114    .weak    Reset_Handler
115    .type    Reset_Handler, %function
116Reset_Handler:
117#ifndef __NO_SYSTEM_INIT
118    movs  r0,#56
119    ldr   r1, =0x40000220
120    str   r0, [r1]           /* Enable SRAM clock used by Stack */
121    ldr   r0,=SystemInit
122    blx   r0
123#endif
124
125    /*      Loop to copy data from read only memory to RAM. The ranges
126     *      of copy from/to are specified by following symbols evaluated in
127     *      linker script.
128     *      __etext: End of code section, i.e., begin of data sections to copy from.
129     *      __data_start__/__data_end__: RAM address range that data should be
130     *      copied to. Both must be aligned to 4 bytes boundary.  */
131
132    ldr    r1, =__etext
133    ldr    r2, =__data_start__
134    ldr    r3, =__data_end__
135
136#if 1
137/* Here are two copies of loop implemenations. First one favors code size
138 * and the second one favors performance. Default uses the first one.
139 * Change to "#if 0" to use the second one */
140.LC0:
141    cmp     r2, r3
142    ittt    lt
143    ldrlt   r0, [r1], #4
144    strlt   r0, [r2], #4
145    blt    .LC0
146#else
147    subs    r3, r2
148    ble    .LC1
149.LC0:
150    subs    r3, #4
151    ldr    r0, [r1, r3]
152    str    r0, [r2, r3]
153    bgt    .LC0
154.LC1:
155#endif
156
157#ifdef __STARTUP_CLEAR_BSS
158/*     This part of work usually is done in C library startup code. Otherwise,
159 *     define this macro to enable it in this startup.
160 *
161 *     Loop to zero out BSS section, which uses following symbols
162 *     in linker script:
163 *      __bss_start__: start of BSS section. Must align to 4
164 *      __bss_end__: end of BSS section. Must align to 4
165 */
166    ldr r1, =__bss_start__
167    ldr r2, =__bss_end__
168
169    movs    r0, 0
170.LC2:
171    cmp     r1, r2
172    itt    lt
173    strlt   r0, [r1], #4
174    blt    .LC2
175#endif /* __STARTUP_CLEAR_BSS */
176
177#ifndef __START
178#define __START _start
179#endif
180#ifndef __ATOLLIC__
181    ldr   r0,=__START
182    blx   r0
183#else
184    ldr   r0,=__libc_init_array
185    blx   r0
186    ldr   r0,=main
187    bx    r0
188#endif
189
190    .pool
191    .size Reset_Handler, . - Reset_Handler
192
193    .align  1
194    .thumb_func
195    .weak DefaultISR
196    .type DefaultISR, %function
197DefaultISR:
198    b DefaultISR
199    .size DefaultISR, . - DefaultISR
200
201    .align 1
202    .thumb_func
203    .weak NMI_Handler
204    .type NMI_Handler, %function
205NMI_Handler:
206    ldr   r0,=NMI_Handler
207    bx    r0
208    .size NMI_Handler, . - NMI_Handler
209
210    .align 1
211    .thumb_func
212    .weak HardFault_Handler
213    .type HardFault_Handler, %function
214HardFault_Handler:
215    ldr   r0,=HardFault_Handler
216    bx    r0
217    .size HardFault_Handler, . - HardFault_Handler
218
219    .align 1
220    .thumb_func
221    .weak MemManage_Handler
222    .type MemManage_Handler, %function
223MemManage_Handler:
224    ldr   r0,=MemManage_Handler
225    bx    r0
226    .size MemManage_Handler, . - MemManage_Handler
227
228    .align 1
229    .thumb_func
230    .weak BusFault_Handler
231    .type BusFault_Handler, %function
232BusFault_Handler:
233    ldr   r0,=BusFault_Handler
234    bx    r0
235    .size BusFault_Handler, . - BusFault_Handler
236
237    .align 1
238    .thumb_func
239    .weak UsageFault_Handler
240    .type UsageFault_Handler, %function
241UsageFault_Handler:
242    ldr   r0,=UsageFault_Handler
243    bx    r0
244    .size UsageFault_Handler, . - UsageFault_Handler
245
246    .align 1
247    .thumb_func
248    .weak SVC_Handler
249    .type SVC_Handler, %function
250
251SVC_Handler:
252    ldr   r0,=SVC_Handler
253    bx    r0
254    .size SVC_Handler, . - SVC_Handler
255    .align 1
256    .thumb_func
257    .weak DebugMon_Handler
258    .type DebugMon_Handler, %function
259DebugMon_Handler:
260    ldr   r0,=DebugMon_Handler
261    bx    r0
262    .size DebugMon_Handler, . - DebugMon_Handler
263
264    .align 1
265    .thumb_func
266    .weak PendSV_Handler
267    .type PendSV_Handler, %function
268PendSV_Handler:
269    ldr   r0,=PendSV_Handler
270    bx    r0
271    .size PendSV_Handler, . - PendSV_Handler
272
273    .align 1
274    .thumb_func
275    .weak SysTick_Handler
276    .type SysTick_Handler, %function
277SysTick_Handler:
278    ldr   r0,=SysTick_Handler
279    bx    r0
280    .size SysTick_Handler, . - SysTick_Handler
281
282    .align 1
283    .thumb_func
284    .weak WDT_BOD_IRQHandler
285    .type WDT_BOD_IRQHandler, %function
286WDT_BOD_IRQHandler:
287    ldr   r0,=WDT_BOD_DriverIRQHandler
288    bx    r0
289    .size WDT_BOD_IRQHandler, . - WDT_BOD_IRQHandler
290
291    .align 1
292    .thumb_func
293    .weak DMA0_IRQHandler
294    .type DMA0_IRQHandler, %function
295DMA0_IRQHandler:
296    ldr   r0,=DMA0_DriverIRQHandler
297    bx    r0
298    .size DMA0_IRQHandler, . - DMA0_IRQHandler
299
300    .align 1
301    .thumb_func
302    .weak GINT0_IRQHandler
303    .type GINT0_IRQHandler, %function
304GINT0_IRQHandler:
305    ldr   r0,=GINT0_DriverIRQHandler
306    bx    r0
307    .size GINT0_IRQHandler, . - GINT0_IRQHandler
308
309    .align 1
310    .thumb_func
311    .weak GINT1_IRQHandler
312    .type GINT1_IRQHandler, %function
313GINT1_IRQHandler:
314    ldr   r0,=GINT1_DriverIRQHandler
315    bx    r0
316    .size GINT1_IRQHandler, . - GINT1_IRQHandler
317
318    .align 1
319    .thumb_func
320    .weak PIN_INT0_IRQHandler
321    .type PIN_INT0_IRQHandler, %function
322PIN_INT0_IRQHandler:
323    ldr   r0,=PIN_INT0_DriverIRQHandler
324    bx    r0
325    .size PIN_INT0_IRQHandler, . - PIN_INT0_IRQHandler
326
327    .align 1
328    .thumb_func
329    .weak PIN_INT1_IRQHandler
330    .type PIN_INT1_IRQHandler, %function
331PIN_INT1_IRQHandler:
332    ldr   r0,=PIN_INT1_DriverIRQHandler
333    bx    r0
334    .size PIN_INT1_IRQHandler, . - PIN_INT1_IRQHandler
335
336    .align 1
337    .thumb_func
338    .weak PIN_INT2_IRQHandler
339    .type PIN_INT2_IRQHandler, %function
340PIN_INT2_IRQHandler:
341    ldr   r0,=PIN_INT2_DriverIRQHandler
342    bx    r0
343    .size PIN_INT2_IRQHandler, . - PIN_INT2_IRQHandler
344
345    .align 1
346    .thumb_func
347    .weak PIN_INT3_IRQHandler
348    .type PIN_INT3_IRQHandler, %function
349PIN_INT3_IRQHandler:
350    ldr   r0,=PIN_INT3_DriverIRQHandler
351    bx    r0
352    .size PIN_INT3_IRQHandler, . - PIN_INT3_IRQHandler
353
354    .align 1
355    .thumb_func
356    .weak UTICK0_IRQHandler
357    .type UTICK0_IRQHandler, %function
358UTICK0_IRQHandler:
359    ldr   r0,=UTICK0_DriverIRQHandler
360    bx    r0
361    .size UTICK0_IRQHandler, . - UTICK0_IRQHandler
362
363    .align 1
364    .thumb_func
365    .weak MRT0_IRQHandler
366    .type MRT0_IRQHandler, %function
367MRT0_IRQHandler:
368    ldr   r0,=MRT0_DriverIRQHandler
369    bx    r0
370    .size MRT0_IRQHandler, . - MRT0_IRQHandler
371
372    .align 1
373    .thumb_func
374    .weak CTIMER0_IRQHandler
375    .type CTIMER0_IRQHandler, %function
376CTIMER0_IRQHandler:
377    ldr   r0,=CTIMER0_DriverIRQHandler
378    bx    r0
379    .size CTIMER0_IRQHandler, . - CTIMER0_IRQHandler
380
381    .align 1
382    .thumb_func
383    .weak CTIMER1_IRQHandler
384    .type CTIMER1_IRQHandler, %function
385CTIMER1_IRQHandler:
386    ldr   r0,=CTIMER1_DriverIRQHandler
387    bx    r0
388    .size CTIMER1_IRQHandler, . - CTIMER1_IRQHandler
389
390    .align 1
391    .thumb_func
392    .weak SCT0_IRQHandler
393    .type SCT0_IRQHandler, %function
394SCT0_IRQHandler:
395    ldr   r0,=SCT0_DriverIRQHandler
396    bx    r0
397    .size SCT0_IRQHandler, . - SCT0_IRQHandler
398
399    .align 1
400    .thumb_func
401    .weak CTIMER3_IRQHandler
402    .type CTIMER3_IRQHandler, %function
403CTIMER3_IRQHandler:
404    ldr   r0,=CTIMER3_DriverIRQHandler
405    bx    r0
406    .size CTIMER3_IRQHandler, . - CTIMER3_IRQHandler
407
408    .align 1
409    .thumb_func
410    .weak FLEXCOMM0_IRQHandler
411    .type FLEXCOMM0_IRQHandler, %function
412FLEXCOMM0_IRQHandler:
413    ldr   r0,=FLEXCOMM0_DriverIRQHandler
414    bx    r0
415    .size FLEXCOMM0_IRQHandler, . - FLEXCOMM0_IRQHandler
416
417    .align 1
418    .thumb_func
419    .weak FLEXCOMM1_IRQHandler
420    .type FLEXCOMM1_IRQHandler, %function
421FLEXCOMM1_IRQHandler:
422    ldr   r0,=FLEXCOMM1_DriverIRQHandler
423    bx    r0
424    .size FLEXCOMM1_IRQHandler, . - FLEXCOMM1_IRQHandler
425
426    .align 1
427    .thumb_func
428    .weak FLEXCOMM2_IRQHandler
429    .type FLEXCOMM2_IRQHandler, %function
430FLEXCOMM2_IRQHandler:
431    ldr   r0,=FLEXCOMM2_DriverIRQHandler
432    bx    r0
433    .size FLEXCOMM2_IRQHandler, . - FLEXCOMM2_IRQHandler
434
435    .align 1
436    .thumb_func
437    .weak FLEXCOMM3_IRQHandler
438    .type FLEXCOMM3_IRQHandler, %function
439FLEXCOMM3_IRQHandler:
440    ldr   r0,=FLEXCOMM3_DriverIRQHandler
441    bx    r0
442    .size FLEXCOMM3_IRQHandler, . - FLEXCOMM3_IRQHandler
443
444    .align 1
445    .thumb_func
446    .weak FLEXCOMM4_IRQHandler
447    .type FLEXCOMM4_IRQHandler, %function
448FLEXCOMM4_IRQHandler:
449    ldr   r0,=FLEXCOMM4_DriverIRQHandler
450    bx    r0
451    .size FLEXCOMM4_IRQHandler, . - FLEXCOMM4_IRQHandler
452
453    .align 1
454    .thumb_func
455    .weak FLEXCOMM5_IRQHandler
456    .type FLEXCOMM5_IRQHandler, %function
457FLEXCOMM5_IRQHandler:
458    ldr   r0,=FLEXCOMM5_DriverIRQHandler
459    bx    r0
460    .size FLEXCOMM5_IRQHandler, . - FLEXCOMM5_IRQHandler
461
462    .align 1
463    .thumb_func
464    .weak FLEXCOMM6_IRQHandler
465    .type FLEXCOMM6_IRQHandler, %function
466FLEXCOMM6_IRQHandler:
467    ldr   r0,=FLEXCOMM6_DriverIRQHandler
468    bx    r0
469    .size FLEXCOMM6_IRQHandler, . - FLEXCOMM6_IRQHandler
470
471    .align 1
472    .thumb_func
473    .weak FLEXCOMM7_IRQHandler
474    .type FLEXCOMM7_IRQHandler, %function
475FLEXCOMM7_IRQHandler:
476    ldr   r0,=FLEXCOMM7_DriverIRQHandler
477    bx    r0
478    .size FLEXCOMM7_IRQHandler, . - FLEXCOMM7_IRQHandler
479
480    .align 1
481    .thumb_func
482    .weak ADC0_SEQA_IRQHandler
483    .type ADC0_SEQA_IRQHandler, %function
484ADC0_SEQA_IRQHandler:
485    ldr   r0,=ADC0_SEQA_DriverIRQHandler
486    bx    r0
487    .size ADC0_SEQA_IRQHandler, . - ADC0_SEQA_IRQHandler
488
489    .align 1
490    .thumb_func
491    .weak ADC0_SEQB_IRQHandler
492    .type ADC0_SEQB_IRQHandler, %function
493ADC0_SEQB_IRQHandler:
494    ldr   r0,=ADC0_SEQB_DriverIRQHandler
495    bx    r0
496    .size ADC0_SEQB_IRQHandler, . - ADC0_SEQB_IRQHandler
497
498    .align 1
499    .thumb_func
500    .weak ADC0_THCMP_IRQHandler
501    .type ADC0_THCMP_IRQHandler, %function
502ADC0_THCMP_IRQHandler:
503    ldr   r0,=ADC0_THCMP_DriverIRQHandler
504    bx    r0
505    .size ADC0_THCMP_IRQHandler, . - ADC0_THCMP_IRQHandler
506
507    .align 1
508    .thumb_func
509    .weak DMIC0_IRQHandler
510    .type DMIC0_IRQHandler, %function
511DMIC0_IRQHandler:
512    ldr   r0,=DMIC0_DriverIRQHandler
513    bx    r0
514    .size DMIC0_IRQHandler, . - DMIC0_IRQHandler
515
516    .align 1
517    .thumb_func
518    .weak HWVAD0_IRQHandler
519    .type HWVAD0_IRQHandler, %function
520HWVAD0_IRQHandler:
521    ldr   r0,=HWVAD0_DriverIRQHandler
522    bx    r0
523    .size HWVAD0_IRQHandler, . - HWVAD0_IRQHandler
524
525    .align 1
526    .thumb_func
527    .weak USB0_NEEDCLK_IRQHandler
528    .type USB0_NEEDCLK_IRQHandler, %function
529USB0_NEEDCLK_IRQHandler:
530    ldr   r0,=USB0_NEEDCLK_DriverIRQHandler
531    bx    r0
532    .size USB0_NEEDCLK_IRQHandler, . - USB0_NEEDCLK_IRQHandler
533
534    .align 1
535    .thumb_func
536    .weak USB0_IRQHandler
537    .type USB0_IRQHandler, %function
538USB0_IRQHandler:
539    ldr   r0,=USB0_DriverIRQHandler
540    bx    r0
541    .size USB0_IRQHandler, . - USB0_IRQHandler
542
543    .align 1
544    .thumb_func
545    .weak RTC_IRQHandler
546    .type RTC_IRQHandler, %function
547RTC_IRQHandler:
548    ldr   r0,=RTC_DriverIRQHandler
549    bx    r0
550    .size RTC_IRQHandler, . - RTC_IRQHandler
551
552    .align 1
553    .thumb_func
554    .weak Reserved46_IRQHandler
555    .type Reserved46_IRQHandler, %function
556Reserved46_IRQHandler:
557    ldr   r0,=Reserved46_DriverIRQHandler
558    bx    r0
559    .size Reserved46_IRQHandler, . - Reserved46_IRQHandler
560
561    .align 1
562    .thumb_func
563    .weak Reserved47_IRQHandler
564    .type Reserved47_IRQHandler, %function
565Reserved47_IRQHandler:
566    ldr   r0,=Reserved47_DriverIRQHandler
567    bx    r0
568    .size Reserved47_IRQHandler, . - Reserved47_IRQHandler
569
570    .align 1
571    .thumb_func
572    .weak PIN_INT4_IRQHandler
573    .type PIN_INT4_IRQHandler, %function
574PIN_INT4_IRQHandler:
575    ldr   r0,=PIN_INT4_DriverIRQHandler
576    bx    r0
577    .size PIN_INT4_IRQHandler, . - PIN_INT4_IRQHandler
578
579    .align 1
580    .thumb_func
581    .weak PIN_INT5_IRQHandler
582    .type PIN_INT5_IRQHandler, %function
583PIN_INT5_IRQHandler:
584    ldr   r0,=PIN_INT5_DriverIRQHandler
585    bx    r0
586    .size PIN_INT5_IRQHandler, . - PIN_INT5_IRQHandler
587
588    .align 1
589    .thumb_func
590    .weak PIN_INT6_IRQHandler
591    .type PIN_INT6_IRQHandler, %function
592PIN_INT6_IRQHandler:
593    ldr   r0,=PIN_INT6_DriverIRQHandler
594    bx    r0
595    .size PIN_INT6_IRQHandler, . - PIN_INT6_IRQHandler
596
597    .align 1
598    .thumb_func
599    .weak PIN_INT7_IRQHandler
600    .type PIN_INT7_IRQHandler, %function
601PIN_INT7_IRQHandler:
602    ldr   r0,=PIN_INT7_DriverIRQHandler
603    bx    r0
604    .size PIN_INT7_IRQHandler, . - PIN_INT7_IRQHandler
605
606    .align 1
607    .thumb_func
608    .weak CTIMER2_IRQHandler
609    .type CTIMER2_IRQHandler, %function
610CTIMER2_IRQHandler:
611    ldr   r0,=CTIMER2_DriverIRQHandler
612    bx    r0
613    .size CTIMER2_IRQHandler, . - CTIMER2_IRQHandler
614
615    .align 1
616    .thumb_func
617    .weak CTIMER4_IRQHandler
618    .type CTIMER4_IRQHandler, %function
619CTIMER4_IRQHandler:
620    ldr   r0,=CTIMER4_DriverIRQHandler
621    bx    r0
622    .size CTIMER4_IRQHandler, . - CTIMER4_IRQHandler
623
624    .align 1
625    .thumb_func
626    .weak RIT_IRQHandler
627    .type RIT_IRQHandler, %function
628RIT_IRQHandler:
629    ldr   r0,=RIT_DriverIRQHandler
630    bx    r0
631    .size RIT_IRQHandler, . - RIT_IRQHandler
632
633    .align 1
634    .thumb_func
635    .weak SPIFI0_IRQHandler
636    .type SPIFI0_IRQHandler, %function
637SPIFI0_IRQHandler:
638    ldr   r0,=SPIFI0_DriverIRQHandler
639    bx    r0
640    .size SPIFI0_IRQHandler, . - SPIFI0_IRQHandler
641
642    .align 1
643    .thumb_func
644    .weak FLEXCOMM8_IRQHandler
645    .type FLEXCOMM8_IRQHandler, %function
646FLEXCOMM8_IRQHandler:
647    ldr   r0,=FLEXCOMM8_DriverIRQHandler
648    bx    r0
649    .size FLEXCOMM8_IRQHandler, . - FLEXCOMM8_IRQHandler
650
651    .align 1
652    .thumb_func
653    .weak FLEXCOMM9_IRQHandler
654    .type FLEXCOMM9_IRQHandler, %function
655FLEXCOMM9_IRQHandler:
656    ldr   r0,=FLEXCOMM9_DriverIRQHandler
657    bx    r0
658    .size FLEXCOMM9_IRQHandler, . - FLEXCOMM9_IRQHandler
659
660    .align 1
661    .thumb_func
662    .weak SDIO_IRQHandler
663    .type SDIO_IRQHandler, %function
664SDIO_IRQHandler:
665    ldr   r0,=SDIO_DriverIRQHandler
666    bx    r0
667    .size SDIO_IRQHandler, . - SDIO_IRQHandler
668
669    .align 1
670    .thumb_func
671    .weak CAN0_IRQ0_IRQHandler
672    .type CAN0_IRQ0_IRQHandler, %function
673CAN0_IRQ0_IRQHandler:
674    ldr   r0,=CAN0_IRQ0_DriverIRQHandler
675    bx    r0
676    .size CAN0_IRQ0_IRQHandler, . - CAN0_IRQ0_IRQHandler
677
678    .align 1
679    .thumb_func
680    .weak CAN0_IRQ1_IRQHandler
681    .type CAN0_IRQ1_IRQHandler, %function
682CAN0_IRQ1_IRQHandler:
683    ldr   r0,=CAN0_IRQ1_DriverIRQHandler
684    bx    r0
685    .size CAN0_IRQ1_IRQHandler, . - CAN0_IRQ1_IRQHandler
686
687    .align 1
688    .thumb_func
689    .weak CAN1_IRQ0_IRQHandler
690    .type CAN1_IRQ0_IRQHandler, %function
691CAN1_IRQ0_IRQHandler:
692    ldr   r0,=CAN1_IRQ0_DriverIRQHandler
693    bx    r0
694    .size CAN1_IRQ0_IRQHandler, . - CAN1_IRQ0_IRQHandler
695
696    .align 1
697    .thumb_func
698    .weak CAN1_IRQ1_IRQHandler
699    .type CAN1_IRQ1_IRQHandler, %function
700CAN1_IRQ1_IRQHandler:
701    ldr   r0,=CAN1_IRQ1_DriverIRQHandler
702    bx    r0
703    .size CAN1_IRQ1_IRQHandler, . - CAN1_IRQ1_IRQHandler
704
705    .align 1
706    .thumb_func
707    .weak USB1_IRQHandler
708    .type USB1_IRQHandler, %function
709USB1_IRQHandler:
710    ldr   r0,=USB1_DriverIRQHandler
711    bx    r0
712    .size USB1_IRQHandler, . - USB1_IRQHandler
713
714    .align 1
715    .thumb_func
716    .weak USB1_NEEDCLK_IRQHandler
717    .type USB1_NEEDCLK_IRQHandler, %function
718USB1_NEEDCLK_IRQHandler:
719    ldr   r0,=USB1_NEEDCLK_DriverIRQHandler
720    bx    r0
721    .size USB1_NEEDCLK_IRQHandler, . - USB1_NEEDCLK_IRQHandler
722
723    .align 1
724    .thumb_func
725    .weak ETHERNET_IRQHandler
726    .type ETHERNET_IRQHandler, %function
727ETHERNET_IRQHandler:
728    ldr   r0,=ETHERNET_DriverIRQHandler
729    bx    r0
730    .size ETHERNET_IRQHandler, . - ETHERNET_IRQHandler
731
732    .align 1
733    .thumb_func
734    .weak ETHERNET_PMT_IRQHandler
735    .type ETHERNET_PMT_IRQHandler, %function
736ETHERNET_PMT_IRQHandler:
737    ldr   r0,=ETHERNET_PMT_DriverIRQHandler
738    bx    r0
739    .size ETHERNET_PMT_IRQHandler, . - ETHERNET_PMT_IRQHandler
740
741    .align 1
742    .thumb_func
743    .weak ETHERNET_MACLP_IRQHandler
744    .type ETHERNET_MACLP_IRQHandler, %function
745ETHERNET_MACLP_IRQHandler:
746    ldr   r0,=ETHERNET_MACLP_DriverIRQHandler
747    bx    r0
748    .size ETHERNET_MACLP_IRQHandler, . - ETHERNET_MACLP_IRQHandler
749
750    .align 1
751    .thumb_func
752    .weak EEPROM_IRQHandler
753    .type EEPROM_IRQHandler, %function
754EEPROM_IRQHandler:
755    ldr   r0,=EEPROM_DriverIRQHandler
756    bx    r0
757    .size EEPROM_IRQHandler, . - EEPROM_IRQHandler
758
759    .align 1
760    .thumb_func
761    .weak LCD_IRQHandler
762    .type LCD_IRQHandler, %function
763LCD_IRQHandler:
764    ldr   r0,=LCD_DriverIRQHandler
765    bx    r0
766    .size LCD_IRQHandler, . - LCD_IRQHandler
767
768    .align 1
769    .thumb_func
770    .weak SHA_IRQHandler
771    .type SHA_IRQHandler, %function
772SHA_IRQHandler:
773    ldr   r0,=SHA_DriverIRQHandler
774    bx    r0
775    .size SHA_IRQHandler, . - SHA_IRQHandler
776
777    .align 1
778    .thumb_func
779    .weak SMARTCARD0_IRQHandler
780    .type SMARTCARD0_IRQHandler, %function
781SMARTCARD0_IRQHandler:
782    ldr   r0,=SMARTCARD0_DriverIRQHandler
783    bx    r0
784    .size SMARTCARD0_IRQHandler, . - SMARTCARD0_IRQHandler
785
786    .align 1
787    .thumb_func
788    .weak SMARTCARD1_IRQHandler
789    .type SMARTCARD1_IRQHandler, %function
790SMARTCARD1_IRQHandler:
791    ldr   r0,=SMARTCARD1_DriverIRQHandler
792    bx    r0
793    .size SMARTCARD1_IRQHandler, . - SMARTCARD1_IRQHandler
794
795/*    Macro to define default handlers. Default handler
796 *    will be weak symbol and just dead loops. They can be
797 *    overwritten by other handlers */
798    .macro def_irq_handler  handler_name
799    .weak \handler_name
800    .set  \handler_name, DefaultISR
801    .endm
802/* Exception Handlers */
803    def_irq_handler    WDT_BOD_DriverIRQHandler                 /* Windowed watchdog timer, Brownout detect */
804    def_irq_handler    DMA0_DriverIRQHandler                 /* DMA controller */
805    def_irq_handler    GINT0_DriverIRQHandler                 /* GPIO group 0 */
806    def_irq_handler    GINT1_DriverIRQHandler                 /* GPIO group 1 */
807    def_irq_handler    PIN_INT0_DriverIRQHandler                 /* Pin interrupt 0 or pattern match engine slice 0 */
808    def_irq_handler    PIN_INT1_DriverIRQHandler                 /* Pin interrupt 1or pattern match engine slice 1 */
809    def_irq_handler    PIN_INT2_DriverIRQHandler                 /* Pin interrupt 2 or pattern match engine slice 2 */
810    def_irq_handler    PIN_INT3_DriverIRQHandler                 /* Pin interrupt 3 or pattern match engine slice 3 */
811    def_irq_handler    UTICK0_DriverIRQHandler                 /* Micro-tick Timer */
812    def_irq_handler    MRT0_DriverIRQHandler                 /* Multi-rate timer */
813    def_irq_handler    CTIMER0_DriverIRQHandler                 /* Standard counter/timer CTIMER0 */
814    def_irq_handler    CTIMER1_DriverIRQHandler                 /* Standard counter/timer CTIMER1 */
815    def_irq_handler    SCT0_DriverIRQHandler                 /* SCTimer/PWM */
816    def_irq_handler    CTIMER3_DriverIRQHandler                 /* Standard counter/timer CTIMER3 */
817    def_irq_handler    FLEXCOMM0_DriverIRQHandler                 /* Flexcomm Interface 0 (USART, SPI, I2C, FLEXCOMM) */
818    def_irq_handler    FLEXCOMM1_DriverIRQHandler                 /* Flexcomm Interface 1 (USART, SPI, I2C, FLEXCOMM) */
819    def_irq_handler    FLEXCOMM2_DriverIRQHandler                 /* Flexcomm Interface 2 (USART, SPI, I2C, FLEXCOMM) */
820    def_irq_handler    FLEXCOMM3_DriverIRQHandler                 /* Flexcomm Interface 3 (USART, SPI, I2C, FLEXCOMM) */
821    def_irq_handler    FLEXCOMM4_DriverIRQHandler                 /* Flexcomm Interface 4 (USART, SPI, I2C, FLEXCOMM) */
822    def_irq_handler    FLEXCOMM5_DriverIRQHandler                 /* Flexcomm Interface 5 (USART, SPI, I2C,, FLEXCOMM) */
823    def_irq_handler    FLEXCOMM6_DriverIRQHandler                 /* Flexcomm Interface 6 (USART, SPI, I2C, I2S,, FLEXCOMM) */
824    def_irq_handler    FLEXCOMM7_DriverIRQHandler                 /* Flexcomm Interface 7 (USART, SPI, I2C, I2S,, FLEXCOMM) */
825    def_irq_handler    ADC0_SEQA_DriverIRQHandler                 /* ADC0 sequence A completion. */
826    def_irq_handler    ADC0_SEQB_DriverIRQHandler                 /* ADC0 sequence B completion. */
827    def_irq_handler    ADC0_THCMP_DriverIRQHandler                 /* ADC0 threshold compare and error. */
828    def_irq_handler    DMIC0_DriverIRQHandler                 /* Digital microphone and DMIC subsystem */
829    def_irq_handler    HWVAD0_DriverIRQHandler                 /* Hardware Voice Activity Detector */
830    def_irq_handler    USB0_NEEDCLK_DriverIRQHandler                 /* USB Activity Wake-up Interrupt */
831    def_irq_handler    USB0_DriverIRQHandler                 /* USB device */
832    def_irq_handler    RTC_DriverIRQHandler                 /* RTC alarm and wake-up interrupts */
833    def_irq_handler    Reserved46_DriverIRQHandler                 /* Reserved interrupt */
834    def_irq_handler    Reserved47_DriverIRQHandler                 /* Reserved interrupt */
835    def_irq_handler    PIN_INT4_DriverIRQHandler                 /* Pin interrupt 4 or pattern match engine slice 4 int */
836    def_irq_handler    PIN_INT5_DriverIRQHandler                 /* Pin interrupt 5 or pattern match engine slice 5 int */
837    def_irq_handler    PIN_INT6_DriverIRQHandler                 /* Pin interrupt 6 or pattern match engine slice 6 int */
838    def_irq_handler    PIN_INT7_DriverIRQHandler                 /* Pin interrupt 7 or pattern match engine slice 7 int */
839    def_irq_handler    CTIMER2_DriverIRQHandler                 /* Standard counter/timer CTIMER2 */
840    def_irq_handler    CTIMER4_DriverIRQHandler                 /* Standard counter/timer CTIMER4 */
841    def_irq_handler    RIT_DriverIRQHandler                 /* Repetitive Interrupt Timer */
842    def_irq_handler    SPIFI0_DriverIRQHandler                 /* SPI flash interface */
843    def_irq_handler    FLEXCOMM8_DriverIRQHandler                 /* Flexcomm Interface 8 (USART, SPI, I2C, FLEXCOMM) */
844    def_irq_handler    FLEXCOMM9_DriverIRQHandler                 /* Flexcomm Interface 9 (USART, SPI, I2C, FLEXCOMM) */
845    def_irq_handler    SDIO_DriverIRQHandler                 /* SD/MMC  */
846    def_irq_handler    CAN0_IRQ0_DriverIRQHandler                 /* CAN0 interrupt0 */
847    def_irq_handler    CAN0_IRQ1_DriverIRQHandler                 /* CAN0 interrupt1 */
848    def_irq_handler    CAN1_IRQ0_DriverIRQHandler                 /* CAN1 interrupt0 */
849    def_irq_handler    CAN1_IRQ1_DriverIRQHandler                 /* CAN1 interrupt1 */
850    def_irq_handler    USB1_DriverIRQHandler                 /* USB1 interrupt */
851    def_irq_handler    USB1_NEEDCLK_DriverIRQHandler                 /* USB1 activity */
852    def_irq_handler    ETHERNET_DriverIRQHandler                 /* Ethernet */
853    def_irq_handler    ETHERNET_PMT_DriverIRQHandler                 /* Ethernet power management interrupt */
854    def_irq_handler    ETHERNET_MACLP_DriverIRQHandler                 /* Ethernet MAC interrupt */
855    def_irq_handler    EEPROM_DriverIRQHandler                 /* EEPROM interrupt */
856    def_irq_handler    LCD_DriverIRQHandler                 /* LCD interrupt */
857    def_irq_handler    SHA_DriverIRQHandler                 /* SHA interrupt */
858    def_irq_handler    SMARTCARD0_DriverIRQHandler                 /* Smart card 0 interrupt */
859    def_irq_handler    SMARTCARD1_DriverIRQHandler                 /* Smart card 1 interrupt */
860
861    .end
862