1/* ------------------------------------------------------------------------- */
2/*  @file:    startup_MIMXRT533S.s                                           */
3/*  @purpose: CMSIS Cortex-M33 Core Device Startup File                      */
4/*            MIMXRT533S                                                     */
5/*  @version: 5.0                                                            */
6/*  @date:    2020-8-27                                                      */
7/*  @build:   b231019                                                        */
8/* ------------------------------------------------------------------------- */
9/*                                                                           */
10/* Copyright 1997-2016 Freescale Semiconductor, Inc.                         */
11/* Copyright 2016-2023 NXP                                                   */
12/* SPDX-License-Identifier: BSD-3-Clause                                     */
13/*****************************************************************************/
14/* Version: GCC for ARM Embedded Processors                                  */
15/*****************************************************************************/
16    .syntax unified
17    .arch armv8-m.main
18
19    .section .isr_vector, "a"
20    .align 2
21    .globl __isr_vector
22__isr_vector:
23    .long   __StackTop                                      /* Top of Stack */
24    .long   Reset_Handler                                   /* Reset Handler */
25    .long   NMI_Handler                                     /* NMI Handler*/
26    .long   HardFault_Handler                               /* Hard Fault Handler*/
27    .long   MemManage_Handler                               /* MPU Fault Handler*/
28    .long   BusFault_Handler                                /* Bus Fault Handler*/
29    .long   UsageFault_Handler                              /* Usage Fault Handler*/
30    .long   SecureFault_Handler                             /* Secure Fault Handler*/
31#if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE & 0x2))
32    .long   0x280000                                        /* Image length*/
33#else
34    .long   _image_size                                     /* Image length*/
35#endif
36    .long   0                                               /* Reserved*/
37    .long   0                                               /* Reserved*/
38    .long   SVC_Handler                                     /* SVCall Handler*/
39    .long   DebugMon_Handler                                /* Debug Monitor Handler*/
40    .long   __isr_vector                                    /* Image load address*/
41    .long   PendSV_Handler                                  /* PendSV Handler*/
42    .long   SysTick_Handler                                 /* SysTick Handler*/
43
44                                                            /* External Interrupts*/
45    .long   WDT0_IRQHandler                                 /* Watchdog timer interrupt*/
46    .long   DMA0_IRQHandler                                 /* DMA interrupt*/
47    .long   GPIO_INTA_IRQHandler                            /* GPIO Interrupt A*/
48    .long   GPIO_INTB_IRQHandler                            /* GPIO Interrupt B*/
49    .long   PIN_INT0_IRQHandler                             /* General Purpose Input/Output interrupt 0*/
50    .long   PIN_INT1_IRQHandler                             /* General Purpose Input/Output interrupt 1*/
51    .long   PIN_INT2_IRQHandler                             /* General Purpose Input/Output interrupt 2*/
52    .long   PIN_INT3_IRQHandler                             /* General Purpose Input/Output interrupt 3*/
53    .long   UTICK0_IRQHandler                               /* Micro-tick Timer*/
54    .long   MRT0_IRQHandler                                 /* Multi-Rate Timer*/
55    .long   CTIMER0_IRQHandler                              /* Standard counter/timer CTIMER0*/
56    .long   CTIMER1_IRQHandler                              /* Standard counter/timer CTIMER1*/
57    .long   SCT0_IRQHandler                                 /* SCTimer/PWM*/
58    .long   CTIMER3_IRQHandler                              /* Standard counter/timer CTIMER3*/
59    .long   FLEXCOMM0_IRQHandler                            /* FlexComm interrupt*/
60    .long   FLEXCOMM1_IRQHandler                            /* FlexComm interrupt*/
61    .long   FLEXCOMM2_IRQHandler                            /* FlexComm interrupt*/
62    .long   FLEXCOMM3_IRQHandler                            /* FlexComm interrupt*/
63    .long   FLEXCOMM4_IRQHandler                            /* FlexComm interrupt*/
64    .long   FLEXCOMM5_IRQHandler                            /* FlexComm interrupt*/
65    .long   FLEXCOMM14_IRQHandler                           /* FlexComm interrupt. Standalone SPI*/
66    .long   FLEXCOMM15_IRQHandler                           /* FlexComm interrupt. Standalone I2C*/
67    .long   ADC0_IRQHandler                                 /* Analog-to-Digital Converter interrupt*/
68    .long   Reserved39_IRQHandler                           /* Reserved interrupt*/
69    .long   ACMP_IRQHandler                                 /* Analog comparator Interrupts*/
70    .long   DMIC0_IRQHandler                                /* Digital Microphone Interface interrupt*/
71    .long   Reserved42_IRQHandler                           /* Reserved interrupt*/
72    .long   HYPERVISOR_IRQHandler                           /* Hypervisor interrupt*/
73    .long   SECURE_VIOLATION_IRQHandler                     /* Secure violation interrupt*/
74    .long   HWVAD0_IRQHandler                               /* Hardware Voice Activity Detector interrupt*/
75    .long   Reserved46_IRQHandler                           /* Reserved interrupt*/
76    .long   RNG_IRQHandler                                  /* Random Number Generator interrupt*/
77    .long   RTC_IRQHandler                                  /* Real Time Clock Alarm interrupt OR Wakeup timer interrupt*/
78    .long   Reserved49_IRQHandler                           /* xxx Interrupt 49*/
79    .long   MU_A_IRQHandler                                 /* Messaging Unit - Side A*/
80    .long   PIN_INT4_IRQHandler                             /* General Purpose Input/Output interrupt 4*/
81    .long   PIN_INT5_IRQHandler                             /* General Purpose Input/Output interrupt 5*/
82    .long   PIN_INT6_IRQHandler                             /* General Purpose Input/Output interrupt 6*/
83    .long   PIN_INT7_IRQHandler                             /* General Purpose Input/Output interrupt 7*/
84    .long   CTIMER2_IRQHandler                              /* Standard counter/timer CTIMER2*/
85    .long   CTIMER4_IRQHandler                              /* Standard counter/timer CTIMER4*/
86    .long   OS_EVENT_IRQHandler                             /* Event timer M33 Wakeup/interrupt*/
87    .long   FLEXSPI0_FLEXSPI1_IRQHandler                    /* FlexSPI0_IRQ OR FlexSPI1_IRQ*/
88    .long   FLEXCOMM6_IRQHandler                            /* FlexComm interrupt*/
89    .long   FLEXCOMM7_IRQHandler                            /* FlexComm interrupt*/
90    .long   USDHC0_IRQHandler                               /* USDHC interrupt*/
91    .long   USDHC1_IRQHandler                               /* USDHC interrupt*/
92    .long   SGPIO_INTA_IRQHandler                           /* Secure GPIO HS interrupt 0*/
93    .long   SGPIO_INTB_IRQHandler                           /* Secure GPIO HS interrupt 1*/
94    .long   I3C0_IRQHandler                                 /* Improved Inter Integrated Circuit 0 interrupt*/
95    .long   USB0_IRQHandler                                 /* USB device*/
96    .long   USB0_NEEDCLK_IRQHandler                         /* USB Activity Wake-up Interrupt*/
97    .long   WDT1_IRQHandler                                 /* Watchdog timer 1 interrupt*/
98    .long   USB_PHYDCD_IRQHandler                           /* USBPHY DCD interrupt*/
99    .long   DMA1_IRQHandler                                 /* DMA interrupt*/
100    .long   PUF_IRQHandler                                  /* QuidKey interrupt*/
101    .long   POWERQUAD_IRQHandler                            /* Powerquad interrupt*/
102    .long   CASPER_IRQHandler                               /* Caspar interrupt*/
103    .long   PMU_PMIC_IRQHandler                             /* Power Management Control interrupt*/
104    .long   HASHCRYPT_IRQHandler                            /* SHA interrupt*/
105    .long   FLEXCOMM8_IRQHandler                            /* FlexComm interrupt*/
106    .long   FLEXCOMM9_IRQHandler                            /* FlexComm interrupt*/
107    .long   FLEXCOMM10_IRQHandler                           /* FlexComm interrupt*/
108    .long   FLEXCOMM11_IRQHandler                           /* FlexComm interrupt*/
109    .long   FLEXCOMM12_IRQHandler                           /* FlexComm interrupt*/
110    .long   FLEXCOMM13_IRQHandler                           /* FlexComm interrupt*/
111    .long   FLEXCOMM16_IRQHandler                           /* FlexComm interrupt*/
112    .long   I3C1_IRQHandler                                 /* Improved Inter Integrated Circuit 1 interrupt*/
113    .long   FLEXIO_IRQHandler                               /* Flexible I/O interrupt*/
114    .long   Reserved85_IRQHandler                           /* xxx Interrupt 85*/
115    .long   Reserved86_IRQHandler                           /* xxx Interrupt 86*/
116    .long   Reserved87_IRQHandler                           /* xxx Interrupt 87*/
117    .long   Reserved88_IRQHandler                           /* */
118    .long   SDMA_IRQHandler                                 /* Smart DMA Engine Controller interrupt*/
119
120    .size   __isr_vector, . - __isr_vector
121
122    .text
123    .thumb
124
125#if defined (__cplusplus)
126#ifdef __REDLIB__
127#error Redlib does not support C++
128#endif
129#endif
130/* Reset Handler */
131
132    .thumb_func
133    .align 2
134    .globl   Reset_Handler
135    .weak    Reset_Handler
136    .type    Reset_Handler, %function
137Reset_Handler:
138    cpsid   i               /* Mask interrupts */
139    .equ    VTOR, 0xE000ED08
140    ldr     r0, =VTOR
141    ldr     r1, =__isr_vector
142    str     r1, [r0]
143    ldr     r2, [r1]
144    msr     msp, r2
145    ldr     r0, =__StackLimit
146    msr     msplim, r0
147#ifndef __NO_SYSTEM_INIT
148    ldr   r0,=SystemInit
149    blx   r0
150#endif
151/*     Loop to copy data from read only memory to RAM. The ranges
152 *      of copy from/to are specified by following symbols evaluated in
153 *      linker script.
154 *      __etext: End of code section, i.e., begin of data sections to copy from.
155 *      __data_start__/__data_end__: RAM address range that data should be
156 *      copied to. Both must be aligned to 4 bytes boundary.  */
157
158    ldr    r1, =__etext
159    ldr    r2, =__data_start__
160    ldr    r3, =__data_end__
161
162#if 1
163/* Here are two copies of loop implemenations. First one favors code size
164 * and the second one favors performance. Default uses the first one.
165 * Change to "#if 0" to use the second one */
166.LC0:
167    cmp     r2, r3
168    ittt    lt
169    ldrlt   r0, [r1], #4
170    strlt   r0, [r2], #4
171    blt    .LC0
172#else
173    subs    r3, r2
174    ble    .LC1
175.LC0:
176    subs    r3, #4
177    ldr    r0, [r1, r3]
178    str    r0, [r2, r3]
179    bgt    .LC0
180.LC1:
181#endif
182
183#ifdef __STARTUP_CLEAR_BSS
184/*     This part of work usually is done in C library startup code. Otherwise,
185 *     define this macro to enable it in this startup.
186 *
187 *     Loop to zero out BSS section, which uses following symbols
188 *     in linker script:
189 *      __bss_start__: start of BSS section. Must align to 4
190 *      __bss_end__: end of BSS section. Must align to 4
191 */
192    ldr r1, =__bss_start__
193    ldr r2, =__bss_end__
194
195    movs    r0, 0
196.LC2:
197    cmp     r1, r2
198    itt    lt
199    strlt   r0, [r1], #4
200    blt    .LC2
201#endif /* __STARTUP_CLEAR_BSS */
202
203/* Add stack / heap initializaiton */
204    movs    r0, 0
205    ldr     r1, =__HeapBase
206    ldr     r2, =__HeapLimit
207.LC3:
208    cmp     r1, r2
209    itt     lt
210    strlt   r0, [r1], #4
211    blt     .LC3
212
213    ldr     r1, =__StackLimit
214    ldr     r2, =__StackTop
215.LC4:
216    cmp     r1, r2
217    itt     lt
218    strlt   r0, [r1], #4
219    blt     .LC4
220
221/*End of stack / heap initializaiton */
222    cpsie   i               /* Unmask interrupts */
223#ifndef __START
224#ifdef __REDLIB__
225#define __START __main
226#else
227#define __START _start
228#endif
229#endif
230#ifndef __ATOLLIC__
231    ldr   r0,=__START
232    blx   r0
233#else
234    ldr   r0,=__libc_init_array
235    blx   r0
236    ldr   r0,=main
237    bx    r0
238#endif
239    .pool
240    .size Reset_Handler, . - Reset_Handler
241
242    .align  1
243    .thumb_func
244    .weak DefaultISR
245    .type DefaultISR, %function
246DefaultISR:
247    b DefaultISR
248    .size DefaultISR, . - DefaultISR
249
250    .align 1
251    .thumb_func
252    .weak NMI_Handler
253    .type NMI_Handler, %function
254NMI_Handler:
255    ldr   r0,=NMI_Handler
256    bx    r0
257    .size NMI_Handler, . - NMI_Handler
258
259    .align 1
260    .thumb_func
261    .weak HardFault_Handler
262    .type HardFault_Handler, %function
263HardFault_Handler:
264    ldr   r0,=HardFault_Handler
265    bx    r0
266    .size HardFault_Handler, . - HardFault_Handler
267
268    .align 1
269    .thumb_func
270    .weak SVC_Handler
271    .type SVC_Handler, %function
272SVC_Handler:
273    ldr   r0,=SVC_Handler
274    bx    r0
275    .size SVC_Handler, . - SVC_Handler
276
277    .align 1
278    .thumb_func
279    .weak PendSV_Handler
280    .type PendSV_Handler, %function
281PendSV_Handler:
282    ldr   r0,=PendSV_Handler
283    bx    r0
284    .size PendSV_Handler, . - PendSV_Handler
285
286    .align 1
287    .thumb_func
288    .weak SysTick_Handler
289    .type SysTick_Handler, %function
290SysTick_Handler:
291    ldr   r0,=SysTick_Handler
292    bx    r0
293    .size SysTick_Handler, . - SysTick_Handler
294
295    .align 1
296    .thumb_func
297    .weak WDT0_IRQHandler
298    .type WDT0_IRQHandler, %function
299WDT0_IRQHandler:
300    ldr   r0,=WDT0_DriverIRQHandler
301    bx    r0
302    .size WDT0_IRQHandler, . - WDT0_IRQHandler
303
304    .align 1
305    .thumb_func
306    .weak DMA0_IRQHandler
307    .type DMA0_IRQHandler, %function
308DMA0_IRQHandler:
309    ldr   r0,=DMA0_DriverIRQHandler
310    bx    r0
311    .size DMA0_IRQHandler, . - DMA0_IRQHandler
312
313    .align 1
314    .thumb_func
315    .weak GPIO_INTA_IRQHandler
316    .type GPIO_INTA_IRQHandler, %function
317GPIO_INTA_IRQHandler:
318    ldr   r0,=GPIO_INTA_DriverIRQHandler
319    bx    r0
320    .size GPIO_INTA_IRQHandler, . - GPIO_INTA_IRQHandler
321
322    .align 1
323    .thumb_func
324    .weak GPIO_INTB_IRQHandler
325    .type GPIO_INTB_IRQHandler, %function
326GPIO_INTB_IRQHandler:
327    ldr   r0,=GPIO_INTB_DriverIRQHandler
328    bx    r0
329    .size GPIO_INTB_IRQHandler, . - GPIO_INTB_IRQHandler
330
331    .align 1
332    .thumb_func
333    .weak PIN_INT0_IRQHandler
334    .type PIN_INT0_IRQHandler, %function
335PIN_INT0_IRQHandler:
336    ldr   r0,=PIN_INT0_DriverIRQHandler
337    bx    r0
338    .size PIN_INT0_IRQHandler, . - PIN_INT0_IRQHandler
339
340    .align 1
341    .thumb_func
342    .weak PIN_INT1_IRQHandler
343    .type PIN_INT1_IRQHandler, %function
344PIN_INT1_IRQHandler:
345    ldr   r0,=PIN_INT1_DriverIRQHandler
346    bx    r0
347    .size PIN_INT1_IRQHandler, . - PIN_INT1_IRQHandler
348
349    .align 1
350    .thumb_func
351    .weak PIN_INT2_IRQHandler
352    .type PIN_INT2_IRQHandler, %function
353PIN_INT2_IRQHandler:
354    ldr   r0,=PIN_INT2_DriverIRQHandler
355    bx    r0
356    .size PIN_INT2_IRQHandler, . - PIN_INT2_IRQHandler
357
358    .align 1
359    .thumb_func
360    .weak PIN_INT3_IRQHandler
361    .type PIN_INT3_IRQHandler, %function
362PIN_INT3_IRQHandler:
363    ldr   r0,=PIN_INT3_DriverIRQHandler
364    bx    r0
365    .size PIN_INT3_IRQHandler, . - PIN_INT3_IRQHandler
366
367    .align 1
368    .thumb_func
369    .weak UTICK0_IRQHandler
370    .type UTICK0_IRQHandler, %function
371UTICK0_IRQHandler:
372    ldr   r0,=UTICK0_DriverIRQHandler
373    bx    r0
374    .size UTICK0_IRQHandler, . - UTICK0_IRQHandler
375
376    .align 1
377    .thumb_func
378    .weak MRT0_IRQHandler
379    .type MRT0_IRQHandler, %function
380MRT0_IRQHandler:
381    ldr   r0,=MRT0_DriverIRQHandler
382    bx    r0
383    .size MRT0_IRQHandler, . - MRT0_IRQHandler
384
385    .align 1
386    .thumb_func
387    .weak CTIMER0_IRQHandler
388    .type CTIMER0_IRQHandler, %function
389CTIMER0_IRQHandler:
390    ldr   r0,=CTIMER0_DriverIRQHandler
391    bx    r0
392    .size CTIMER0_IRQHandler, . - CTIMER0_IRQHandler
393
394    .align 1
395    .thumb_func
396    .weak CTIMER1_IRQHandler
397    .type CTIMER1_IRQHandler, %function
398CTIMER1_IRQHandler:
399    ldr   r0,=CTIMER1_DriverIRQHandler
400    bx    r0
401    .size CTIMER1_IRQHandler, . - CTIMER1_IRQHandler
402
403    .align 1
404    .thumb_func
405    .weak SCT0_IRQHandler
406    .type SCT0_IRQHandler, %function
407SCT0_IRQHandler:
408    ldr   r0,=SCT0_DriverIRQHandler
409    bx    r0
410    .size SCT0_IRQHandler, . - SCT0_IRQHandler
411
412    .align 1
413    .thumb_func
414    .weak CTIMER3_IRQHandler
415    .type CTIMER3_IRQHandler, %function
416CTIMER3_IRQHandler:
417    ldr   r0,=CTIMER3_DriverIRQHandler
418    bx    r0
419    .size CTIMER3_IRQHandler, . - CTIMER3_IRQHandler
420
421    .align 1
422    .thumb_func
423    .weak FLEXCOMM0_IRQHandler
424    .type FLEXCOMM0_IRQHandler, %function
425FLEXCOMM0_IRQHandler:
426    ldr   r0,=FLEXCOMM0_DriverIRQHandler
427    bx    r0
428    .size FLEXCOMM0_IRQHandler, . - FLEXCOMM0_IRQHandler
429
430    .align 1
431    .thumb_func
432    .weak FLEXCOMM1_IRQHandler
433    .type FLEXCOMM1_IRQHandler, %function
434FLEXCOMM1_IRQHandler:
435    ldr   r0,=FLEXCOMM1_DriverIRQHandler
436    bx    r0
437    .size FLEXCOMM1_IRQHandler, . - FLEXCOMM1_IRQHandler
438
439    .align 1
440    .thumb_func
441    .weak FLEXCOMM2_IRQHandler
442    .type FLEXCOMM2_IRQHandler, %function
443FLEXCOMM2_IRQHandler:
444    ldr   r0,=FLEXCOMM2_DriverIRQHandler
445    bx    r0
446    .size FLEXCOMM2_IRQHandler, . - FLEXCOMM2_IRQHandler
447
448    .align 1
449    .thumb_func
450    .weak FLEXCOMM3_IRQHandler
451    .type FLEXCOMM3_IRQHandler, %function
452FLEXCOMM3_IRQHandler:
453    ldr   r0,=FLEXCOMM3_DriverIRQHandler
454    bx    r0
455    .size FLEXCOMM3_IRQHandler, . - FLEXCOMM3_IRQHandler
456
457    .align 1
458    .thumb_func
459    .weak FLEXCOMM4_IRQHandler
460    .type FLEXCOMM4_IRQHandler, %function
461FLEXCOMM4_IRQHandler:
462    ldr   r0,=FLEXCOMM4_DriverIRQHandler
463    bx    r0
464    .size FLEXCOMM4_IRQHandler, . - FLEXCOMM4_IRQHandler
465
466    .align 1
467    .thumb_func
468    .weak FLEXCOMM5_IRQHandler
469    .type FLEXCOMM5_IRQHandler, %function
470FLEXCOMM5_IRQHandler:
471    ldr   r0,=FLEXCOMM5_DriverIRQHandler
472    bx    r0
473    .size FLEXCOMM5_IRQHandler, . - FLEXCOMM5_IRQHandler
474
475    .align 1
476    .thumb_func
477    .weak FLEXCOMM14_IRQHandler
478    .type FLEXCOMM14_IRQHandler, %function
479FLEXCOMM14_IRQHandler:
480    ldr   r0,=FLEXCOMM14_DriverIRQHandler
481    bx    r0
482    .size FLEXCOMM14_IRQHandler, . - FLEXCOMM14_IRQHandler
483
484    .align 1
485    .thumb_func
486    .weak FLEXCOMM15_IRQHandler
487    .type FLEXCOMM15_IRQHandler, %function
488FLEXCOMM15_IRQHandler:
489    ldr   r0,=FLEXCOMM15_DriverIRQHandler
490    bx    r0
491    .size FLEXCOMM15_IRQHandler, . - FLEXCOMM15_IRQHandler
492
493    .align 1
494    .thumb_func
495    .weak ADC0_IRQHandler
496    .type ADC0_IRQHandler, %function
497ADC0_IRQHandler:
498    ldr   r0,=ADC0_DriverIRQHandler
499    bx    r0
500    .size ADC0_IRQHandler, . - ADC0_IRQHandler
501
502    .align 1
503    .thumb_func
504    .weak Reserved39_IRQHandler
505    .type Reserved39_IRQHandler, %function
506Reserved39_IRQHandler:
507    ldr   r0,=Reserved39_DriverIRQHandler
508    bx    r0
509    .size Reserved39_IRQHandler, . - Reserved39_IRQHandler
510
511    .align 1
512    .thumb_func
513    .weak ACMP_IRQHandler
514    .type ACMP_IRQHandler, %function
515ACMP_IRQHandler:
516    ldr   r0,=ACMP_DriverIRQHandler
517    bx    r0
518    .size ACMP_IRQHandler, . - ACMP_IRQHandler
519
520    .align 1
521    .thumb_func
522    .weak DMIC0_IRQHandler
523    .type DMIC0_IRQHandler, %function
524DMIC0_IRQHandler:
525    ldr   r0,=DMIC0_DriverIRQHandler
526    bx    r0
527    .size DMIC0_IRQHandler, . - DMIC0_IRQHandler
528
529    .align 1
530    .thumb_func
531    .weak Reserved42_IRQHandler
532    .type Reserved42_IRQHandler, %function
533Reserved42_IRQHandler:
534    ldr   r0,=Reserved42_DriverIRQHandler
535    bx    r0
536    .size Reserved42_IRQHandler, . - Reserved42_IRQHandler
537
538    .align 1
539    .thumb_func
540    .weak HYPERVISOR_IRQHandler
541    .type HYPERVISOR_IRQHandler, %function
542HYPERVISOR_IRQHandler:
543    ldr   r0,=HYPERVISOR_DriverIRQHandler
544    bx    r0
545    .size HYPERVISOR_IRQHandler, . - HYPERVISOR_IRQHandler
546
547    .align 1
548    .thumb_func
549    .weak SECURE_VIOLATION_IRQHandler
550    .type SECURE_VIOLATION_IRQHandler, %function
551SECURE_VIOLATION_IRQHandler:
552    ldr   r0,=SECURE_VIOLATION_DriverIRQHandler
553    bx    r0
554    .size SECURE_VIOLATION_IRQHandler, . - SECURE_VIOLATION_IRQHandler
555
556    .align 1
557    .thumb_func
558    .weak HWVAD0_IRQHandler
559    .type HWVAD0_IRQHandler, %function
560HWVAD0_IRQHandler:
561    ldr   r0,=HWVAD0_DriverIRQHandler
562    bx    r0
563    .size HWVAD0_IRQHandler, . - HWVAD0_IRQHandler
564
565    .align 1
566    .thumb_func
567    .weak Reserved46_IRQHandler
568    .type Reserved46_IRQHandler, %function
569Reserved46_IRQHandler:
570    ldr   r0,=Reserved46_DriverIRQHandler
571    bx    r0
572    .size Reserved46_IRQHandler, . - Reserved46_IRQHandler
573
574    .align 1
575    .thumb_func
576    .weak RNG_IRQHandler
577    .type RNG_IRQHandler, %function
578RNG_IRQHandler:
579    ldr   r0,=RNG_DriverIRQHandler
580    bx    r0
581    .size RNG_IRQHandler, . - RNG_IRQHandler
582
583    .align 1
584    .thumb_func
585    .weak RTC_IRQHandler
586    .type RTC_IRQHandler, %function
587RTC_IRQHandler:
588    ldr   r0,=RTC_DriverIRQHandler
589    bx    r0
590    .size RTC_IRQHandler, . - RTC_IRQHandler
591
592    .align 1
593    .thumb_func
594    .weak Reserved49_IRQHandler
595    .type Reserved49_IRQHandler, %function
596Reserved49_IRQHandler:
597    ldr   r0,=Reserved49_DriverIRQHandler
598    bx    r0
599    .size Reserved49_IRQHandler, . - Reserved49_IRQHandler
600
601    .align 1
602    .thumb_func
603    .weak MU_A_IRQHandler
604    .type MU_A_IRQHandler, %function
605MU_A_IRQHandler:
606    ldr   r0,=MU_A_DriverIRQHandler
607    bx    r0
608    .size MU_A_IRQHandler, . - MU_A_IRQHandler
609
610    .align 1
611    .thumb_func
612    .weak PIN_INT4_IRQHandler
613    .type PIN_INT4_IRQHandler, %function
614PIN_INT4_IRQHandler:
615    ldr   r0,=PIN_INT4_DriverIRQHandler
616    bx    r0
617    .size PIN_INT4_IRQHandler, . - PIN_INT4_IRQHandler
618
619    .align 1
620    .thumb_func
621    .weak PIN_INT5_IRQHandler
622    .type PIN_INT5_IRQHandler, %function
623PIN_INT5_IRQHandler:
624    ldr   r0,=PIN_INT5_DriverIRQHandler
625    bx    r0
626    .size PIN_INT5_IRQHandler, . - PIN_INT5_IRQHandler
627
628    .align 1
629    .thumb_func
630    .weak PIN_INT6_IRQHandler
631    .type PIN_INT6_IRQHandler, %function
632PIN_INT6_IRQHandler:
633    ldr   r0,=PIN_INT6_DriverIRQHandler
634    bx    r0
635    .size PIN_INT6_IRQHandler, . - PIN_INT6_IRQHandler
636
637    .align 1
638    .thumb_func
639    .weak PIN_INT7_IRQHandler
640    .type PIN_INT7_IRQHandler, %function
641PIN_INT7_IRQHandler:
642    ldr   r0,=PIN_INT7_DriverIRQHandler
643    bx    r0
644    .size PIN_INT7_IRQHandler, . - PIN_INT7_IRQHandler
645
646    .align 1
647    .thumb_func
648    .weak CTIMER2_IRQHandler
649    .type CTIMER2_IRQHandler, %function
650CTIMER2_IRQHandler:
651    ldr   r0,=CTIMER2_DriverIRQHandler
652    bx    r0
653    .size CTIMER2_IRQHandler, . - CTIMER2_IRQHandler
654
655    .align 1
656    .thumb_func
657    .weak CTIMER4_IRQHandler
658    .type CTIMER4_IRQHandler, %function
659CTIMER4_IRQHandler:
660    ldr   r0,=CTIMER4_DriverIRQHandler
661    bx    r0
662    .size CTIMER4_IRQHandler, . - CTIMER4_IRQHandler
663
664    .align 1
665    .thumb_func
666    .weak OS_EVENT_IRQHandler
667    .type OS_EVENT_IRQHandler, %function
668OS_EVENT_IRQHandler:
669    ldr   r0,=OS_EVENT_DriverIRQHandler
670    bx    r0
671    .size OS_EVENT_IRQHandler, . - OS_EVENT_IRQHandler
672
673    .align 1
674    .thumb_func
675    .weak FLEXSPI0_FLEXSPI1_IRQHandler
676    .type FLEXSPI0_FLEXSPI1_IRQHandler, %function
677FLEXSPI0_FLEXSPI1_IRQHandler:
678    ldr   r0,=FLEXSPI0_FLEXSPI1_DriverIRQHandler
679    bx    r0
680    .size FLEXSPI0_FLEXSPI1_IRQHandler, . - FLEXSPI0_FLEXSPI1_IRQHandler
681
682    .align 1
683    .thumb_func
684    .weak FLEXCOMM6_IRQHandler
685    .type FLEXCOMM6_IRQHandler, %function
686FLEXCOMM6_IRQHandler:
687    ldr   r0,=FLEXCOMM6_DriverIRQHandler
688    bx    r0
689    .size FLEXCOMM6_IRQHandler, . - FLEXCOMM6_IRQHandler
690
691    .align 1
692    .thumb_func
693    .weak FLEXCOMM7_IRQHandler
694    .type FLEXCOMM7_IRQHandler, %function
695FLEXCOMM7_IRQHandler:
696    ldr   r0,=FLEXCOMM7_DriverIRQHandler
697    bx    r0
698    .size FLEXCOMM7_IRQHandler, . - FLEXCOMM7_IRQHandler
699
700    .align 1
701    .thumb_func
702    .weak USDHC0_IRQHandler
703    .type USDHC0_IRQHandler, %function
704USDHC0_IRQHandler:
705    ldr   r0,=USDHC0_DriverIRQHandler
706    bx    r0
707    .size USDHC0_IRQHandler, . - USDHC0_IRQHandler
708
709    .align 1
710    .thumb_func
711    .weak USDHC1_IRQHandler
712    .type USDHC1_IRQHandler, %function
713USDHC1_IRQHandler:
714    ldr   r0,=USDHC1_DriverIRQHandler
715    bx    r0
716    .size USDHC1_IRQHandler, . - USDHC1_IRQHandler
717
718    .align 1
719    .thumb_func
720    .weak SGPIO_INTA_IRQHandler
721    .type SGPIO_INTA_IRQHandler, %function
722SGPIO_INTA_IRQHandler:
723    ldr   r0,=SGPIO_INTA_DriverIRQHandler
724    bx    r0
725    .size SGPIO_INTA_IRQHandler, . - SGPIO_INTA_IRQHandler
726
727    .align 1
728    .thumb_func
729    .weak SGPIO_INTB_IRQHandler
730    .type SGPIO_INTB_IRQHandler, %function
731SGPIO_INTB_IRQHandler:
732    ldr   r0,=SGPIO_INTB_DriverIRQHandler
733    bx    r0
734    .size SGPIO_INTB_IRQHandler, . - SGPIO_INTB_IRQHandler
735
736    .align 1
737    .thumb_func
738    .weak I3C0_IRQHandler
739    .type I3C0_IRQHandler, %function
740I3C0_IRQHandler:
741    ldr   r0,=I3C0_DriverIRQHandler
742    bx    r0
743    .size I3C0_IRQHandler, . - I3C0_IRQHandler
744
745    .align 1
746    .thumb_func
747    .weak USB0_IRQHandler
748    .type USB0_IRQHandler, %function
749USB0_IRQHandler:
750    ldr   r0,=USB0_DriverIRQHandler
751    bx    r0
752    .size USB0_IRQHandler, . - USB0_IRQHandler
753
754    .align 1
755    .thumb_func
756    .weak USB0_NEEDCLK_IRQHandler
757    .type USB0_NEEDCLK_IRQHandler, %function
758USB0_NEEDCLK_IRQHandler:
759    ldr   r0,=USB0_NEEDCLK_DriverIRQHandler
760    bx    r0
761    .size USB0_NEEDCLK_IRQHandler, . - USB0_NEEDCLK_IRQHandler
762
763    .align 1
764    .thumb_func
765    .weak WDT1_IRQHandler
766    .type WDT1_IRQHandler, %function
767WDT1_IRQHandler:
768    ldr   r0,=WDT1_DriverIRQHandler
769    bx    r0
770    .size WDT1_IRQHandler, . - WDT1_IRQHandler
771
772    .align 1
773    .thumb_func
774    .weak USB_PHYDCD_IRQHandler
775    .type USB_PHYDCD_IRQHandler, %function
776USB_PHYDCD_IRQHandler:
777    ldr   r0,=USB_PHYDCD_DriverIRQHandler
778    bx    r0
779    .size USB_PHYDCD_IRQHandler, . - USB_PHYDCD_IRQHandler
780
781    .align 1
782    .thumb_func
783    .weak DMA1_IRQHandler
784    .type DMA1_IRQHandler, %function
785DMA1_IRQHandler:
786    ldr   r0,=DMA1_DriverIRQHandler
787    bx    r0
788    .size DMA1_IRQHandler, . - DMA1_IRQHandler
789
790    .align 1
791    .thumb_func
792    .weak PUF_IRQHandler
793    .type PUF_IRQHandler, %function
794PUF_IRQHandler:
795    ldr   r0,=PUF_DriverIRQHandler
796    bx    r0
797    .size PUF_IRQHandler, . - PUF_IRQHandler
798
799    .align 1
800    .thumb_func
801    .weak POWERQUAD_IRQHandler
802    .type POWERQUAD_IRQHandler, %function
803POWERQUAD_IRQHandler:
804    ldr   r0,=POWERQUAD_DriverIRQHandler
805    bx    r0
806    .size POWERQUAD_IRQHandler, . - POWERQUAD_IRQHandler
807
808    .align 1
809    .thumb_func
810    .weak CASPER_IRQHandler
811    .type CASPER_IRQHandler, %function
812CASPER_IRQHandler:
813    ldr   r0,=CASPER_DriverIRQHandler
814    bx    r0
815    .size CASPER_IRQHandler, . - CASPER_IRQHandler
816
817    .align 1
818    .thumb_func
819    .weak PMU_PMIC_IRQHandler
820    .type PMU_PMIC_IRQHandler, %function
821PMU_PMIC_IRQHandler:
822    ldr   r0,=PMU_PMIC_DriverIRQHandler
823    bx    r0
824    .size PMU_PMIC_IRQHandler, . - PMU_PMIC_IRQHandler
825
826    .align 1
827    .thumb_func
828    .weak HASHCRYPT_IRQHandler
829    .type HASHCRYPT_IRQHandler, %function
830HASHCRYPT_IRQHandler:
831    ldr   r0,=HASHCRYPT_DriverIRQHandler
832    bx    r0
833    .size HASHCRYPT_IRQHandler, . - HASHCRYPT_IRQHandler
834
835    .align 1
836    .thumb_func
837    .weak FLEXCOMM8_IRQHandler
838    .type FLEXCOMM8_IRQHandler, %function
839FLEXCOMM8_IRQHandler:
840    ldr   r0,=FLEXCOMM8_DriverIRQHandler
841    bx    r0
842    .size FLEXCOMM8_IRQHandler, . - FLEXCOMM8_IRQHandler
843
844    .align 1
845    .thumb_func
846    .weak FLEXCOMM9_IRQHandler
847    .type FLEXCOMM9_IRQHandler, %function
848FLEXCOMM9_IRQHandler:
849    ldr   r0,=FLEXCOMM9_DriverIRQHandler
850    bx    r0
851    .size FLEXCOMM9_IRQHandler, . - FLEXCOMM9_IRQHandler
852
853    .align 1
854    .thumb_func
855    .weak FLEXCOMM10_IRQHandler
856    .type FLEXCOMM10_IRQHandler, %function
857FLEXCOMM10_IRQHandler:
858    ldr   r0,=FLEXCOMM10_DriverIRQHandler
859    bx    r0
860    .size FLEXCOMM10_IRQHandler, . - FLEXCOMM10_IRQHandler
861
862    .align 1
863    .thumb_func
864    .weak FLEXCOMM11_IRQHandler
865    .type FLEXCOMM11_IRQHandler, %function
866FLEXCOMM11_IRQHandler:
867    ldr   r0,=FLEXCOMM11_DriverIRQHandler
868    bx    r0
869    .size FLEXCOMM11_IRQHandler, . - FLEXCOMM11_IRQHandler
870
871    .align 1
872    .thumb_func
873    .weak FLEXCOMM12_IRQHandler
874    .type FLEXCOMM12_IRQHandler, %function
875FLEXCOMM12_IRQHandler:
876    ldr   r0,=FLEXCOMM12_DriverIRQHandler
877    bx    r0
878    .size FLEXCOMM12_IRQHandler, . - FLEXCOMM12_IRQHandler
879
880    .align 1
881    .thumb_func
882    .weak FLEXCOMM13_IRQHandler
883    .type FLEXCOMM13_IRQHandler, %function
884FLEXCOMM13_IRQHandler:
885    ldr   r0,=FLEXCOMM13_DriverIRQHandler
886    bx    r0
887    .size FLEXCOMM13_IRQHandler, . - FLEXCOMM13_IRQHandler
888
889    .align 1
890    .thumb_func
891    .weak FLEXCOMM16_IRQHandler
892    .type FLEXCOMM16_IRQHandler, %function
893FLEXCOMM16_IRQHandler:
894    ldr   r0,=FLEXCOMM16_DriverIRQHandler
895    bx    r0
896    .size FLEXCOMM16_IRQHandler, . - FLEXCOMM16_IRQHandler
897
898    .align 1
899    .thumb_func
900    .weak I3C1_IRQHandler
901    .type I3C1_IRQHandler, %function
902I3C1_IRQHandler:
903    ldr   r0,=I3C1_DriverIRQHandler
904    bx    r0
905    .size I3C1_IRQHandler, . - I3C1_IRQHandler
906
907    .align 1
908    .thumb_func
909    .weak FLEXIO_IRQHandler
910    .type FLEXIO_IRQHandler, %function
911FLEXIO_IRQHandler:
912    ldr   r0,=FLEXIO_DriverIRQHandler
913    bx    r0
914    .size FLEXIO_IRQHandler, . - FLEXIO_IRQHandler
915
916    .align 1
917    .thumb_func
918    .weak Reserved85_IRQHandler
919    .type Reserved85_IRQHandler, %function
920Reserved85_IRQHandler:
921    ldr   r0,=Reserved85_DriverIRQHandler
922    bx    r0
923    .size Reserved85_IRQHandler, . - Reserved85_IRQHandler
924
925    .align 1
926    .thumb_func
927    .weak Reserved86_IRQHandler
928    .type Reserved86_IRQHandler, %function
929Reserved86_IRQHandler:
930    ldr   r0,=Reserved86_DriverIRQHandler
931    bx    r0
932    .size Reserved86_IRQHandler, . - Reserved86_IRQHandler
933
934    .align 1
935    .thumb_func
936    .weak Reserved87_IRQHandler
937    .type Reserved87_IRQHandler, %function
938Reserved87_IRQHandler:
939    ldr   r0,=Reserved87_DriverIRQHandler
940    bx    r0
941    .size Reserved87_IRQHandler, . - Reserved87_IRQHandler
942
943    .align 1
944    .thumb_func
945    .weak Reserved88_IRQHandler
946    .type Reserved88_IRQHandler, %function
947Reserved88_IRQHandler:
948    ldr   r0,=Reserved88_DriverIRQHandler
949    bx    r0
950    .size Reserved88_IRQHandler, . - Reserved88_IRQHandler
951
952    .align 1
953    .thumb_func
954    .weak SDMA_IRQHandler
955    .type SDMA_IRQHandler, %function
956SDMA_IRQHandler:
957    ldr   r0,=SDMA_DriverIRQHandler
958    bx    r0
959    .size SDMA_IRQHandler, . - SDMA_IRQHandler
960
961
962/*    Macro to define default handlers. Default handler
963 *    will be weak symbol and just dead loops. They can be
964 *    overwritten by other handlers */
965    .macro def_irq_handler  handler_name
966    .weak \handler_name
967    .set  \handler_name, DefaultISR
968    .endm
969/* Exception Handlers */
970    def_irq_handler    MemManage_Handler
971    def_irq_handler    BusFault_Handler
972    def_irq_handler    UsageFault_Handler
973    def_irq_handler    SecureFault_Handler
974    def_irq_handler    DebugMon_Handler
975    def_irq_handler    WDT0_DriverIRQHandler
976    def_irq_handler    DMA0_DriverIRQHandler
977    def_irq_handler    GPIO_INTA_DriverIRQHandler
978    def_irq_handler    GPIO_INTB_DriverIRQHandler
979    def_irq_handler    PIN_INT0_DriverIRQHandler
980    def_irq_handler    PIN_INT1_DriverIRQHandler
981    def_irq_handler    PIN_INT2_DriverIRQHandler
982    def_irq_handler    PIN_INT3_DriverIRQHandler
983    def_irq_handler    UTICK0_DriverIRQHandler
984    def_irq_handler    MRT0_DriverIRQHandler
985    def_irq_handler    CTIMER0_DriverIRQHandler
986    def_irq_handler    CTIMER1_DriverIRQHandler
987    def_irq_handler    SCT0_DriverIRQHandler
988    def_irq_handler    CTIMER3_DriverIRQHandler
989    def_irq_handler    FLEXCOMM0_DriverIRQHandler
990    def_irq_handler    FLEXCOMM1_DriverIRQHandler
991    def_irq_handler    FLEXCOMM2_DriverIRQHandler
992    def_irq_handler    FLEXCOMM3_DriverIRQHandler
993    def_irq_handler    FLEXCOMM4_DriverIRQHandler
994    def_irq_handler    FLEXCOMM5_DriverIRQHandler
995    def_irq_handler    FLEXCOMM14_DriverIRQHandler
996    def_irq_handler    FLEXCOMM15_DriverIRQHandler
997    def_irq_handler    ADC0_DriverIRQHandler
998    def_irq_handler    Reserved39_DriverIRQHandler
999    def_irq_handler    ACMP_DriverIRQHandler
1000    def_irq_handler    DMIC0_DriverIRQHandler
1001    def_irq_handler    Reserved42_DriverIRQHandler
1002    def_irq_handler    HYPERVISOR_DriverIRQHandler
1003    def_irq_handler    SECURE_VIOLATION_DriverIRQHandler
1004    def_irq_handler    HWVAD0_DriverIRQHandler
1005    def_irq_handler    Reserved46_DriverIRQHandler
1006    def_irq_handler    RNG_DriverIRQHandler
1007    def_irq_handler    RTC_DriverIRQHandler
1008    def_irq_handler    Reserved49_DriverIRQHandler
1009    def_irq_handler    MU_A_DriverIRQHandler
1010    def_irq_handler    PIN_INT4_DriverIRQHandler
1011    def_irq_handler    PIN_INT5_DriverIRQHandler
1012    def_irq_handler    PIN_INT6_DriverIRQHandler
1013    def_irq_handler    PIN_INT7_DriverIRQHandler
1014    def_irq_handler    CTIMER2_DriverIRQHandler
1015    def_irq_handler    CTIMER4_DriverIRQHandler
1016    def_irq_handler    OS_EVENT_DriverIRQHandler
1017    def_irq_handler    FLEXSPI0_FLEXSPI1_DriverIRQHandler
1018    def_irq_handler    FLEXCOMM6_DriverIRQHandler
1019    def_irq_handler    FLEXCOMM7_DriverIRQHandler
1020    def_irq_handler    USDHC0_DriverIRQHandler
1021    def_irq_handler    USDHC1_DriverIRQHandler
1022    def_irq_handler    SGPIO_INTA_DriverIRQHandler
1023    def_irq_handler    SGPIO_INTB_DriverIRQHandler
1024    def_irq_handler    I3C0_DriverIRQHandler
1025    def_irq_handler    USB0_DriverIRQHandler
1026    def_irq_handler    USB0_NEEDCLK_DriverIRQHandler
1027    def_irq_handler    WDT1_DriverIRQHandler
1028    def_irq_handler    USB_PHYDCD_DriverIRQHandler
1029    def_irq_handler    DMA1_DriverIRQHandler
1030    def_irq_handler    PUF_DriverIRQHandler
1031    def_irq_handler    POWERQUAD_DriverIRQHandler
1032    def_irq_handler    CASPER_DriverIRQHandler
1033    def_irq_handler    PMU_PMIC_DriverIRQHandler
1034    def_irq_handler    HASHCRYPT_DriverIRQHandler
1035    def_irq_handler    FLEXCOMM8_DriverIRQHandler
1036    def_irq_handler    FLEXCOMM9_DriverIRQHandler
1037    def_irq_handler    FLEXCOMM10_DriverIRQHandler
1038    def_irq_handler    FLEXCOMM11_DriverIRQHandler
1039    def_irq_handler    FLEXCOMM12_DriverIRQHandler
1040    def_irq_handler    FLEXCOMM13_DriverIRQHandler
1041    def_irq_handler    FLEXCOMM16_DriverIRQHandler
1042    def_irq_handler    I3C1_DriverIRQHandler
1043    def_irq_handler    FLEXIO_DriverIRQHandler
1044    def_irq_handler    Reserved85_DriverIRQHandler
1045    def_irq_handler    Reserved86_DriverIRQHandler
1046    def_irq_handler    Reserved87_DriverIRQHandler
1047    def_irq_handler    Reserved88_DriverIRQHandler
1048    def_irq_handler    SDMA_DriverIRQHandler
1049
1050    .end
1051