aboutsummaryrefslogtreecommitdiff
path: root/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2A41A/gcc/startup_K32L2A41A.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chibios-contrib/ext/mcux-sdk/devices/K32L2A41A/gcc/startup_K32L2A41A.S')
-rw-r--r--lib/chibios-contrib/ext/mcux-sdk/devices/K32L2A41A/gcc/startup_K32L2A41A.S498
1 files changed, 498 insertions, 0 deletions
diff --git a/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2A41A/gcc/startup_K32L2A41A.S b/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2A41A/gcc/startup_K32L2A41A.S
new file mode 100644
index 000000000..e1651cbbd
--- /dev/null
+++ b/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2A41A/gcc/startup_K32L2A41A.S
@@ -0,0 +1,498 @@
1/* ------------------------------------------------------------------------- */
2/* @file: startup_K32L2A41A.s */
3/* @purpose: CMSIS Cortex-M0P Core Device Startup File */
4/* K32L2A41A */
5/* @version: 1.0 */
6/* @date: 2019-10-30 */
7/* @build: b191218 */
8/* ------------------------------------------------------------------------- */
9/* */
10/* Copyright 1997-2016 Freescale Semiconductor, Inc. */
11/* Copyright 2016-2019 NXP */
12/* All rights reserved. */
13/* */
14/* SPDX-License-Identifier: BSD-3-Clause */
15/*****************************************************************************/
16/* Version: GCC for ARM Embedded Processors */
17/*****************************************************************************/
18 .syntax unified
19 .arch armv6-m
20
21 .section .isr_vector, "a"
22 .align 2
23 .globl __isr_vector
24__isr_vector:
25 .long __StackTop /* Top of Stack */
26 .long Reset_Handler /* Reset Handler */
27 .long NMI_Handler /* NMI Handler*/
28 .long HardFault_Handler /* Hard Fault Handler*/
29 .long 0 /* Reserved*/
30 .long 0 /* Reserved*/
31 .long 0 /* Reserved*/
32 .long 0 /* Reserved*/
33 .long 0 /* Reserved*/
34 .long 0 /* Reserved*/
35 .long 0 /* Reserved*/
36 .long SVC_Handler /* SVCall Handler*/
37 .long 0 /* Reserved*/
38 .long 0 /* Reserved*/
39 .long PendSV_Handler /* PendSV Handler*/
40 .long SysTick_Handler /* SysTick Handler*/
41
42 /* External Interrupts*/
43 .long DMA0_04_IRQHandler /* DMA0 channel 0/4 transfer complete*/
44 .long DMA0_15_IRQHandler /* DMA0 channel 1/5 transfer complete*/
45 .long DMA0_26_IRQHandler /* DMA0 channel 2/6 transfer complete*/
46 .long DMA0_37_IRQHandler /* DMA0 channel 3/7 transfer complete*/
47 .long CTI0_DMA0_Error_IRQHandler /* CTI0 or DMA0 error*/
48 .long FLEXIO0_IRQHandler /* FLEXIO0*/
49 .long TPM0_IRQHandler /* TPM0 single interrupt vector for all sources*/
50 .long TPM1_IRQHandler /* TPM1 single interrupt vector for all sources*/
51 .long TPM2_IRQHandler /* TPM2 single interrupt vector for all sources*/
52 .long LPIT0_IRQHandler /* LPIT0 interrupt*/
53 .long LPSPI0_IRQHandler /* LPSPI0 single interrupt vector for all sources*/
54 .long LPSPI1_IRQHandler /* LPSPI1 single interrupt vector for all sources*/
55 .long LPUART0_IRQHandler /* LPUART0 status and error*/
56 .long LPUART1_IRQHandler /* LPUART1 status and error*/
57 .long LPI2C0_IRQHandler /* LPI2C0 interrupt*/
58 .long LPI2C1_IRQHandler /* LPI2C1 interrupt*/
59 .long Reserved32_IRQHandler /* Reserved interrupt*/
60 .long PORTA_IRQHandler /* PORTA Pin detect*/
61 .long PORTB_IRQHandler /* PORTB Pin detect*/
62 .long PORTC_IRQHandler /* PORTC Pin detect*/
63 .long PORTD_IRQHandler /* PORTD Pin detect*/
64 .long PORTE_IRQHandler /* PORTE Pin detect*/
65 .long LLWU_IRQHandler /* Low leakage wakeup */
66 .long Reserved39_IRQHandler /* Reserved interrupt*/
67 .long USB0_IRQHandler /* USB0 interrupt*/
68 .long ADC0_IRQHandler /* ADC0 interrupt*/
69 .long LPTMR0_IRQHandler /* LPTMR0 interrupt*/
70 .long RTC_Seconds_IRQHandler /* RTC seconds*/
71 .long INTMUX0_0_IRQHandler /* INTMUX0 channel 0 interrupt*/
72 .long INTMUX0_1_IRQHandler /* INTMUX0 channel 1 interrupt*/
73 .long INTMUX0_2_IRQHandler /* INTMUX0 channel 2 interrupt*/
74 .long INTMUX0_3_IRQHandler /* INTMUX0 channel 3 interrupt*/
75 .long LPTMR1_IRQHandler /* LPTMR1 interrupt (INTMUX source IRQ0)*/
76 .long Reserved49_IRQHandler /* Reserved interrupt*/
77 .long Reserved50_IRQHandler /* Reserved interrupt*/
78 .long Reserved51_IRQHandler /* Reserved interrupt*/
79 .long LPSPI2_IRQHandler /* LPSPI2 single interrupt vector for all sources (INTMUX source IRQ4)*/
80 .long LPUART2_IRQHandler /* LPUART2 status and error (INTMUX source IRQ5)*/
81 .long EMVSIM0_IRQHandler /* EMVSIM0 interrupt (INTMUX source IRQ6)*/
82 .long LPI2C2_IRQHandler /* LPI2C2 interrupt (INTMUX source IRQ7)*/
83 .long TSI0_IRQHandler /* TSI0 interrupt (INTMUX source IRQ8)*/
84 .long PMC_IRQHandler /* PMC interrupt (INTMUX source IRQ9)*/
85 .long FTFA_IRQHandler /* FTFA interrupt (INTMUX source IRQ10)*/
86 .long SCG_IRQHandler /* SCG interrupt (INTMUX source IRQ11)*/
87 .long WDOG0_IRQHandler /* WDOG0 interrupt (INTMUX source IRQ12)*/
88 .long DAC0_IRQHandler /* DAC0 interrupt (INTMUX source IRQ13)*/
89 .long TRNG_IRQHandler /* TRNG interrupt (INTMUX source IRQ14)*/
90 .long RCM_IRQHandler /* RCM interrupt (INTMUX source IRQ15)*/
91 .long CMP0_IRQHandler /* CMP0 interrupt (INTMUX source IRQ16)*/
92 .long CMP1_IRQHandler /* CMP1 interrupt (INTMUX source IRQ17)*/
93 .long RTC_IRQHandler /* RTC Alarm interrupt (INTMUX source IRQ18)*/
94 .long Reserved67_IRQHandler /* Reserved interrupt*/
95 .long Reserved68_IRQHandler /* Reserved interrupt*/
96 .long Reserved69_IRQHandler /* Reserved interrupt*/
97 .long Reserved70_IRQHandler /* Reserved interrupt*/
98 .long Reserved71_IRQHandler /* Reserved interrupt*/
99 .long Reserved72_IRQHandler /* Reserved interrupt*/
100 .long Reserved73_IRQHandler /* Reserved interrupt*/
101 .long Reserved74_IRQHandler /* Reserved interrupt*/
102 .long Reserved75_IRQHandler /* Reserved interrupt*/
103 .long Reserved76_IRQHandler /* Reserved interrupt*/
104 .long Reserved77_IRQHandler /* Reserved interrupt*/
105 .long Reserved78_IRQHandler /* Reserved interrupt*/
106 .long Reserved79_IRQHandler /* Reserved interrupt*/
107
108 .size __isr_vector, . - __isr_vector
109
110/* Flash Configuration */
111 .section .FlashConfig, "a"
112 .long 0xFFFFFFFF
113 .long 0xFFFFFFFF
114 .long 0xFFFFFFFF
115 .long 0xFFFF3DFE
116
117 .text
118 .thumb
119
120/* Reset Handler */
121
122 .thumb_func
123 .align 2
124 .globl Reset_Handler
125 .weak Reset_Handler
126 .type Reset_Handler, %function
127Reset_Handler:
128 cpsid i /* Mask interrupts */
129 .equ VTOR, 0xE000ED08
130 ldr r0, =VTOR
131 ldr r1, =__isr_vector
132 str r1, [r0]
133 ldr r2, [r1]
134 msr msp, r2
135#ifndef __NO_SYSTEM_INIT
136 ldr r0,=SystemInit
137 blx r0
138#endif
139/* Loop to copy data from read only memory to RAM. The ranges
140 * of copy from/to are specified by following symbols evaluated in
141 * linker script.
142 * __etext: End of code section, i.e., begin of data sections to copy from.
143 * __data_start__/__data_end__: RAM address range that data should be
144 * copied to. Both must be aligned to 4 bytes boundary. */
145
146 ldr r1, =__etext
147 ldr r2, =__data_start__
148 ldr r3, =__data_end__
149
150 subs r3, r2
151 ble .LC0
152
153.LC1:
154 subs r3, 4
155 ldr r0, [r1,r3]
156 str r0, [r2,r3]
157 bgt .LC1
158.LC0:
159
160#ifdef __STARTUP_CLEAR_BSS
161/* This part of work usually is done in C library startup code. Otherwise,
162 * define this macro to enable it in this startup.
163 *
164 * Loop to zero out BSS section, which uses following symbols
165 * in linker script:
166 * __bss_start__: start of BSS section. Must align to 4
167 * __bss_end__: end of BSS section. Must align to 4
168 */
169 ldr r1, =__bss_start__
170 ldr r2, =__bss_end__
171
172 subs r2, r1
173 ble .LC3
174
175 movs r0, 0
176.LC2:
177 subs r2, 4
178 str r0, [r1, r2]
179 bge .LC2
180.LC3:
181#endif
182 cpsie i /* Unmask interrupts */
183#ifndef __START
184#define __START _start
185#endif
186#ifndef __ATOLLIC__
187 ldr r0,=__START
188 blx r0
189#else
190 ldr r0,=__libc_init_array
191 blx r0
192 ldr r0,=main
193 bx r0
194#endif
195 .pool
196 .size Reset_Handler, . - Reset_Handler
197
198 .align 1
199 .thumb_func
200 .weak DefaultISR
201 .type DefaultISR, %function
202DefaultISR:
203 ldr r0, =DefaultISR
204 bx r0
205 .size DefaultISR, . - DefaultISR
206
207 .align 1
208 .thumb_func
209 .weak NMI_Handler
210 .type NMI_Handler, %function
211NMI_Handler:
212 ldr r0,=NMI_Handler
213 bx r0
214 .size NMI_Handler, . - NMI_Handler
215
216 .align 1
217 .thumb_func
218 .weak HardFault_Handler
219 .type HardFault_Handler, %function
220HardFault_Handler:
221 ldr r0,=HardFault_Handler
222 bx r0
223 .size HardFault_Handler, . - HardFault_Handler
224
225 .align 1
226 .thumb_func
227 .weak SVC_Handler
228 .type SVC_Handler, %function
229SVC_Handler:
230 ldr r0,=SVC_Handler
231 bx r0
232 .size SVC_Handler, . - SVC_Handler
233
234 .align 1
235 .thumb_func
236 .weak PendSV_Handler
237 .type PendSV_Handler, %function
238PendSV_Handler:
239 ldr r0,=PendSV_Handler
240 bx r0
241 .size PendSV_Handler, . - PendSV_Handler
242
243 .align 1
244 .thumb_func
245 .weak SysTick_Handler
246 .type SysTick_Handler, %function
247SysTick_Handler:
248 ldr r0,=SysTick_Handler
249 bx r0
250 .size SysTick_Handler, . - SysTick_Handler
251
252 .align 1
253 .thumb_func
254 .weak DMA0_04_IRQHandler
255 .type DMA0_04_IRQHandler, %function
256DMA0_04_IRQHandler:
257 ldr r0,=DMA0_04_DriverIRQHandler
258 bx r0
259 .size DMA0_04_IRQHandler, . - DMA0_04_IRQHandler
260
261 .align 1
262 .thumb_func
263 .weak DMA0_15_IRQHandler
264 .type DMA0_15_IRQHandler, %function
265DMA0_15_IRQHandler:
266 ldr r0,=DMA0_15_DriverIRQHandler
267 bx r0
268 .size DMA0_15_IRQHandler, . - DMA0_15_IRQHandler
269
270 .align 1
271 .thumb_func
272 .weak DMA0_26_IRQHandler
273 .type DMA0_26_IRQHandler, %function
274DMA0_26_IRQHandler:
275 ldr r0,=DMA0_26_DriverIRQHandler
276 bx r0
277 .size DMA0_26_IRQHandler, . - DMA0_26_IRQHandler
278
279 .align 1
280 .thumb_func
281 .weak DMA0_37_IRQHandler
282 .type DMA0_37_IRQHandler, %function
283DMA0_37_IRQHandler:
284 ldr r0,=DMA0_37_DriverIRQHandler
285 bx r0
286 .size DMA0_37_IRQHandler, . - DMA0_37_IRQHandler
287
288 .align 1
289 .thumb_func
290 .weak CTI0_DMA0_Error_IRQHandler
291 .type CTI0_DMA0_Error_IRQHandler, %function
292CTI0_DMA0_Error_IRQHandler:
293 ldr r0,=CTI0_DMA0_Error_DriverIRQHandler
294 bx r0
295 .size CTI0_DMA0_Error_IRQHandler, . - CTI0_DMA0_Error_IRQHandler
296
297 .align 1
298 .thumb_func
299 .weak FLEXIO0_IRQHandler
300 .type FLEXIO0_IRQHandler, %function
301FLEXIO0_IRQHandler:
302 ldr r0,=FLEXIO0_DriverIRQHandler
303 bx r0
304 .size FLEXIO0_IRQHandler, . - FLEXIO0_IRQHandler
305
306 .align 1
307 .thumb_func
308 .weak LPSPI0_IRQHandler
309 .type LPSPI0_IRQHandler, %function
310LPSPI0_IRQHandler:
311 ldr r0,=LPSPI0_DriverIRQHandler
312 bx r0
313 .size LPSPI0_IRQHandler, . - LPSPI0_IRQHandler
314
315 .align 1
316 .thumb_func
317 .weak LPSPI1_IRQHandler
318 .type LPSPI1_IRQHandler, %function
319LPSPI1_IRQHandler:
320 ldr r0,=LPSPI1_DriverIRQHandler
321 bx r0
322 .size LPSPI1_IRQHandler, . - LPSPI1_IRQHandler
323
324 .align 1
325 .thumb_func
326 .weak LPUART0_IRQHandler
327 .type LPUART0_IRQHandler, %function
328LPUART0_IRQHandler:
329 ldr r0,=LPUART0_DriverIRQHandler
330 bx r0
331 .size LPUART0_IRQHandler, . - LPUART0_IRQHandler
332
333 .align 1
334 .thumb_func
335 .weak LPUART1_IRQHandler
336 .type LPUART1_IRQHandler, %function
337LPUART1_IRQHandler:
338 ldr r0,=LPUART1_DriverIRQHandler
339 bx r0
340 .size LPUART1_IRQHandler, . - LPUART1_IRQHandler
341
342 .align 1
343 .thumb_func
344 .weak LPI2C0_IRQHandler
345 .type LPI2C0_IRQHandler, %function
346LPI2C0_IRQHandler:
347 ldr r0,=LPI2C0_DriverIRQHandler
348 bx r0
349 .size LPI2C0_IRQHandler, . - LPI2C0_IRQHandler
350
351 .align 1
352 .thumb_func
353 .weak LPI2C1_IRQHandler
354 .type LPI2C1_IRQHandler, %function
355LPI2C1_IRQHandler:
356 ldr r0,=LPI2C1_DriverIRQHandler
357 bx r0
358 .size LPI2C1_IRQHandler, . - LPI2C1_IRQHandler
359
360 .align 1
361 .thumb_func
362 .weak INTMUX0_0_IRQHandler
363 .type INTMUX0_0_IRQHandler, %function
364INTMUX0_0_IRQHandler:
365 ldr r0,=INTMUX0_0_DriverIRQHandler
366 bx r0
367 .size INTMUX0_0_IRQHandler, . - INTMUX0_0_IRQHandler
368
369 .align 1
370 .thumb_func
371 .weak INTMUX0_1_IRQHandler
372 .type INTMUX0_1_IRQHandler, %function
373INTMUX0_1_IRQHandler:
374 ldr r0,=INTMUX0_1_DriverIRQHandler
375 bx r0
376 .size INTMUX0_1_IRQHandler, . - INTMUX0_1_IRQHandler
377
378 .align 1
379 .thumb_func
380 .weak INTMUX0_2_IRQHandler
381 .type INTMUX0_2_IRQHandler, %function
382INTMUX0_2_IRQHandler:
383 ldr r0,=INTMUX0_2_DriverIRQHandler
384 bx r0
385 .size INTMUX0_2_IRQHandler, . - INTMUX0_2_IRQHandler
386
387 .align 1
388 .thumb_func
389 .weak INTMUX0_3_IRQHandler
390 .type INTMUX0_3_IRQHandler, %function
391INTMUX0_3_IRQHandler:
392 ldr r0,=INTMUX0_3_DriverIRQHandler
393 bx r0
394 .size INTMUX0_3_IRQHandler, . - INTMUX0_3_IRQHandler
395
396 .align 1
397 .thumb_func
398 .weak LPSPI2_IRQHandler
399 .type LPSPI2_IRQHandler, %function
400LPSPI2_IRQHandler:
401 ldr r0,=LPSPI2_DriverIRQHandler
402 bx r0
403 .size LPSPI2_IRQHandler, . - LPSPI2_IRQHandler
404
405 .align 1
406 .thumb_func
407 .weak LPUART2_IRQHandler
408 .type LPUART2_IRQHandler, %function
409LPUART2_IRQHandler:
410 ldr r0,=LPUART2_DriverIRQHandler
411 bx r0
412 .size LPUART2_IRQHandler, . - LPUART2_IRQHandler
413
414 .align 1
415 .thumb_func
416 .weak LPI2C2_IRQHandler
417 .type LPI2C2_IRQHandler, %function
418LPI2C2_IRQHandler:
419 ldr r0,=LPI2C2_DriverIRQHandler
420 bx r0
421 .size LPI2C2_IRQHandler, . - LPI2C2_IRQHandler
422
423
424/* Macro to define default handlers. Default handler
425 * will be weak symbol and just dead loops. They can be
426 * overwritten by other handlers */
427 .macro def_irq_handler handler_name
428 .weak \handler_name
429 .set \handler_name, DefaultISR
430 .endm
431
432/* Exception Handlers */
433 def_irq_handler DMA0_04_DriverIRQHandler
434 def_irq_handler DMA0_15_DriverIRQHandler
435 def_irq_handler DMA0_26_DriverIRQHandler
436 def_irq_handler DMA0_37_DriverIRQHandler
437 def_irq_handler CTI0_DMA0_Error_DriverIRQHandler
438 def_irq_handler FLEXIO0_DriverIRQHandler
439 def_irq_handler TPM0_IRQHandler
440 def_irq_handler TPM1_IRQHandler
441 def_irq_handler TPM2_IRQHandler
442 def_irq_handler LPIT0_IRQHandler
443 def_irq_handler LPSPI0_DriverIRQHandler
444 def_irq_handler LPSPI1_DriverIRQHandler
445 def_irq_handler LPUART0_DriverIRQHandler
446 def_irq_handler LPUART1_DriverIRQHandler
447 def_irq_handler LPI2C0_DriverIRQHandler
448 def_irq_handler LPI2C1_DriverIRQHandler
449 def_irq_handler Reserved32_IRQHandler
450 def_irq_handler PORTA_IRQHandler
451 def_irq_handler PORTB_IRQHandler
452 def_irq_handler PORTC_IRQHandler
453 def_irq_handler PORTD_IRQHandler
454 def_irq_handler PORTE_IRQHandler
455 def_irq_handler LLWU_IRQHandler
456 def_irq_handler Reserved39_IRQHandler
457 def_irq_handler USB0_IRQHandler
458 def_irq_handler ADC0_IRQHandler
459 def_irq_handler LPTMR0_IRQHandler
460 def_irq_handler RTC_Seconds_IRQHandler
461 def_irq_handler INTMUX0_0_DriverIRQHandler
462 def_irq_handler INTMUX0_1_DriverIRQHandler
463 def_irq_handler INTMUX0_2_DriverIRQHandler
464 def_irq_handler INTMUX0_3_DriverIRQHandler
465 def_irq_handler LPTMR1_IRQHandler
466 def_irq_handler Reserved49_IRQHandler
467 def_irq_handler Reserved50_IRQHandler
468 def_irq_handler Reserved51_IRQHandler
469 def_irq_handler LPSPI2_DriverIRQHandler
470 def_irq_handler LPUART2_DriverIRQHandler
471 def_irq_handler EMVSIM0_IRQHandler
472 def_irq_handler LPI2C2_DriverIRQHandler
473 def_irq_handler TSI0_IRQHandler
474 def_irq_handler PMC_IRQHandler
475 def_irq_handler FTFA_IRQHandler
476 def_irq_handler SCG_IRQHandler
477 def_irq_handler WDOG0_IRQHandler
478 def_irq_handler DAC0_IRQHandler
479 def_irq_handler TRNG_IRQHandler
480 def_irq_handler RCM_IRQHandler
481 def_irq_handler CMP0_IRQHandler
482 def_irq_handler CMP1_IRQHandler
483 def_irq_handler RTC_IRQHandler
484 def_irq_handler Reserved67_IRQHandler
485 def_irq_handler Reserved68_IRQHandler
486 def_irq_handler Reserved69_IRQHandler
487 def_irq_handler Reserved70_IRQHandler
488 def_irq_handler Reserved71_IRQHandler
489 def_irq_handler Reserved72_IRQHandler
490 def_irq_handler Reserved73_IRQHandler
491 def_irq_handler Reserved74_IRQHandler
492 def_irq_handler Reserved75_IRQHandler
493 def_irq_handler Reserved76_IRQHandler
494 def_irq_handler Reserved77_IRQHandler
495 def_irq_handler Reserved78_IRQHandler
496 def_irq_handler Reserved79_IRQHandler
497
498 .end