1/* --------------------------------------------------------------------------*/
2/* @file:    startup_LPC54018.S                                                */
3/* @purpose: CMSIS Cortex-M4 Core Device Startup File                        */
4/*           LPC54018                                                          */
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   0                                               /* Reserved*/
35    .long   0xEDDC94BD                                      /* Enhanced image marker, set to 0x0 for legacy boot */
36    .long   0x160                                           /* Pointer to enhanced boot block, set to 0x0 for legacy boot */
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   FLEXCOMM10_IRQHandler                     /* Flexcomm Interface 10 (SPI, FLEXCOMM) */
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   Reserved68_IRQHandler                     /* Reserved 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    .long   0                                               /* Reserved */
105    .long   0                                               /* Reserved */
106    .long   0                                               /* Reserved */
107    .long   0                                               /* Reserved */
108    .long   0                                               /* Reserved */
109    .long   0                                               /* Reserved */
110    .long   0                                               /* Reserved */
111    .long   0                                               /* Reserved */
112    .long   0                                               /* Reserved */
113    .long   0                                               /* Reserved */
114    .long   0                                               /* Reserved */
115    .long   0                                               /* Reserved */
116    .long   0                                               /* Reserved */
117    .long   0                                               /* Reserved */
118    .long   0                                               /* Reserved */
119
120#ifndef IMG_BAUDRATE
121#define IMG_BAUDRATE 0
122#endif
123
124__image_header:
125    .long   0xFEEDA5A5                                      /* (0x00, 0x160) Header Marker */
126    #ifdef XIP_IMAGE
127          #ifdef ADD_CRC
128          .long   0x2                                       /* (0x04) Image Type */
129          #else
130          .long   0x3                                       /* (0x04) Image Type */
131          #endif
132    #else
133          #ifdef ADD_CRC
134          .long   0x0                                       /* (0x04) Image Type */
135          #else
136          .long   0x1                                       /* (0x04) Image Type */
137          #endif
138    #endif
139
140    #ifdef XIP_IMAGE
141          .long   0x10000000                                /* (0x08) Load_address */
142    #else
143          .long   0x00000000                                /* (0x08) Load_address */
144    #endif
145    .long   __IMAGE_SIZE - 4                                /* (0x0C) load_length, exclude 4 bytes CRC field */
146    .long   0                                               /* (0x10) CRC value (only applicable to NON Non-secure images) */
147    .long   0                                               /* (0x14) Version (only applicable to DUAL_ENH image type */
148    .long   0                                               /* (0x18) EMC static memory configuration settings, required for EMC boot */
149    .long   IMG_BAUDRATE                                    /* image baudrate */
150    .long   0                                               /* Reserved */
151    .long   0xEDDC94BD                                      /* (0x24) Image_marker */
152    .long   0                                               /* (0x28) SBZ */
153    .long   0                                               /* (0x2C) reserved */
154     #ifdef W25Q128JVFM
155     /* SPI Descriptor - W25Q128JVFM */
156    .long   0x00000000                                      /* 0xFFFFFFFF to default 1-bit SPI mode   ;DevStrAdr */
157    .long   0x001870EF                                      /* mfgId + extCount */
158    .long   0x00000000                                      /* extid 0-3 */
159    .long   0x00000000                                      /* extid 4-7 */
160    .long   0x0001001D                                      /* caps */
161    .long   0x00000100                                      /* Blks + RESV1 */
162    .long   0x00010000                                      /* blkSize */
163    .long   0x00000000                                      /* subBlks + subBlkSize */
164    .long   0x00000100                                      /* pageSize + RESV2 */
165    .long   0x00003F00                                      /* maxReadSize */
166    .long   0x68506850                                      /* maxClkRate,maxReadRate,maxHSReadRate,maxProgramRate */
167    .long   0x04030050                                      /* maxHSProgramRate,initDeInitFxId,clearStatusFxId,getStatusFxId, */
168    .long   0x14110D09                                      /* setStatusFxId,setOptionsFxId,getReadCmdFxId,getWriteCmdFxId */
169    #endif
170
171     #ifdef MXL12835F
172     /* SPI Descriptor - MXL12835F */
173    .long   0x00000000                                      /* 0xFFFFFFFF to default 1-bit SPI mode  ;DevStrAdr */
174    .long   0x001820C2                                      /* mfgId + extCount */
175    .long   0x00000000                                      /* extid 0-3 */
176    .long   0x00000000                                      /* extid 4-7 */
177    .long   0x0001001D                                      /* caps */
178    .long   0x00000100                                      /* Blks + RESV1 */
179    .long   0x00010000                                      /* blkSize */
180    .long   0x00000000                                      /* subBlks + subBlkSize */
181    .long   0x00000100                                      /* pageSize + RESV2 */
182    .long   0x00003F00                                      /* maxReadSize */
183    .long   0x68506850                                      /* maxClkRate,maxReadRate,maxHSReadRate,maxProgramRate */
184    .long   0x06030050                                      /* maxHSProgramRate,initDeInitFxId,clearStatusFxId,getStatusFxId */
185    .long   0x14110F0B                                      /* setStatusFxId,setOptionsFxId,getReadCmdFxId,getWriteCmdFxId */
186    #endif
187    .text
188    .thumb
189
190/* Reset Handler */
191    .thumb_func
192    .align 2
193    .globl   Reset_Handler
194    .weak    Reset_Handler
195    .type    Reset_Handler, %function
196Reset_Handler:
197
198#ifndef __NO_SYSTEM_INIT
199    movs  r0,#56
200    ldr   r1, =0x40000220
201    str   r0, [r1]           /* Enable SRAM clock used by Stack */
202    ldr   r0,=SystemInit
203    blx   r0
204#endif
205/*     Loop to copy data from read only memory to RAM. The ranges
206 *      of copy from/to are specified by following symbols evaluated in
207 *      linker script.
208 *      __etext: End of code section, i.e., begin of data sections to copy from.
209 *      __data_start__/__data_end__: RAM address range that data should be
210 *      copied to. Both must be aligned to 4 bytes boundary.  */
211
212    ldr    r1, =__etext
213    ldr    r2, =__data_start__
214    ldr    r3, =__data_end__
215
216#if 1
217/* Here are two copies of loop implemenations. First one favors code size
218 * and the second one favors performance. Default uses the first one.
219 * Change to "#if 0" to use the second one */
220.LC0:
221    cmp     r2, r3
222    ittt    lt
223    ldrlt   r0, [r1], #4
224    strlt   r0, [r2], #4
225    blt    .LC0
226#else
227    subs    r3, r2
228    ble    .LC1
229.LC0:
230    subs    r3, #4
231    ldr    r0, [r1, r3]
232    str    r0, [r2, r3]
233    bgt    .LC0
234.LC1:
235#endif
236
237#ifdef __STARTUP_CLEAR_BSS
238/*     This part of work usually is done in C library startup code. Otherwise,
239 *     define this macro to enable it in this startup.
240 *
241 *     Loop to zero out BSS section, which uses following symbols
242 *     in linker script:
243 *      __bss_start__: start of BSS section. Must align to 4
244 *      __bss_end__: end of BSS section. Must align to 4
245 */
246    ldr r1, =__bss_start__
247    ldr r2, =__bss_end__
248
249    movs    r0, 0
250.LC2:
251    cmp     r1, r2
252    itt    lt
253    strlt   r0, [r1], #4
254    blt    .LC2
255#endif /* __STARTUP_CLEAR_BSS */
256
257#ifndef __START
258#define __START _start
259#endif
260#ifndef __ATOLLIC__
261    ldr   r0,=__START
262    blx   r0
263#else
264    ldr   r0,=__libc_init_array
265    blx   r0
266    ldr   r0,=main
267    bx    r0
268#endif
269    .pool
270    .size Reset_Handler, . - Reset_Handler
271
272    .align  1
273    .thumb_func
274    .weak DefaultISR
275    .type DefaultISR, %function
276DefaultISR:
277    b DefaultISR
278    .size DefaultISR, . - DefaultISR
279
280    .align 1
281    .thumb_func
282    .weak NMI_Handler
283    .type NMI_Handler, %function
284NMI_Handler:
285    ldr   r0,=NMI_Handler
286    bx    r0
287    .size NMI_Handler, . - NMI_Handler
288
289    .align 1
290    .thumb_func
291    .weak HardFault_Handler
292    .type HardFault_Handler, %function
293HardFault_Handler:
294    ldr   r0,=HardFault_Handler
295    bx    r0
296    .size HardFault_Handler, . - HardFault_Handler
297
298    .align 1
299    .thumb_func
300    .weak SVC_Handler
301    .type SVC_Handler, %function
302SVC_Handler:
303    ldr   r0,=SVC_Handler
304    bx    r0
305    .size SVC_Handler, . - SVC_Handler
306
307    .align 1
308    .thumb_func
309    .weak PendSV_Handler
310    .type PendSV_Handler, %function
311PendSV_Handler:
312    ldr   r0,=PendSV_Handler
313    bx    r0
314    .size PendSV_Handler, . - PendSV_Handler
315
316    .align 1
317    .thumb_func
318    .weak SysTick_Handler
319    .type SysTick_Handler, %function
320SysTick_Handler:
321    ldr   r0,=SysTick_Handler
322    bx    r0
323    .size SysTick_Handler, . - SysTick_Handler
324
325    .align 1
326    .thumb_func
327    .weak WDT_BOD_IRQHandler
328    .type WDT_BOD_IRQHandler, %function
329WDT_BOD_IRQHandler:
330    ldr   r0,=WDT_BOD_DriverIRQHandler
331    bx    r0
332    .size WDT_BOD_IRQHandler, . - WDT_BOD_IRQHandler
333
334    .align 1
335    .thumb_func
336    .weak DMA0_IRQHandler
337    .type DMA0_IRQHandler, %function
338DMA0_IRQHandler:
339    ldr   r0,=DMA0_DriverIRQHandler
340    bx    r0
341    .size DMA0_IRQHandler, . - DMA0_IRQHandler
342
343    .align 1
344    .thumb_func
345    .weak GINT0_IRQHandler
346    .type GINT0_IRQHandler, %function
347GINT0_IRQHandler:
348    ldr   r0,=GINT0_DriverIRQHandler
349    bx    r0
350    .size GINT0_IRQHandler, . - GINT0_IRQHandler
351
352    .align 1
353    .thumb_func
354    .weak GINT1_IRQHandler
355    .type GINT1_IRQHandler, %function
356GINT1_IRQHandler:
357    ldr   r0,=GINT1_DriverIRQHandler
358    bx    r0
359    .size GINT1_IRQHandler, . - GINT1_IRQHandler
360
361    .align 1
362    .thumb_func
363    .weak PIN_INT0_IRQHandler
364    .type PIN_INT0_IRQHandler, %function
365PIN_INT0_IRQHandler:
366    ldr   r0,=PIN_INT0_DriverIRQHandler
367    bx    r0
368    .size PIN_INT0_IRQHandler, . - PIN_INT0_IRQHandler
369
370    .align 1
371    .thumb_func
372    .weak PIN_INT1_IRQHandler
373    .type PIN_INT1_IRQHandler, %function
374PIN_INT1_IRQHandler:
375    ldr   r0,=PIN_INT1_DriverIRQHandler
376    bx    r0
377    .size PIN_INT1_IRQHandler, . - PIN_INT1_IRQHandler
378
379    .align 1
380    .thumb_func
381    .weak PIN_INT2_IRQHandler
382    .type PIN_INT2_IRQHandler, %function
383PIN_INT2_IRQHandler:
384    ldr   r0,=PIN_INT2_DriverIRQHandler
385    bx    r0
386    .size PIN_INT2_IRQHandler, . - PIN_INT2_IRQHandler
387
388    .align 1
389    .thumb_func
390    .weak PIN_INT3_IRQHandler
391    .type PIN_INT3_IRQHandler, %function
392PIN_INT3_IRQHandler:
393    ldr   r0,=PIN_INT3_DriverIRQHandler
394    bx    r0
395    .size PIN_INT3_IRQHandler, . - PIN_INT3_IRQHandler
396
397    .align 1
398    .thumb_func
399    .weak UTICK0_IRQHandler
400    .type UTICK0_IRQHandler, %function
401UTICK0_IRQHandler:
402    ldr   r0,=UTICK0_DriverIRQHandler
403    bx    r0
404    .size UTICK0_IRQHandler, . - UTICK0_IRQHandler
405
406    .align 1
407    .thumb_func
408    .weak MRT0_IRQHandler
409    .type MRT0_IRQHandler, %function
410MRT0_IRQHandler:
411    ldr   r0,=MRT0_DriverIRQHandler
412    bx    r0
413    .size MRT0_IRQHandler, . - MRT0_IRQHandler
414
415    .align 1
416    .thumb_func
417    .weak CTIMER0_IRQHandler
418    .type CTIMER0_IRQHandler, %function
419CTIMER0_IRQHandler:
420    ldr   r0,=CTIMER0_DriverIRQHandler
421    bx    r0
422    .size CTIMER0_IRQHandler, . - CTIMER0_IRQHandler
423
424    .align 1
425    .thumb_func
426    .weak CTIMER1_IRQHandler
427    .type CTIMER1_IRQHandler, %function
428CTIMER1_IRQHandler:
429    ldr   r0,=CTIMER1_DriverIRQHandler
430    bx    r0
431    .size CTIMER1_IRQHandler, . - CTIMER1_IRQHandler
432
433    .align 1
434    .thumb_func
435    .weak SCT0_IRQHandler
436    .type SCT0_IRQHandler, %function
437SCT0_IRQHandler:
438    ldr   r0,=SCT0_DriverIRQHandler
439    bx    r0
440    .size SCT0_IRQHandler, . - SCT0_IRQHandler
441
442    .align 1
443    .thumb_func
444    .weak CTIMER3_IRQHandler
445    .type CTIMER3_IRQHandler, %function
446CTIMER3_IRQHandler:
447    ldr   r0,=CTIMER3_DriverIRQHandler
448    bx    r0
449    .size CTIMER3_IRQHandler, . - CTIMER3_IRQHandler
450
451    .align 1
452    .thumb_func
453    .weak FLEXCOMM0_IRQHandler
454    .type FLEXCOMM0_IRQHandler, %function
455FLEXCOMM0_IRQHandler:
456    ldr   r0,=FLEXCOMM0_DriverIRQHandler
457    bx    r0
458    .size FLEXCOMM0_IRQHandler, . - FLEXCOMM0_IRQHandler
459
460    .align 1
461    .thumb_func
462    .weak FLEXCOMM1_IRQHandler
463    .type FLEXCOMM1_IRQHandler, %function
464FLEXCOMM1_IRQHandler:
465    ldr   r0,=FLEXCOMM1_DriverIRQHandler
466    bx    r0
467    .size FLEXCOMM1_IRQHandler, . - FLEXCOMM1_IRQHandler
468
469    .align 1
470    .thumb_func
471    .weak FLEXCOMM2_IRQHandler
472    .type FLEXCOMM2_IRQHandler, %function
473FLEXCOMM2_IRQHandler:
474    ldr   r0,=FLEXCOMM2_DriverIRQHandler
475    bx    r0
476    .size FLEXCOMM2_IRQHandler, . - FLEXCOMM2_IRQHandler
477
478    .align 1
479    .thumb_func
480    .weak FLEXCOMM3_IRQHandler
481    .type FLEXCOMM3_IRQHandler, %function
482FLEXCOMM3_IRQHandler:
483    ldr   r0,=FLEXCOMM3_DriverIRQHandler
484    bx    r0
485    .size FLEXCOMM3_IRQHandler, . - FLEXCOMM3_IRQHandler
486
487    .align 1
488    .thumb_func
489    .weak FLEXCOMM4_IRQHandler
490    .type FLEXCOMM4_IRQHandler, %function
491FLEXCOMM4_IRQHandler:
492    ldr   r0,=FLEXCOMM4_DriverIRQHandler
493    bx    r0
494    .size FLEXCOMM4_IRQHandler, . - FLEXCOMM4_IRQHandler
495
496    .align 1
497    .thumb_func
498    .weak FLEXCOMM5_IRQHandler
499    .type FLEXCOMM5_IRQHandler, %function
500FLEXCOMM5_IRQHandler:
501    ldr   r0,=FLEXCOMM5_DriverIRQHandler
502    bx    r0
503    .size FLEXCOMM5_IRQHandler, . - FLEXCOMM5_IRQHandler
504
505    .align 1
506    .thumb_func
507    .weak FLEXCOMM6_IRQHandler
508    .type FLEXCOMM6_IRQHandler, %function
509FLEXCOMM6_IRQHandler:
510    ldr   r0,=FLEXCOMM6_DriverIRQHandler
511    bx    r0
512    .size FLEXCOMM6_IRQHandler, . - FLEXCOMM6_IRQHandler
513
514    .align 1
515    .thumb_func
516    .weak FLEXCOMM7_IRQHandler
517    .type FLEXCOMM7_IRQHandler, %function
518FLEXCOMM7_IRQHandler:
519    ldr   r0,=FLEXCOMM7_DriverIRQHandler
520    bx    r0
521    .size FLEXCOMM7_IRQHandler, . - FLEXCOMM7_IRQHandler
522
523    .align 1
524    .thumb_func
525    .weak ADC0_SEQA_IRQHandler
526    .type ADC0_SEQA_IRQHandler, %function
527ADC0_SEQA_IRQHandler:
528    ldr   r0,=ADC0_SEQA_DriverIRQHandler
529    bx    r0
530    .size ADC0_SEQA_IRQHandler, . - ADC0_SEQA_IRQHandler
531
532    .align 1
533    .thumb_func
534    .weak ADC0_SEQB_IRQHandler
535    .type ADC0_SEQB_IRQHandler, %function
536ADC0_SEQB_IRQHandler:
537    ldr   r0,=ADC0_SEQB_DriverIRQHandler
538    bx    r0
539    .size ADC0_SEQB_IRQHandler, . - ADC0_SEQB_IRQHandler
540
541    .align 1
542    .thumb_func
543    .weak ADC0_THCMP_IRQHandler
544    .type ADC0_THCMP_IRQHandler, %function
545ADC0_THCMP_IRQHandler:
546    ldr   r0,=ADC0_THCMP_DriverIRQHandler
547    bx    r0
548    .size ADC0_THCMP_IRQHandler, . - ADC0_THCMP_IRQHandler
549
550    .align 1
551    .thumb_func
552    .weak DMIC0_IRQHandler
553    .type DMIC0_IRQHandler, %function
554DMIC0_IRQHandler:
555    ldr   r0,=DMIC0_DriverIRQHandler
556    bx    r0
557    .size DMIC0_IRQHandler, . - DMIC0_IRQHandler
558
559    .align 1
560    .thumb_func
561    .weak HWVAD0_IRQHandler
562    .type HWVAD0_IRQHandler, %function
563HWVAD0_IRQHandler:
564    ldr   r0,=HWVAD0_DriverIRQHandler
565    bx    r0
566    .size HWVAD0_IRQHandler, . - HWVAD0_IRQHandler
567
568    .align 1
569    .thumb_func
570    .weak USB0_NEEDCLK_IRQHandler
571    .type USB0_NEEDCLK_IRQHandler, %function
572USB0_NEEDCLK_IRQHandler:
573    ldr   r0,=USB0_NEEDCLK_DriverIRQHandler
574    bx    r0
575    .size USB0_NEEDCLK_IRQHandler, . - USB0_NEEDCLK_IRQHandler
576
577    .align 1
578    .thumb_func
579    .weak USB0_IRQHandler
580    .type USB0_IRQHandler, %function
581USB0_IRQHandler:
582    ldr   r0,=USB0_DriverIRQHandler
583    bx    r0
584    .size USB0_IRQHandler, . - USB0_IRQHandler
585
586    .align 1
587    .thumb_func
588    .weak RTC_IRQHandler
589    .type RTC_IRQHandler, %function
590RTC_IRQHandler:
591    ldr   r0,=RTC_DriverIRQHandler
592    bx    r0
593    .size RTC_IRQHandler, . - RTC_IRQHandler
594
595    .align 1
596    .thumb_func
597    .weak FLEXCOMM10_IRQHandler
598    .type FLEXCOMM10_IRQHandler, %function
599FLEXCOMM10_IRQHandler:
600    ldr   r0,=FLEXCOMM10_DriverIRQHandler
601    bx    r0
602    .size FLEXCOMM10_IRQHandler, . - FLEXCOMM10_IRQHandler
603
604    .align 1
605    .thumb_func
606    .weak Reserved47_IRQHandler
607    .type Reserved47_IRQHandler, %function
608Reserved47_IRQHandler:
609    ldr   r0,=Reserved47_DriverIRQHandler
610    bx    r0
611    .size Reserved47_IRQHandler, . - Reserved47_IRQHandler
612
613    .align 1
614    .thumb_func
615    .weak PIN_INT4_IRQHandler
616    .type PIN_INT4_IRQHandler, %function
617PIN_INT4_IRQHandler:
618    ldr   r0,=PIN_INT4_DriverIRQHandler
619    bx    r0
620    .size PIN_INT4_IRQHandler, . - PIN_INT4_IRQHandler
621
622    .align 1
623    .thumb_func
624    .weak PIN_INT5_IRQHandler
625    .type PIN_INT5_IRQHandler, %function
626PIN_INT5_IRQHandler:
627    ldr   r0,=PIN_INT5_DriverIRQHandler
628    bx    r0
629    .size PIN_INT5_IRQHandler, . - PIN_INT5_IRQHandler
630
631    .align 1
632    .thumb_func
633    .weak PIN_INT6_IRQHandler
634    .type PIN_INT6_IRQHandler, %function
635PIN_INT6_IRQHandler:
636    ldr   r0,=PIN_INT6_DriverIRQHandler
637    bx    r0
638    .size PIN_INT6_IRQHandler, . - PIN_INT6_IRQHandler
639
640    .align 1
641    .thumb_func
642    .weak PIN_INT7_IRQHandler
643    .type PIN_INT7_IRQHandler, %function
644PIN_INT7_IRQHandler:
645    ldr   r0,=PIN_INT7_DriverIRQHandler
646    bx    r0
647    .size PIN_INT7_IRQHandler, . - PIN_INT7_IRQHandler
648
649    .align 1
650    .thumb_func
651    .weak CTIMER2_IRQHandler
652    .type CTIMER2_IRQHandler, %function
653CTIMER2_IRQHandler:
654    ldr   r0,=CTIMER2_DriverIRQHandler
655    bx    r0
656    .size CTIMER2_IRQHandler, . - CTIMER2_IRQHandler
657
658    .align 1
659    .thumb_func
660    .weak CTIMER4_IRQHandler
661    .type CTIMER4_IRQHandler, %function
662CTIMER4_IRQHandler:
663    ldr   r0,=CTIMER4_DriverIRQHandler
664    bx    r0
665    .size CTIMER4_IRQHandler, . - CTIMER4_IRQHandler
666
667    .align 1
668    .thumb_func
669    .weak RIT_IRQHandler
670    .type RIT_IRQHandler, %function
671RIT_IRQHandler:
672    ldr   r0,=RIT_DriverIRQHandler
673    bx    r0
674    .size RIT_IRQHandler, . - RIT_IRQHandler
675
676    .align 1
677    .thumb_func
678    .weak SPIFI0_IRQHandler
679    .type SPIFI0_IRQHandler, %function
680SPIFI0_IRQHandler:
681    ldr   r0,=SPIFI0_DriverIRQHandler
682    bx    r0
683    .size SPIFI0_IRQHandler, . - SPIFI0_IRQHandler
684
685    .align 1
686    .thumb_func
687    .weak FLEXCOMM8_IRQHandler
688    .type FLEXCOMM8_IRQHandler, %function
689FLEXCOMM8_IRQHandler:
690    ldr   r0,=FLEXCOMM8_DriverIRQHandler
691    bx    r0
692    .size FLEXCOMM8_IRQHandler, . - FLEXCOMM8_IRQHandler
693
694    .align 1
695    .thumb_func
696    .weak FLEXCOMM9_IRQHandler
697    .type FLEXCOMM9_IRQHandler, %function
698FLEXCOMM9_IRQHandler:
699    ldr   r0,=FLEXCOMM9_DriverIRQHandler
700    bx    r0
701    .size FLEXCOMM9_IRQHandler, . - FLEXCOMM9_IRQHandler
702
703    .align 1
704    .thumb_func
705    .weak SDIO_IRQHandler
706    .type SDIO_IRQHandler, %function
707SDIO_IRQHandler:
708    ldr   r0,=SDIO_DriverIRQHandler
709    bx    r0
710    .size SDIO_IRQHandler, . - SDIO_IRQHandler
711
712    .align 1
713    .thumb_func
714    .weak CAN0_IRQ0_IRQHandler
715    .type CAN0_IRQ0_IRQHandler, %function
716CAN0_IRQ0_IRQHandler:
717    ldr   r0,=CAN0_IRQ0_DriverIRQHandler
718    bx    r0
719    .size CAN0_IRQ0_IRQHandler, . - CAN0_IRQ0_IRQHandler
720
721    .align 1
722    .thumb_func
723    .weak CAN0_IRQ1_IRQHandler
724    .type CAN0_IRQ1_IRQHandler, %function
725CAN0_IRQ1_IRQHandler:
726    ldr   r0,=CAN0_IRQ1_DriverIRQHandler
727    bx    r0
728    .size CAN0_IRQ1_IRQHandler, . - CAN0_IRQ1_IRQHandler
729
730    .align 1
731    .thumb_func
732    .weak CAN1_IRQ0_IRQHandler
733    .type CAN1_IRQ0_IRQHandler, %function
734CAN1_IRQ0_IRQHandler:
735    ldr   r0,=CAN1_IRQ0_DriverIRQHandler
736    bx    r0
737    .size CAN1_IRQ0_IRQHandler, . - CAN1_IRQ0_IRQHandler
738
739    .align 1
740    .thumb_func
741    .weak CAN1_IRQ1_IRQHandler
742    .type CAN1_IRQ1_IRQHandler, %function
743CAN1_IRQ1_IRQHandler:
744    ldr   r0,=CAN1_IRQ1_DriverIRQHandler
745    bx    r0
746    .size CAN1_IRQ1_IRQHandler, . - CAN1_IRQ1_IRQHandler
747
748    .align 1
749    .thumb_func
750    .weak USB1_IRQHandler
751    .type USB1_IRQHandler, %function
752USB1_IRQHandler:
753    ldr   r0,=USB1_DriverIRQHandler
754    bx    r0
755    .size USB1_IRQHandler, . - USB1_IRQHandler
756
757    .align 1
758    .thumb_func
759    .weak USB1_NEEDCLK_IRQHandler
760    .type USB1_NEEDCLK_IRQHandler, %function
761USB1_NEEDCLK_IRQHandler:
762    ldr   r0,=USB1_NEEDCLK_DriverIRQHandler
763    bx    r0
764    .size USB1_NEEDCLK_IRQHandler, . - USB1_NEEDCLK_IRQHandler
765
766    .align 1
767    .thumb_func
768    .weak ETHERNET_IRQHandler
769    .type ETHERNET_IRQHandler, %function
770ETHERNET_IRQHandler:
771    ldr   r0,=ETHERNET_DriverIRQHandler
772    bx    r0
773    .size ETHERNET_IRQHandler, . - ETHERNET_IRQHandler
774
775    .align 1
776    .thumb_func
777    .weak ETHERNET_PMT_IRQHandler
778    .type ETHERNET_PMT_IRQHandler, %function
779ETHERNET_PMT_IRQHandler:
780    ldr   r0,=ETHERNET_PMT_DriverIRQHandler
781    bx    r0
782    .size ETHERNET_PMT_IRQHandler, . - ETHERNET_PMT_IRQHandler
783
784    .align 1
785    .thumb_func
786    .weak ETHERNET_MACLP_IRQHandler
787    .type ETHERNET_MACLP_IRQHandler, %function
788ETHERNET_MACLP_IRQHandler:
789    ldr   r0,=ETHERNET_MACLP_DriverIRQHandler
790    bx    r0
791    .size ETHERNET_MACLP_IRQHandler, . - ETHERNET_MACLP_IRQHandler
792
793    .align 1
794    .thumb_func
795    .weak Reserved68_IRQHandler
796    .type Reserved68_IRQHandler, %function
797Reserved68_IRQHandler:
798    ldr   r0,=Reserved68_DriverIRQHandler
799    bx    r0
800    .size Reserved68_IRQHandler, . - Reserved68_IRQHandler
801
802    .align 1
803    .thumb_func
804    .weak LCD_IRQHandler
805    .type LCD_IRQHandler, %function
806LCD_IRQHandler:
807    ldr   r0,=LCD_DriverIRQHandler
808    bx    r0
809    .size LCD_IRQHandler, . - LCD_IRQHandler
810
811    .align 1
812    .thumb_func
813    .weak SHA_IRQHandler
814    .type SHA_IRQHandler, %function
815SHA_IRQHandler:
816    ldr   r0,=SHA_DriverIRQHandler
817    bx    r0
818    .size SHA_IRQHandler, . - SHA_IRQHandler
819
820    .align 1
821    .thumb_func
822    .weak SMARTCARD0_IRQHandler
823    .type SMARTCARD0_IRQHandler, %function
824SMARTCARD0_IRQHandler:
825    ldr   r0,=SMARTCARD0_DriverIRQHandler
826    bx    r0
827    .size SMARTCARD0_IRQHandler, . - SMARTCARD0_IRQHandler
828
829    .align 1
830    .thumb_func
831    .weak SMARTCARD1_IRQHandler
832    .type SMARTCARD1_IRQHandler, %function
833SMARTCARD1_IRQHandler:
834    ldr   r0,=SMARTCARD1_DriverIRQHandler
835    bx    r0
836    .size SMARTCARD1_IRQHandler, . - SMARTCARD1_IRQHandler
837
838/*    Macro to define default handlers. Default handler
839 *    will be weak symbol and just dead loops. They can be
840 *    overwritten by other handlers */
841    .macro def_irq_handler  handler_name
842    .weak \handler_name
843    .set  \handler_name, DefaultISR
844    .endm
845/* Exception Handlers */
846    def_irq_handler    MemManage_Handler
847    def_irq_handler    BusFault_Handler
848    def_irq_handler    UsageFault_Handler
849    def_irq_handler    DebugMon_Handler
850    def_irq_handler    WDT_BOD_DriverIRQHandler
851    def_irq_handler    DMA0_DriverIRQHandler
852    def_irq_handler    GINT0_DriverIRQHandler
853    def_irq_handler    GINT1_DriverIRQHandler
854    def_irq_handler    PIN_INT0_DriverIRQHandler
855    def_irq_handler    PIN_INT1_DriverIRQHandler
856    def_irq_handler    PIN_INT2_DriverIRQHandler
857    def_irq_handler    PIN_INT3_DriverIRQHandler
858    def_irq_handler    UTICK0_DriverIRQHandler
859    def_irq_handler    MRT0_DriverIRQHandler
860    def_irq_handler    CTIMER0_DriverIRQHandler
861    def_irq_handler    CTIMER1_DriverIRQHandler
862    def_irq_handler    SCT0_DriverIRQHandler
863    def_irq_handler    CTIMER3_DriverIRQHandler
864    def_irq_handler    FLEXCOMM0_DriverIRQHandler
865    def_irq_handler    FLEXCOMM1_DriverIRQHandler
866    def_irq_handler    FLEXCOMM2_DriverIRQHandler
867    def_irq_handler    FLEXCOMM3_DriverIRQHandler
868    def_irq_handler    FLEXCOMM4_DriverIRQHandler
869    def_irq_handler    FLEXCOMM5_DriverIRQHandler
870    def_irq_handler    FLEXCOMM6_DriverIRQHandler
871    def_irq_handler    FLEXCOMM7_DriverIRQHandler
872    def_irq_handler    ADC0_SEQA_DriverIRQHandler
873    def_irq_handler    ADC0_SEQB_DriverIRQHandler
874    def_irq_handler    ADC0_THCMP_DriverIRQHandler
875    def_irq_handler    DMIC0_DriverIRQHandler
876    def_irq_handler    HWVAD0_DriverIRQHandler
877    def_irq_handler    USB0_NEEDCLK_DriverIRQHandler
878    def_irq_handler    USB0_DriverIRQHandler
879    def_irq_handler    RTC_DriverIRQHandler
880    def_irq_handler    FLEXCOMM10_DriverIRQHandler
881    def_irq_handler    Reserved47_DriverIRQHandler
882    def_irq_handler    PIN_INT4_DriverIRQHandler
883    def_irq_handler    PIN_INT5_DriverIRQHandler
884    def_irq_handler    PIN_INT6_DriverIRQHandler
885    def_irq_handler    PIN_INT7_DriverIRQHandler
886    def_irq_handler    CTIMER2_DriverIRQHandler
887    def_irq_handler    CTIMER4_DriverIRQHandler
888    def_irq_handler    RIT_DriverIRQHandler
889    def_irq_handler    SPIFI0_DriverIRQHandler
890    def_irq_handler    FLEXCOMM8_DriverIRQHandler
891    def_irq_handler    FLEXCOMM9_DriverIRQHandler
892    def_irq_handler    SDIO_DriverIRQHandler
893    def_irq_handler    CAN0_IRQ0_DriverIRQHandler
894    def_irq_handler    CAN0_IRQ1_DriverIRQHandler
895    def_irq_handler    CAN1_IRQ0_DriverIRQHandler
896    def_irq_handler    CAN1_IRQ1_DriverIRQHandler
897    def_irq_handler    USB1_DriverIRQHandler
898    def_irq_handler    USB1_NEEDCLK_DriverIRQHandler
899    def_irq_handler    ETHERNET_DriverIRQHandler
900    def_irq_handler    ETHERNET_PMT_DriverIRQHandler
901    def_irq_handler    ETHERNET_MACLP_DriverIRQHandler
902    def_irq_handler    Reserved68_DriverIRQHandler
903    def_irq_handler    LCD_DriverIRQHandler
904    def_irq_handler    SHA_DriverIRQHandler
905    def_irq_handler    SMARTCARD0_DriverIRQHandler
906    def_irq_handler    SMARTCARD1_DriverIRQHandler
907
908    .end
909