1/*
2 * Copyright (c) 2009-2022 ARM Limited. All rights reserved.
3 * Copyright (c) 2019-2020, Cypress Semiconductor Corporation. All rights reserved.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 *
7 * Licensed under the Apache License, Version 2.0 (the License); you may
8 * not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19
20/* adapted from Cypress PSoC64 Peripheral-Driver-Library v1.3.1
21   startup_psoc6_02_cm4.S*/
22
23#include "tfm_plat_config.h"
24
25    /* The CPU VTOR register */
26    #define CY_CPU_VTOR_ADDR            0xE000ED08
27
28    .syntax    unified
29    .arch    armv7-m
30
31    .section .vectors
32    .align 2
33    .globl    __Vectors
34__Vectors:
35    .long    __StackTop            /* Top of Stack */
36    .long    Reset_Handler         /* Reset Handler */
37    .long    NMI_Handler           /* NMI Handler */
38    .long    HardFault_Handler     /* Hard Fault Handler */
39    .long    MemManage_Handler     /* MPU Fault Handler */
40    .long    BusFault_Handler      /* Bus Fault Handler */
41    .long    UsageFault_Handler    /* Usage Fault Handler */
42    .long    0                     /* Reserved */
43    .long    0                     /* Reserved */
44    .long    0                     /* Reserved */
45    .long    0                     /* Reserved */
46    .long    SVC_Handler           /* SVCall Handler */
47    .long    DebugMon_Handler      /* Debug Monitor Handler */
48    .long    0                     /* Reserved */
49    .long    PendSV_Handler        /* PendSV Handler */
50    .long    SysTick_Handler       /* SysTick Handler */
51
52     /* External interrupts                             Description */
53    .long    ioss_interrupts_gpio_0_IRQHandler       /* GPIO Port Interrupt #0 */
54    .long    ioss_interrupts_gpio_1_IRQHandler       /* GPIO Port Interrupt #1 */
55    .long    ioss_interrupts_gpio_2_IRQHandler       /* GPIO Port Interrupt #2 */
56    .long    ioss_interrupts_gpio_3_IRQHandler       /* GPIO Port Interrupt #3 */
57    .long    ioss_interrupts_gpio_4_IRQHandler       /* GPIO Port Interrupt #4 */
58    .long    ioss_interrupts_gpio_5_IRQHandler       /* GPIO Port Interrupt #5 */
59    .long    ioss_interrupts_gpio_6_IRQHandler       /* GPIO Port Interrupt #6 */
60    .long    ioss_interrupts_gpio_7_IRQHandler       /* GPIO Port Interrupt #7 */
61    .long    ioss_interrupts_gpio_8_IRQHandler       /* GPIO Port Interrupt #8 */
62    .long    ioss_interrupts_gpio_9_IRQHandler       /* GPIO Port Interrupt #9 */
63    .long    ioss_interrupts_gpio_10_IRQHandler      /* GPIO Port Interrupt #10 */
64    .long    ioss_interrupts_gpio_11_IRQHandler      /* GPIO Port Interrupt #11 */
65    .long    ioss_interrupts_gpio_12_IRQHandler      /* GPIO Port Interrupt #12 */
66    .long    ioss_interrupts_gpio_13_IRQHandler      /* GPIO Port Interrupt #13 */
67    .long    ioss_interrupts_gpio_14_IRQHandler      /* GPIO Port Interrupt #14 */
68    .long    ioss_interrupt_gpio_IRQHandler          /* GPIO All Ports */
69    .long    ioss_interrupt_vdd_IRQHandler           /* GPIO Supply Detect Interrupt */
70    .long    lpcomp_interrupt_IRQHandler             /* Low Power Comparator Interrupt */
71    .long    scb_8_interrupt_IRQHandler              /* Serial Communication Block #8 (DeepSleep capable) */
72    .long    srss_interrupt_mcwdt_0_IRQHandler       /* Multi Counter Watchdog Timer interrupt */
73    .long    srss_interrupt_mcwdt_1_IRQHandler       /* Multi Counter Watchdog Timer interrupt */
74    .long    srss_interrupt_backup_IRQHandler        /* Backup domain interrupt */
75    .long    srss_interrupt_IRQHandler               /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */
76    .long    cpuss_interrupts_ipc_0_IRQHandler       /* CPUSS Inter Process Communication Interrupt #0 */
77    .long    cpuss_interrupts_ipc_1_IRQHandler       /* CPUSS Inter Process Communication Interrupt #1 */
78    .long    cpuss_interrupts_ipc_2_IRQHandler       /* CPUSS Inter Process Communication Interrupt #2 */
79    .long    cpuss_interrupts_ipc_3_IRQHandler       /* CPUSS Inter Process Communication Interrupt #3 */
80    .long    Cy_SysIpcPipeIsrCm4
81    .long    cpuss_interrupts_ipc_5_IRQHandler       /* CPUSS Inter Process Communication Interrupt #5 */
82    .long    cpuss_interrupts_ipc_6_IRQHandler       /* CPUSS Inter Process Communication Interrupt #6 */
83    .long    cpuss_interrupts_ipc_7_IRQHandler       /* CPUSS Inter Process Communication Interrupt #7 */
84    .long    cpuss_interrupts_ipc_8_IRQHandler       /* CPUSS Inter Process Communication Interrupt #8 */
85    .long    cpuss_interrupts_ipc_9_IRQHandler       /* CPUSS Inter Process Communication Interrupt #9 */
86    .long    cpuss_interrupts_ipc_10_IRQHandler      /* CPUSS Inter Process Communication Interrupt #10 */
87    .long    cpuss_interrupts_ipc_11_IRQHandler      /* CPUSS Inter Process Communication Interrupt #11 */
88    .long    cpuss_interrupts_ipc_12_IRQHandler      /* CPUSS Inter Process Communication Interrupt #12 */
89    .long    cpuss_interrupts_ipc_13_IRQHandler      /* CPUSS Inter Process Communication Interrupt #13 */
90    .long    cpuss_interrupts_ipc_14_IRQHandler      /* CPUSS Inter Process Communication Interrupt #14 */
91    .long    cpuss_interrupts_ipc_15_IRQHandler      /* CPUSS Inter Process Communication Interrupt #15 */
92    .long    scb_0_interrupt_IRQHandler              /* Serial Communication Block #0 */
93    .long    scb_1_interrupt_IRQHandler              /* Serial Communication Block #1 */
94    .long    scb_2_interrupt_IRQHandler              /* Serial Communication Block #2 */
95    .long    scb_3_interrupt_IRQHandler              /* Serial Communication Block #3 */
96    .long    scb_4_interrupt_IRQHandler              /* Serial Communication Block #4 */
97    .long    scb_5_interrupt_IRQHandler              /* Serial Communication Block #5 */
98    .long    scb_6_interrupt_IRQHandler              /* Serial Communication Block #6 */
99    .long    scb_7_interrupt_IRQHandler              /* Serial Communication Block #7 */
100    .long    scb_9_interrupt_IRQHandler              /* Serial Communication Block #9 */
101    .long    scb_10_interrupt_IRQHandler             /* Serial Communication Block #10 */
102    .long    scb_11_interrupt_IRQHandler             /* Serial Communication Block #11 */
103    .long    scb_12_interrupt_IRQHandler             /* Serial Communication Block #12 */
104    .long    csd_interrupt_IRQHandler                /* CSD (Capsense) interrupt */
105    .long    cpuss_interrupts_dmac_0_IRQHandler      /* CPUSS DMAC, Channel #0 */
106    .long    cpuss_interrupts_dmac_1_IRQHandler      /* CPUSS DMAC, Channel #1 */
107    .long    cpuss_interrupts_dmac_2_IRQHandler      /* CPUSS DMAC, Channel #2 */
108    .long    cpuss_interrupts_dmac_3_IRQHandler      /* CPUSS DMAC, Channel #3 */
109    .long    cpuss_interrupts_dw0_0_IRQHandler       /* CPUSS DataWire #0, Channel #0 */
110    .long    cpuss_interrupts_dw0_1_IRQHandler       /* CPUSS DataWire #0, Channel #1 */
111    .long    cpuss_interrupts_dw0_2_IRQHandler       /* CPUSS DataWire #0, Channel #2 */
112    .long    cpuss_interrupts_dw0_3_IRQHandler       /* CPUSS DataWire #0, Channel #3 */
113    .long    cpuss_interrupts_dw0_4_IRQHandler       /* CPUSS DataWire #0, Channel #4 */
114    .long    cpuss_interrupts_dw0_5_IRQHandler       /* CPUSS DataWire #0, Channel #5 */
115    .long    cpuss_interrupts_dw0_6_IRQHandler       /* CPUSS DataWire #0, Channel #6 */
116    .long    cpuss_interrupts_dw0_7_IRQHandler       /* CPUSS DataWire #0, Channel #7 */
117    .long    cpuss_interrupts_dw0_8_IRQHandler       /* CPUSS DataWire #0, Channel #8 */
118    .long    cpuss_interrupts_dw0_9_IRQHandler       /* CPUSS DataWire #0, Channel #9 */
119    .long    cpuss_interrupts_dw0_10_IRQHandler      /* CPUSS DataWire #0, Channel #10 */
120    .long    cpuss_interrupts_dw0_11_IRQHandler      /* CPUSS DataWire #0, Channel #11 */
121    .long    cpuss_interrupts_dw0_12_IRQHandler      /* CPUSS DataWire #0, Channel #12 */
122    .long    cpuss_interrupts_dw0_13_IRQHandler      /* CPUSS DataWire #0, Channel #13 */
123    .long    cpuss_interrupts_dw0_14_IRQHandler      /* CPUSS DataWire #0, Channel #14 */
124    .long    cpuss_interrupts_dw0_15_IRQHandler      /* CPUSS DataWire #0, Channel #15 */
125    .long    cpuss_interrupts_dw0_16_IRQHandler      /* CPUSS DataWire #0, Channel #16 */
126    .long    cpuss_interrupts_dw0_17_IRQHandler      /* CPUSS DataWire #0, Channel #17 */
127    .long    cpuss_interrupts_dw0_18_IRQHandler      /* CPUSS DataWire #0, Channel #18 */
128    .long    cpuss_interrupts_dw0_19_IRQHandler      /* CPUSS DataWire #0, Channel #19 */
129    .long    cpuss_interrupts_dw0_20_IRQHandler      /* CPUSS DataWire #0, Channel #20 */
130    .long    cpuss_interrupts_dw0_21_IRQHandler      /* CPUSS DataWire #0, Channel #21 */
131    .long    cpuss_interrupts_dw0_22_IRQHandler      /* CPUSS DataWire #0, Channel #22 */
132    .long    cpuss_interrupts_dw0_23_IRQHandler      /* CPUSS DataWire #0, Channel #23 */
133    .long    cpuss_interrupts_dw0_24_IRQHandler      /* CPUSS DataWire #0, Channel #24 */
134    .long    cpuss_interrupts_dw0_25_IRQHandler      /* CPUSS DataWire #0, Channel #25 */
135    .long    cpuss_interrupts_dw0_26_IRQHandler      /* CPUSS DataWire #0, Channel #26 */
136    .long    cpuss_interrupts_dw0_27_IRQHandler      /* CPUSS DataWire #0, Channel #27 */
137    .long    cpuss_interrupts_dw0_28_IRQHandler      /* CPUSS DataWire #0, Channel #28 */
138    .long    cpuss_interrupts_dw1_0_IRQHandler       /* CPUSS DataWire #1, Channel #0 */
139    .long    cpuss_interrupts_dw1_1_IRQHandler       /* CPUSS DataWire #1, Channel #1 */
140    .long    cpuss_interrupts_dw1_2_IRQHandler       /* CPUSS DataWire #1, Channel #2 */
141    .long    cpuss_interrupts_dw1_3_IRQHandler       /* CPUSS DataWire #1, Channel #3 */
142    .long    cpuss_interrupts_dw1_4_IRQHandler       /* CPUSS DataWire #1, Channel #4 */
143    .long    cpuss_interrupts_dw1_5_IRQHandler       /* CPUSS DataWire #1, Channel #5 */
144    .long    cpuss_interrupts_dw1_6_IRQHandler       /* CPUSS DataWire #1, Channel #6 */
145    .long    cpuss_interrupts_dw1_7_IRQHandler       /* CPUSS DataWire #1, Channel #7 */
146    .long    cpuss_interrupts_dw1_8_IRQHandler       /* CPUSS DataWire #1, Channel #8 */
147    .long    cpuss_interrupts_dw1_9_IRQHandler       /* CPUSS DataWire #1, Channel #9 */
148    .long    cpuss_interrupts_dw1_10_IRQHandler      /* CPUSS DataWire #1, Channel #10 */
149    .long    cpuss_interrupts_dw1_11_IRQHandler      /* CPUSS DataWire #1, Channel #11 */
150    .long    cpuss_interrupts_dw1_12_IRQHandler      /* CPUSS DataWire #1, Channel #12 */
151    .long    cpuss_interrupts_dw1_13_IRQHandler      /* CPUSS DataWire #1, Channel #13 */
152    .long    cpuss_interrupts_dw1_14_IRQHandler      /* CPUSS DataWire #1, Channel #14 */
153    .long    cpuss_interrupts_dw1_15_IRQHandler      /* CPUSS DataWire #1, Channel #15 */
154    .long    cpuss_interrupts_dw1_16_IRQHandler      /* CPUSS DataWire #1, Channel #16 */
155    .long    cpuss_interrupts_dw1_17_IRQHandler      /* CPUSS DataWire #1, Channel #17 */
156    .long    cpuss_interrupts_dw1_18_IRQHandler      /* CPUSS DataWire #1, Channel #18 */
157    .long    cpuss_interrupts_dw1_19_IRQHandler      /* CPUSS DataWire #1, Channel #19 */
158    .long    cpuss_interrupts_dw1_20_IRQHandler      /* CPUSS DataWire #1, Channel #20 */
159    .long    cpuss_interrupts_dw1_21_IRQHandler      /* CPUSS DataWire #1, Channel #21 */
160    .long    cpuss_interrupts_dw1_22_IRQHandler      /* CPUSS DataWire #1, Channel #22 */
161    .long    cpuss_interrupts_dw1_23_IRQHandler      /* CPUSS DataWire #1, Channel #23 */
162    .long    cpuss_interrupts_dw1_24_IRQHandler      /* CPUSS DataWire #1, Channel #24 */
163    .long    cpuss_interrupts_dw1_25_IRQHandler      /* CPUSS DataWire #1, Channel #25 */
164    .long    cpuss_interrupts_dw1_26_IRQHandler      /* CPUSS DataWire #1, Channel #26 */
165    .long    cpuss_interrupts_dw1_27_IRQHandler      /* CPUSS DataWire #1, Channel #27 */
166    .long    cpuss_interrupts_dw1_28_IRQHandler      /* CPUSS DataWire #1, Channel #28 */
167    .long    cpuss_interrupts_fault_0_IRQHandler     /* CPUSS Fault Structure Interrupt #0 */
168    .long    cpuss_interrupts_fault_1_IRQHandler     /* CPUSS Fault Structure Interrupt #1 */
169    .long    cpuss_interrupt_crypto_IRQHandler       /* CRYPTO Accelerator Interrupt */
170    .long    Cy_Flash_ResumeIrqHandler               /* FLASH Macro Interrupt */
171    .long    cpuss_interrupts_cm4_fp_IRQHandler      /* Floating Point operation fault */
172    .long    cpuss_interrupts_cm0_cti_0_IRQHandler   /* CM0+ CTI #0 */
173    .long    cpuss_interrupts_cm0_cti_1_IRQHandler   /* CM0+ CTI #1 */
174    .long    cpuss_interrupts_cm4_cti_0_IRQHandler   /* CM4 CTI #0 */
175    .long    cpuss_interrupts_cm4_cti_1_IRQHandler   /* CM4 CTI #1 */
176    .long    tcpwm_0_interrupts_0_IRQHandler         /* TCPWM #0, Counter #0 */
177    .long    TIMER1_Handler                          /* TCPWM #0, Counter #1 */
178    .long    tcpwm_0_interrupts_2_IRQHandler         /* TCPWM #0, Counter #2 */
179    .long    tcpwm_0_interrupts_3_IRQHandler         /* TCPWM #0, Counter #3 */
180    .long    tcpwm_0_interrupts_4_IRQHandler         /* TCPWM #0, Counter #4 */
181    .long    tcpwm_0_interrupts_5_IRQHandler         /* TCPWM #0, Counter #5 */
182    .long    tcpwm_0_interrupts_6_IRQHandler         /* TCPWM #0, Counter #6 */
183    .long    tcpwm_0_interrupts_7_IRQHandler         /* TCPWM #0, Counter #7 */
184    .long    tcpwm_1_interrupts_0_IRQHandler         /* TCPWM #1, Counter #0 */
185    .long    tcpwm_1_interrupts_1_IRQHandler         /* TCPWM #1, Counter #1 */
186    .long    tcpwm_1_interrupts_2_IRQHandler         /* TCPWM #1, Counter #2 */
187    .long    tcpwm_1_interrupts_3_IRQHandler         /* TCPWM #1, Counter #3 */
188    .long    tcpwm_1_interrupts_4_IRQHandler         /* TCPWM #1, Counter #4 */
189    .long    tcpwm_1_interrupts_5_IRQHandler         /* TCPWM #1, Counter #5 */
190    .long    tcpwm_1_interrupts_6_IRQHandler         /* TCPWM #1, Counter #6 */
191    .long    tcpwm_1_interrupts_7_IRQHandler         /* TCPWM #1, Counter #7 */
192    .long    tcpwm_1_interrupts_8_IRQHandler         /* TCPWM #1, Counter #8 */
193    .long    tcpwm_1_interrupts_9_IRQHandler         /* TCPWM #1, Counter #9 */
194    .long    tcpwm_1_interrupts_10_IRQHandler        /* TCPWM #1, Counter #10 */
195    .long    tcpwm_1_interrupts_11_IRQHandler        /* TCPWM #1, Counter #11 */
196    .long    tcpwm_1_interrupts_12_IRQHandler        /* TCPWM #1, Counter #12 */
197    .long    tcpwm_1_interrupts_13_IRQHandler        /* TCPWM #1, Counter #13 */
198    .long    tcpwm_1_interrupts_14_IRQHandler        /* TCPWM #1, Counter #14 */
199    .long    tcpwm_1_interrupts_15_IRQHandler        /* TCPWM #1, Counter #15 */
200    .long    tcpwm_1_interrupts_16_IRQHandler        /* TCPWM #1, Counter #16 */
201    .long    tcpwm_1_interrupts_17_IRQHandler        /* TCPWM #1, Counter #17 */
202    .long    tcpwm_1_interrupts_18_IRQHandler        /* TCPWM #1, Counter #18 */
203    .long    tcpwm_1_interrupts_19_IRQHandler        /* TCPWM #1, Counter #19 */
204    .long    tcpwm_1_interrupts_20_IRQHandler        /* TCPWM #1, Counter #20 */
205    .long    tcpwm_1_interrupts_21_IRQHandler        /* TCPWM #1, Counter #21 */
206    .long    tcpwm_1_interrupts_22_IRQHandler        /* TCPWM #1, Counter #22 */
207    .long    tcpwm_1_interrupts_23_IRQHandler        /* TCPWM #1, Counter #23 */
208    .long    pass_interrupt_sar_IRQHandler           /* SAR ADC interrupt */
209    .long    audioss_0_interrupt_i2s_IRQHandler      /* I2S0 Audio interrupt */
210    .long    audioss_0_interrupt_pdm_IRQHandler      /* PDM0/PCM0 Audio interrupt */
211    .long    audioss_1_interrupt_i2s_IRQHandler      /* I2S1 Audio interrupt */
212    .long    profile_interrupt_IRQHandler            /* Energy Profiler interrupt */
213    .long    smif_interrupt_IRQHandler               /* Serial Memory Interface interrupt */
214    .long    usb_interrupt_hi_IRQHandler             /* USB Interrupt */
215    .long    usb_interrupt_med_IRQHandler            /* USB Interrupt */
216    .long    usb_interrupt_lo_IRQHandler             /* USB Interrupt */
217    .long    sdhc_0_interrupt_wakeup_IRQHandler      /* SDIO wakeup interrupt for mxsdhc */
218    .long    sdhc_0_interrupt_general_IRQHandler     /* Consolidated interrupt for mxsdhc for everything else */
219    .long    sdhc_1_interrupt_wakeup_IRQHandler      /* EEMC wakeup interrupt for mxsdhc, not used */
220    .long    sdhc_1_interrupt_general_IRQHandler     /* Consolidated interrupt for mxsdhc for everything else */
221
222
223    .size    __Vectors, . - __Vectors
224    .equ    __VectorsSize, . - __Vectors
225
226#ifdef RAM_VECTORS_SUPPORT
227    .section .ram_vectors
228    .align 2
229    .globl __ramVectors
230__ramVectors:
231    .space  __VectorsSize
232    .size   __ramVectors, . - __ramVectors
233#else
234    /* vectors relocation is not supported,
235    but allocate __ramVectors for PDL code */
236    .globl __ramVectors
237    .equ    __ramVectors, 0
238#endif
239
240    .text
241    .thumb
242    .thumb_func
243    .align  2
244
245    /* Device startup customization */
246    .weak   Cy_OnResetUser
247    .func   Cy_OnResetUser, Cy_OnResetUser
248    .type   Cy_OnResetUser, %function
249
250Cy_OnResetUser:
251    bx lr
252    .size   Cy_OnResetUser, . - Cy_OnResetUser
253    .endfunc
254
255    /* Saves and disables the interrupts */
256    .global Cy_SaveIRQ
257    .func   Cy_SaveIRQ, Cy_SaveIRQ
258    .type   Cy_SaveIRQ, %function
259
260Cy_SaveIRQ:
261    mrs r0, PRIMASK
262    cpsid i
263    bx lr
264    .size   Cy_SaveIRQ, . - Cy_SaveIRQ
265    .endfunc
266
267    /* Restores the interrupts */
268    .global Cy_RestoreIRQ
269    .func   Cy_RestoreIRQ, Cy_RestoreIRQ
270    .type   Cy_RestoreIRQ, %function
271
272Cy_RestoreIRQ:
273    msr PRIMASK, r0
274    bx lr
275    .size   Cy_RestoreIRQ, . - Cy_RestoreIRQ
276    .endfunc
277
278    /* Reset handler */
279    .weak    Reset_Handler
280    .type    Reset_Handler, %function
281
282Reset_Handler:
283    bl Cy_OnResetUser
284    cpsid i
285
286/*  Firstly it copies data from read only memory to RAM. There are two schemes
287 *  to copy. One can copy more than one sections. Another can only copy
288 *  one section.  The former scheme needs more instructions and read-only
289 *  data to implement than the latter.
290 *  Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes.  */
291
292#ifdef __STARTUP_COPY_MULTIPLE
293/*  Multiple sections scheme.
294 *
295 *  Between symbol address __copy_table_start__ and __copy_table_end__,
296 *  there are array of triplets, each of which specify:
297 *    offset 0: LMA of start of a section to copy from
298 *    offset 4: VMA of start of a section to copy to
299 *    offset 8: size of the section to copy.
300 *
301 *  All addresses must be aligned to 4 bytes boundary.
302 */
303    ldr    r4, =__copy_table_start__
304    ldr    r5, =__copy_table_end__
305.L_loop0:
306    cmp    r4, r5
307    bge    .L_loop0_done
308    ldr    r1, [r4]
309    ldr    r2, [r4, #4]
310    ldr    r3, [r4, #8]
311    lsls   r3, r3, #2
312.L_loop0_0:
313    subs    r3, #4
314    blt    .L_loop0_0_done
315    ldr    r0, [r1, r3]
316    str    r0, [r2, r3]
317    b    .L_loop0_0
318.L_loop0_0_done:
319    adds    r4, #12
320    b    .L_loop0
321.L_loop0_done:
322#else
323/*  Single section scheme.
324 *
325 *  The ranges of copy from/to are specified by following symbols
326 *    __etext: LMA of start of the section to copy from. Usually end of text
327 *    __data_start__: VMA of start of the section to copy to
328 *    __data_end__: VMA of end of the section to copy to
329 *
330 *  All addresses must be aligned to 4 bytes boundary.
331 */
332    ldr    r1, =__etext
333    ldr    r2, =__data_start__
334    ldr    r3, =__data_end__
335    subs    r3, r2
336    ble    .L_loop1_done
337.L_loop1:
338    subs    r3, #4
339    ldr    r0, [r1,r3]
340    str    r0, [r2,r3]
341    bgt    .L_loop1
342.L_loop1_done:
343#endif /*__STARTUP_COPY_MULTIPLE */
344/*  This part of work usually is done in C library startup code. Otherwise,
345 *  define this macro to enable it in this startup.
346 *
347 *  There are two schemes too. One can clear multiple BSS sections. Another
348 *  can only clear one section. The former is more size expensive than the
349 *  latter.
350 *
351 *  Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.
352 *  Otherwise define macro __STARTUP_CLEAR_BSS to choose the later.
353 */
354#ifdef __STARTUP_CLEAR_BSS_MULTIPLE
355/*  Multiple sections scheme.
356 *
357 *  Between symbol address __copy_table_start__ and __copy_table_end__,
358 *  there are array of tuples specifying:
359 *    offset 0: Start of a BSS section
360 *    offset 4: Size of this BSS section.
361 */
362    ldr    r3, =__zero_table_start__
363    ldr    r4, =__zero_table_end__
364.L_loop2:
365    cmp    r3, r4
366    bge    .L_loop2_done
367    ldr    r1, [r3]
368    ldr    r2, [r3, #4]
369    lsls   r2, r2, #2
370    movs   r0, 0
371.L_loop2_0:
372    subs    r2, #4
373    blt    .L_loop2_0_done
374    str    r0, [r1, r2]
375    b    .L_loop2_0
376.L_loop2_0_done:
377    adds    r3, #8
378    b    .L_loop2
379.L_loop2_done:
380#elif defined (__STARTUP_CLEAR_BSS)
381/*  Single BSS section scheme.
382 *
383 *  The BSS section is specified by following symbols
384 *    __bss_start__: start of the BSS section.
385 *    __bss_end__: end of the BSS section.
386 *
387 *  Both addresses must be aligned to 4 bytes boundary.
388 */
389    ldr    r1, =__bss_start__
390    ldr    r2, =__bss_end__
391    movs    r0, 0
392    subs    r2, r1
393    ble    .L_loop3_done
394.L_loop3:
395    subs    r2, #4
396    str    r0, [r1, r2]
397    bgt    .L_loop3
398.L_loop3_done:
399#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */
400
401#ifdef RAM_VECTORS_SUPPORT
402    /* Update Vector Table Offset Register. */
403    ldr r0, =__ramVectors
404#else
405    ldr r0, =__Vectors
406#endif
407    ldr r1, =CY_CPU_VTOR_ADDR
408    str r0, [r1]
409    dsb 0xF
410
411    /* Enable the FPU if used */
412    bl Cy_SystemInitFpuEnable
413
414#ifndef __NO_SYSTEM_INIT
415    bl    SystemInit
416#endif
417
418    cpsie i
419
420#ifndef __START
421#define __START _start
422#endif
423    bl    __START
424
425    /* Should never get here */
426    b   .
427
428    .pool
429    .size    Reset_Handler, . - Reset_Handler
430
431    .align    1
432    .thumb_func
433    .weak    Default_Handler
434    .type    Default_Handler, %function
435
436Default_Handler:
437    b    .
438    .size    Default_Handler, . - Default_Handler
439
440
441    .weak    Cy_SysLib_FaultHandler
442    .type    Cy_SysLib_FaultHandler, %function
443
444Cy_SysLib_FaultHandler:
445    b    .
446    .size    Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler
447    .type Fault_Handler, %function
448
449Fault_Handler:
450    /* Storing LR content for Creator call stack trace */
451    push {LR}
452    movs r0, #4
453    mov r1, LR
454    tst r0, r1
455    beq .L_MSP
456    mrs r0, PSP
457    b .L_API_call
458.L_MSP:
459    mrs r0, MSP
460.L_API_call:
461    /* Compensation of stack pointer address due to pushing 4 bytes of LR */
462    adds r0, r0, #4
463    bl Cy_SysLib_FaultHandler
464    b   .
465    .size    Fault_Handler, . - Fault_Handler
466
467.macro    def_fault_Handler    fault_handler_name
468    .weak    \fault_handler_name
469    .set    \fault_handler_name, Fault_Handler
470    .endm
471
472/*    Macro to define default handlers. Default handler
473 *    will be weak symbol and just dead loops. They can be
474 *    overwritten by other handlers */
475    .macro    def_irq_handler    handler_name
476    .weak    \handler_name
477    .set    \handler_name, Default_Handler
478    .endm
479
480    def_irq_handler   NMI_Handler
481
482    def_fault_Handler HardFault_Handler
483    def_fault_Handler MemManage_Handler
484    def_fault_Handler BusFault_Handler
485    def_fault_Handler UsageFault_Handler
486
487    def_irq_handler  DebugMon_Handler
488    def_irq_handler  SysTick_Handler
489
490    def_irq_handler  ioss_interrupts_gpio_0_IRQHandler       /* GPIO Port Interrupt #0 */
491    def_irq_handler  ioss_interrupts_gpio_1_IRQHandler       /* GPIO Port Interrupt #1 */
492    def_irq_handler  ioss_interrupts_gpio_2_IRQHandler       /* GPIO Port Interrupt #2 */
493    def_irq_handler  ioss_interrupts_gpio_3_IRQHandler       /* GPIO Port Interrupt #3 */
494    def_irq_handler  ioss_interrupts_gpio_4_IRQHandler       /* GPIO Port Interrupt #4 */
495    def_irq_handler  ioss_interrupts_gpio_5_IRQHandler       /* GPIO Port Interrupt #5 */
496    def_irq_handler  ioss_interrupts_gpio_6_IRQHandler       /* GPIO Port Interrupt #6 */
497    def_irq_handler  ioss_interrupts_gpio_7_IRQHandler       /* GPIO Port Interrupt #7 */
498    def_irq_handler  ioss_interrupts_gpio_8_IRQHandler       /* GPIO Port Interrupt #8 */
499    def_irq_handler  ioss_interrupts_gpio_9_IRQHandler       /* GPIO Port Interrupt #9 */
500    def_irq_handler  ioss_interrupts_gpio_10_IRQHandler      /* GPIO Port Interrupt #10 */
501    def_irq_handler  ioss_interrupts_gpio_11_IRQHandler      /* GPIO Port Interrupt #11 */
502    def_irq_handler  ioss_interrupts_gpio_12_IRQHandler      /* GPIO Port Interrupt #12 */
503    def_irq_handler  ioss_interrupts_gpio_13_IRQHandler      /* GPIO Port Interrupt #13 */
504    def_irq_handler  ioss_interrupts_gpio_14_IRQHandler      /* GPIO Port Interrupt #14 */
505    def_irq_handler  ioss_interrupt_gpio_IRQHandler          /* GPIO All Ports */
506    def_irq_handler  ioss_interrupt_vdd_IRQHandler           /* GPIO Supply Detect Interrupt */
507    def_irq_handler  lpcomp_interrupt_IRQHandler             /* Low Power Comparator Interrupt */
508    def_irq_handler  scb_8_interrupt_IRQHandler              /* Serial Communication Block #8 (DeepSleep capable) */
509    def_irq_handler  srss_interrupt_mcwdt_0_IRQHandler       /* Multi Counter Watchdog Timer interrupt */
510    def_irq_handler  srss_interrupt_mcwdt_1_IRQHandler       /* Multi Counter Watchdog Timer interrupt */
511    def_irq_handler  srss_interrupt_backup_IRQHandler        /* Backup domain interrupt */
512    def_irq_handler  srss_interrupt_IRQHandler               /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */
513    def_irq_handler  cpuss_interrupts_ipc_0_IRQHandler       /* CPUSS Inter Process Communication Interrupt #0 */
514    def_irq_handler  cpuss_interrupts_ipc_1_IRQHandler       /* CPUSS Inter Process Communication Interrupt #1 */
515    def_irq_handler  cpuss_interrupts_ipc_2_IRQHandler       /* CPUSS Inter Process Communication Interrupt #2 */
516    def_irq_handler  cpuss_interrupts_ipc_3_IRQHandler       /* CPUSS Inter Process Communication Interrupt #3 */
517    def_irq_handler  cpuss_interrupts_ipc_4_IRQHandler       /* CPUSS Inter Process Communication Interrupt #4 */
518    def_irq_handler  cpuss_interrupts_ipc_5_IRQHandler       /* CPUSS Inter Process Communication Interrupt #5 */
519    def_irq_handler  cpuss_interrupts_ipc_6_IRQHandler       /* CPUSS Inter Process Communication Interrupt #6 */
520    def_irq_handler  cpuss_interrupts_ipc_7_IRQHandler       /* CPUSS Inter Process Communication Interrupt #7 */
521    def_irq_handler  cpuss_interrupts_ipc_8_IRQHandler       /* CPUSS Inter Process Communication Interrupt #8 */
522    def_irq_handler  cpuss_interrupts_ipc_9_IRQHandler       /* CPUSS Inter Process Communication Interrupt #9 */
523    def_irq_handler  cpuss_interrupts_ipc_10_IRQHandler      /* CPUSS Inter Process Communication Interrupt #10 */
524    def_irq_handler  cpuss_interrupts_ipc_11_IRQHandler      /* CPUSS Inter Process Communication Interrupt #11 */
525    def_irq_handler  cpuss_interrupts_ipc_12_IRQHandler      /* CPUSS Inter Process Communication Interrupt #12 */
526    def_irq_handler  cpuss_interrupts_ipc_13_IRQHandler      /* CPUSS Inter Process Communication Interrupt #13 */
527    def_irq_handler  cpuss_interrupts_ipc_14_IRQHandler      /* CPUSS Inter Process Communication Interrupt #14 */
528    def_irq_handler  cpuss_interrupts_ipc_15_IRQHandler      /* CPUSS Inter Process Communication Interrupt #15 */
529    def_irq_handler  scb_0_interrupt_IRQHandler              /* Serial Communication Block #0 */
530    def_irq_handler  scb_1_interrupt_IRQHandler              /* Serial Communication Block #1 */
531    def_irq_handler  scb_2_interrupt_IRQHandler              /* Serial Communication Block #2 */
532    def_irq_handler  scb_3_interrupt_IRQHandler              /* Serial Communication Block #3 */
533    def_irq_handler  scb_4_interrupt_IRQHandler              /* Serial Communication Block #4 */
534    def_irq_handler  scb_5_interrupt_IRQHandler              /* Serial Communication Block #5 */
535    def_irq_handler  scb_6_interrupt_IRQHandler              /* Serial Communication Block #6 */
536    def_irq_handler  scb_7_interrupt_IRQHandler              /* Serial Communication Block #7 */
537    def_irq_handler  scb_9_interrupt_IRQHandler              /* Serial Communication Block #9 */
538    def_irq_handler  scb_10_interrupt_IRQHandler             /* Serial Communication Block #10 */
539    def_irq_handler  scb_11_interrupt_IRQHandler             /* Serial Communication Block #11 */
540    def_irq_handler  scb_12_interrupt_IRQHandler             /* Serial Communication Block #12 */
541    def_irq_handler  csd_interrupt_IRQHandler                /* CSD (Capsense) interrupt */
542    def_irq_handler  cpuss_interrupts_dmac_0_IRQHandler      /* CPUSS DMAC, Channel #0 */
543    def_irq_handler  cpuss_interrupts_dmac_1_IRQHandler      /* CPUSS DMAC, Channel #1 */
544    def_irq_handler  cpuss_interrupts_dmac_2_IRQHandler      /* CPUSS DMAC, Channel #2 */
545    def_irq_handler  cpuss_interrupts_dmac_3_IRQHandler      /* CPUSS DMAC, Channel #3 */
546    def_irq_handler  cpuss_interrupts_dw0_0_IRQHandler       /* CPUSS DataWire #0, Channel #0 */
547    def_irq_handler  cpuss_interrupts_dw0_1_IRQHandler       /* CPUSS DataWire #0, Channel #1 */
548    def_irq_handler  cpuss_interrupts_dw0_2_IRQHandler       /* CPUSS DataWire #0, Channel #2 */
549    def_irq_handler  cpuss_interrupts_dw0_3_IRQHandler       /* CPUSS DataWire #0, Channel #3 */
550    def_irq_handler  cpuss_interrupts_dw0_4_IRQHandler       /* CPUSS DataWire #0, Channel #4 */
551    def_irq_handler  cpuss_interrupts_dw0_5_IRQHandler       /* CPUSS DataWire #0, Channel #5 */
552    def_irq_handler  cpuss_interrupts_dw0_6_IRQHandler       /* CPUSS DataWire #0, Channel #6 */
553    def_irq_handler  cpuss_interrupts_dw0_7_IRQHandler       /* CPUSS DataWire #0, Channel #7 */
554    def_irq_handler  cpuss_interrupts_dw0_8_IRQHandler       /* CPUSS DataWire #0, Channel #8 */
555    def_irq_handler  cpuss_interrupts_dw0_9_IRQHandler       /* CPUSS DataWire #0, Channel #9 */
556    def_irq_handler  cpuss_interrupts_dw0_10_IRQHandler      /* CPUSS DataWire #0, Channel #10 */
557    def_irq_handler  cpuss_interrupts_dw0_11_IRQHandler      /* CPUSS DataWire #0, Channel #11 */
558    def_irq_handler  cpuss_interrupts_dw0_12_IRQHandler      /* CPUSS DataWire #0, Channel #12 */
559    def_irq_handler  cpuss_interrupts_dw0_13_IRQHandler      /* CPUSS DataWire #0, Channel #13 */
560    def_irq_handler  cpuss_interrupts_dw0_14_IRQHandler      /* CPUSS DataWire #0, Channel #14 */
561    def_irq_handler  cpuss_interrupts_dw0_15_IRQHandler      /* CPUSS DataWire #0, Channel #15 */
562    def_irq_handler  cpuss_interrupts_dw0_16_IRQHandler      /* CPUSS DataWire #0, Channel #16 */
563    def_irq_handler  cpuss_interrupts_dw0_17_IRQHandler      /* CPUSS DataWire #0, Channel #17 */
564    def_irq_handler  cpuss_interrupts_dw0_18_IRQHandler      /* CPUSS DataWire #0, Channel #18 */
565    def_irq_handler  cpuss_interrupts_dw0_19_IRQHandler      /* CPUSS DataWire #0, Channel #19 */
566    def_irq_handler  cpuss_interrupts_dw0_20_IRQHandler      /* CPUSS DataWire #0, Channel #20 */
567    def_irq_handler  cpuss_interrupts_dw0_21_IRQHandler      /* CPUSS DataWire #0, Channel #21 */
568    def_irq_handler  cpuss_interrupts_dw0_22_IRQHandler      /* CPUSS DataWire #0, Channel #22 */
569    def_irq_handler  cpuss_interrupts_dw0_23_IRQHandler      /* CPUSS DataWire #0, Channel #23 */
570    def_irq_handler  cpuss_interrupts_dw0_24_IRQHandler      /* CPUSS DataWire #0, Channel #24 */
571    def_irq_handler  cpuss_interrupts_dw0_25_IRQHandler      /* CPUSS DataWire #0, Channel #25 */
572    def_irq_handler  cpuss_interrupts_dw0_26_IRQHandler      /* CPUSS DataWire #0, Channel #26 */
573    def_irq_handler  cpuss_interrupts_dw0_27_IRQHandler      /* CPUSS DataWire #0, Channel #27 */
574    def_irq_handler  cpuss_interrupts_dw0_28_IRQHandler      /* CPUSS DataWire #0, Channel #28 */
575    def_irq_handler  cpuss_interrupts_dw1_0_IRQHandler       /* CPUSS DataWire #1, Channel #0 */
576    def_irq_handler  cpuss_interrupts_dw1_1_IRQHandler       /* CPUSS DataWire #1, Channel #1 */
577    def_irq_handler  cpuss_interrupts_dw1_2_IRQHandler       /* CPUSS DataWire #1, Channel #2 */
578    def_irq_handler  cpuss_interrupts_dw1_3_IRQHandler       /* CPUSS DataWire #1, Channel #3 */
579    def_irq_handler  cpuss_interrupts_dw1_4_IRQHandler       /* CPUSS DataWire #1, Channel #4 */
580    def_irq_handler  cpuss_interrupts_dw1_5_IRQHandler       /* CPUSS DataWire #1, Channel #5 */
581    def_irq_handler  cpuss_interrupts_dw1_6_IRQHandler       /* CPUSS DataWire #1, Channel #6 */
582    def_irq_handler  cpuss_interrupts_dw1_7_IRQHandler       /* CPUSS DataWire #1, Channel #7 */
583    def_irq_handler  cpuss_interrupts_dw1_8_IRQHandler       /* CPUSS DataWire #1, Channel #8 */
584    def_irq_handler  cpuss_interrupts_dw1_9_IRQHandler       /* CPUSS DataWire #1, Channel #9 */
585    def_irq_handler  cpuss_interrupts_dw1_10_IRQHandler      /* CPUSS DataWire #1, Channel #10 */
586    def_irq_handler  cpuss_interrupts_dw1_11_IRQHandler      /* CPUSS DataWire #1, Channel #11 */
587    def_irq_handler  cpuss_interrupts_dw1_12_IRQHandler      /* CPUSS DataWire #1, Channel #12 */
588    def_irq_handler  cpuss_interrupts_dw1_13_IRQHandler      /* CPUSS DataWire #1, Channel #13 */
589    def_irq_handler  cpuss_interrupts_dw1_14_IRQHandler      /* CPUSS DataWire #1, Channel #14 */
590    def_irq_handler  cpuss_interrupts_dw1_15_IRQHandler      /* CPUSS DataWire #1, Channel #15 */
591    def_irq_handler  cpuss_interrupts_dw1_16_IRQHandler      /* CPUSS DataWire #1, Channel #16 */
592    def_irq_handler  cpuss_interrupts_dw1_17_IRQHandler      /* CPUSS DataWire #1, Channel #17 */
593    def_irq_handler  cpuss_interrupts_dw1_18_IRQHandler      /* CPUSS DataWire #1, Channel #18 */
594    def_irq_handler  cpuss_interrupts_dw1_19_IRQHandler      /* CPUSS DataWire #1, Channel #19 */
595    def_irq_handler  cpuss_interrupts_dw1_20_IRQHandler      /* CPUSS DataWire #1, Channel #20 */
596    def_irq_handler  cpuss_interrupts_dw1_21_IRQHandler      /* CPUSS DataWire #1, Channel #21 */
597    def_irq_handler  cpuss_interrupts_dw1_22_IRQHandler      /* CPUSS DataWire #1, Channel #22 */
598    def_irq_handler  cpuss_interrupts_dw1_23_IRQHandler      /* CPUSS DataWire #1, Channel #23 */
599    def_irq_handler  cpuss_interrupts_dw1_24_IRQHandler      /* CPUSS DataWire #1, Channel #24 */
600    def_irq_handler  cpuss_interrupts_dw1_25_IRQHandler      /* CPUSS DataWire #1, Channel #25 */
601    def_irq_handler  cpuss_interrupts_dw1_26_IRQHandler      /* CPUSS DataWire #1, Channel #26 */
602    def_irq_handler  cpuss_interrupts_dw1_27_IRQHandler      /* CPUSS DataWire #1, Channel #27 */
603    def_irq_handler  cpuss_interrupts_dw1_28_IRQHandler      /* CPUSS DataWire #1, Channel #28 */
604    def_irq_handler  cpuss_interrupts_fault_0_IRQHandler     /* CPUSS Fault Structure Interrupt #0 */
605    def_irq_handler  cpuss_interrupts_fault_1_IRQHandler     /* CPUSS Fault Structure Interrupt #1 */
606    def_irq_handler  cpuss_interrupt_crypto_IRQHandler       /* CRYPTO Accelerator Interrupt */
607    def_irq_handler  cpuss_interrupt_fm_IRQHandler           /* FLASH Macro Interrupt */
608    def_irq_handler  cpuss_interrupts_cm4_fp_IRQHandler      /* Floating Point operation fault */
609    def_irq_handler  cpuss_interrupts_cm0_cti_0_IRQHandler   /* CM0+ CTI #0 */
610    def_irq_handler  cpuss_interrupts_cm0_cti_1_IRQHandler   /* CM0+ CTI #1 */
611    def_irq_handler  cpuss_interrupts_cm4_cti_0_IRQHandler   /* CM4 CTI #0 */
612    def_irq_handler  cpuss_interrupts_cm4_cti_1_IRQHandler   /* CM4 CTI #1 */
613    def_irq_handler  tcpwm_0_interrupts_0_IRQHandler         /* TCPWM #0, Counter #0 */
614    def_irq_handler  TIMER1_Handler                          /* TCPWM #0, Counter #1 */
615    def_irq_handler  tcpwm_0_interrupts_2_IRQHandler         /* TCPWM #0, Counter #2 */
616    def_irq_handler  tcpwm_0_interrupts_3_IRQHandler         /* TCPWM #0, Counter #3 */
617    def_irq_handler  tcpwm_0_interrupts_4_IRQHandler         /* TCPWM #0, Counter #4 */
618    def_irq_handler  tcpwm_0_interrupts_5_IRQHandler         /* TCPWM #0, Counter #5 */
619    def_irq_handler  tcpwm_0_interrupts_6_IRQHandler         /* TCPWM #0, Counter #6 */
620    def_irq_handler  tcpwm_0_interrupts_7_IRQHandler         /* TCPWM #0, Counter #7 */
621    def_irq_handler  tcpwm_1_interrupts_0_IRQHandler         /* TCPWM #1, Counter #0 */
622    def_irq_handler  tcpwm_1_interrupts_1_IRQHandler         /* TCPWM #1, Counter #1 */
623    def_irq_handler  tcpwm_1_interrupts_2_IRQHandler         /* TCPWM #1, Counter #2 */
624    def_irq_handler  tcpwm_1_interrupts_3_IRQHandler         /* TCPWM #1, Counter #3 */
625    def_irq_handler  tcpwm_1_interrupts_4_IRQHandler         /* TCPWM #1, Counter #4 */
626    def_irq_handler  tcpwm_1_interrupts_5_IRQHandler         /* TCPWM #1, Counter #5 */
627    def_irq_handler  tcpwm_1_interrupts_6_IRQHandler         /* TCPWM #1, Counter #6 */
628    def_irq_handler  tcpwm_1_interrupts_7_IRQHandler         /* TCPWM #1, Counter #7 */
629    def_irq_handler  tcpwm_1_interrupts_8_IRQHandler         /* TCPWM #1, Counter #8 */
630    def_irq_handler  tcpwm_1_interrupts_9_IRQHandler         /* TCPWM #1, Counter #9 */
631    def_irq_handler  tcpwm_1_interrupts_10_IRQHandler        /* TCPWM #1, Counter #10 */
632    def_irq_handler  tcpwm_1_interrupts_11_IRQHandler        /* TCPWM #1, Counter #11 */
633    def_irq_handler  tcpwm_1_interrupts_12_IRQHandler        /* TCPWM #1, Counter #12 */
634    def_irq_handler  tcpwm_1_interrupts_13_IRQHandler        /* TCPWM #1, Counter #13 */
635    def_irq_handler  tcpwm_1_interrupts_14_IRQHandler        /* TCPWM #1, Counter #14 */
636    def_irq_handler  tcpwm_1_interrupts_15_IRQHandler        /* TCPWM #1, Counter #15 */
637    def_irq_handler  tcpwm_1_interrupts_16_IRQHandler        /* TCPWM #1, Counter #16 */
638    def_irq_handler  tcpwm_1_interrupts_17_IRQHandler        /* TCPWM #1, Counter #17 */
639    def_irq_handler  tcpwm_1_interrupts_18_IRQHandler        /* TCPWM #1, Counter #18 */
640    def_irq_handler  tcpwm_1_interrupts_19_IRQHandler        /* TCPWM #1, Counter #19 */
641    def_irq_handler  tcpwm_1_interrupts_20_IRQHandler        /* TCPWM #1, Counter #20 */
642    def_irq_handler  tcpwm_1_interrupts_21_IRQHandler        /* TCPWM #1, Counter #21 */
643    def_irq_handler  tcpwm_1_interrupts_22_IRQHandler        /* TCPWM #1, Counter #22 */
644    def_irq_handler  tcpwm_1_interrupts_23_IRQHandler        /* TCPWM #1, Counter #23 */
645    def_irq_handler  pass_interrupt_sar_IRQHandler           /* SAR ADC interrupt */
646    def_irq_handler  audioss_0_interrupt_i2s_IRQHandler      /* I2S0 Audio interrupt */
647    def_irq_handler  audioss_0_interrupt_pdm_IRQHandler      /* PDM0/PCM0 Audio interrupt */
648    def_irq_handler  audioss_1_interrupt_i2s_IRQHandler      /* I2S1 Audio interrupt */
649    def_irq_handler  profile_interrupt_IRQHandler            /* Energy Profiler interrupt */
650    def_irq_handler  smif_interrupt_IRQHandler               /* Serial Memory Interface interrupt */
651    def_irq_handler  usb_interrupt_hi_IRQHandler             /* USB Interrupt */
652    def_irq_handler  usb_interrupt_med_IRQHandler            /* USB Interrupt */
653    def_irq_handler  usb_interrupt_lo_IRQHandler             /* USB Interrupt */
654    def_irq_handler  sdhc_0_interrupt_wakeup_IRQHandler      /* SDIO wakeup interrupt for mxsdhc */
655    def_irq_handler  sdhc_0_interrupt_general_IRQHandler     /* Consolidated interrupt for mxsdhc for everything else */
656    def_irq_handler  sdhc_1_interrupt_wakeup_IRQHandler      /* EEMC wakeup interrupt for mxsdhc, not used */
657    def_irq_handler  sdhc_1_interrupt_general_IRQHandler     /* Consolidated interrupt for mxsdhc for everything else */
658
659    .end
660
661
662/* [] END OF FILE */
663