1;/**************************************************************************//**
2; * @file
3; * @brief    CMSIS Core Device Startup File
4; *           Silicon Labs EFR32FG13P Device Series
5; ******************************************************************************
6; * # License
7; *
8; * The licensor of this software is Silicon Laboratories Inc. Your use of this
9; * software is governed by the terms of Silicon Labs Master Software License
10; * Agreement (MSLA) available at
11; * www.silabs.com/about-us/legal/master-software-license-agreement. This
12; * software is Third Party Software licensed by Silicon Labs from a third party
13; * and is governed by the sections of the MSLA applicable to Third Party
14; * Software and the additional terms set forth below.
15; *
16; *****************************************************************************/
17;/*
18; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
19; *
20; * SPDX-License-Identifier: Apache-2.0
21; *
22; * Licensed under the Apache License, Version 2.0 (the License); you may
23; * not use this file except in compliance with the License.
24; * You may obtain a copy of the License at
25; *
26; * www.apache.org/licenses/LICENSE-2.0
27; *
28; * Unless required by applicable law or agreed to in writing, software
29; * distributed under the License is distributed on an AS IS BASIS, WITHOUT
30; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31; * See the License for the specific language governing permissions and
32; * limitations under the License.
33; */
34
35;
36; The modules in this file are included in the libraries, and may be replaced
37; by any user-defined modules that define the PUBLIC symbol _program_start or
38; a user defined start symbol.
39; To override the cstartup defined in the library, simply add your modified
40; version to the workbench project.
41;
42; The vector table is normally located at address 0.
43;
44; When debugging in RAM, it can be located in RAM with at least a 128 byte
45; alignment, 256 byte alignment is requied if all interrupt vectors are in use.
46;
47; The name "__vector_table" has special meaning for C-SPY:
48; it is where the SP start value is found, and the NVIC vector
49; table register (VTOR) is initialized to this address if != 0.
50;
51; Cortex-M version
52;
53        MODULE  ?cstartup
54
55        ;; Forward declaration of sections.
56        SECTION CSTACK:DATA:NOROOT(3)
57
58        SECTION .intvec:CODE:NOROOT(8)
59
60        EXTERN  __iar_program_start
61        EXTERN  SystemInit
62        PUBLIC  __vector_table
63        PUBLIC  __vector_table_0x1c
64        PUBLIC  __Vectors
65        PUBLIC  __Vectors_End
66        PUBLIC  __Vectors_Size
67
68        DATA
69
70__vector_table
71        DCD     sfe(CSTACK)
72        DCD     Reset_Handler
73
74        DCD     NMI_Handler
75        DCD     HardFault_Handler
76        DCD     MemManage_Handler
77        DCD     BusFault_Handler
78        DCD     UsageFault_Handler
79__vector_table_0x1c
80        DCD     0
81        DCD     0
82        DCD     0
83        DCD     0
84        DCD     SVC_Handler
85        DCD     DebugMon_Handler
86        DCD     sl_app_properties
87        DCD     PendSV_Handler
88        DCD     SysTick_Handler
89
90        ; External Interrupts
91
92        DCD     EMU_IRQHandler            ; 0: EMU Interrupt
93        DCD     FRC_PRI_IRQHandler        ; 1: FRC_PRI Interrupt
94        DCD     WDOG0_IRQHandler          ; 2: WDOG0 Interrupt
95        DCD     WDOG1_IRQHandler          ; 3: WDOG1 Interrupt
96        DCD     FRC_IRQHandler            ; 4: FRC Interrupt
97        DCD     MODEM_IRQHandler          ; 5: MODEM Interrupt
98        DCD     RAC_SEQ_IRQHandler        ; 6: RAC_SEQ Interrupt
99        DCD     RAC_RSM_IRQHandler        ; 7: RAC_RSM Interrupt
100        DCD     BUFC_IRQHandler           ; 8: BUFC Interrupt
101        DCD     LDMA_IRQHandler           ; 9: LDMA Interrupt
102        DCD     GPIO_EVEN_IRQHandler      ; 10: GPIO_EVEN Interrupt
103        DCD     TIMER0_IRQHandler         ; 11: TIMER0 Interrupt
104        DCD     USART0_RX_IRQHandler      ; 12: USART0_RX Interrupt
105        DCD     USART0_TX_IRQHandler      ; 13: USART0_TX Interrupt
106        DCD     ACMP0_IRQHandler          ; 14: ACMP0 Interrupt
107        DCD     ADC0_IRQHandler           ; 15: ADC0 Interrupt
108        DCD     IDAC0_IRQHandler          ; 16: IDAC0 Interrupt
109        DCD     I2C0_IRQHandler           ; 17: I2C0 Interrupt
110        DCD     GPIO_ODD_IRQHandler       ; 18: GPIO_ODD Interrupt
111        DCD     TIMER1_IRQHandler         ; 19: TIMER1 Interrupt
112        DCD     USART1_RX_IRQHandler      ; 20: USART1_RX Interrupt
113        DCD     USART1_TX_IRQHandler      ; 21: USART1_TX Interrupt
114        DCD     LEUART0_IRQHandler        ; 22: LEUART0 Interrupt
115        DCD     PCNT0_IRQHandler          ; 23: PCNT0 Interrupt
116        DCD     CMU_IRQHandler            ; 24: CMU Interrupt
117        DCD     MSC_IRQHandler            ; 25: MSC Interrupt
118        DCD     CRYPTO0_IRQHandler        ; 26: CRYPTO0 Interrupt
119        DCD     LETIMER0_IRQHandler       ; 27: LETIMER0 Interrupt
120        DCD     AGC_IRQHandler            ; 28: AGC Interrupt
121        DCD     PROTIMER_IRQHandler       ; 29: PROTIMER Interrupt
122        DCD     PRORTC_IRQHandler         ; 30: PRORTC Interrupt
123        DCD     RTCC_IRQHandler           ; 31: RTCC Interrupt
124        DCD     SYNTH_IRQHandler          ; 32: SYNTH Interrupt
125        DCD     CRYOTIMER_IRQHandler      ; 33: CRYOTIMER Interrupt
126        DCD     RFSENSE_IRQHandler        ; 34: RFSENSE Interrupt
127        DCD     FPUEH_IRQHandler          ; 35: FPUEH Interrupt
128        DCD     SMU_IRQHandler            ; 36: SMU Interrupt
129        DCD     WTIMER0_IRQHandler        ; 37: WTIMER0 Interrupt
130        DCD     USART2_RX_IRQHandler      ; 38: USART2_RX Interrupt
131        DCD     USART2_TX_IRQHandler      ; 39: USART2_TX Interrupt
132        DCD     I2C1_IRQHandler           ; 40: I2C1 Interrupt
133        DCD     VDAC0_IRQHandler          ; 41: VDAC0 Interrupt
134        DCD     CSEN_IRQHandler           ; 42: CSEN Interrupt
135        DCD     LESENSE_IRQHandler        ; 43: LESENSE Interrupt
136        DCD     CRYPTO1_IRQHandler        ; 44: CRYPTO1 Interrupt
137        DCD     TRNG0_IRQHandler          ; 45: TRNG0 Interrupt
138        DCD     0                         ; 46: Reserved Interrupt
139
140__Vectors_End
141
142__Vectors       EQU   __vector_table
143__Vectors_Size  EQU   __Vectors_End - __Vectors
144
145
146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
147;;
148;; Default interrupt handlers.
149;;
150        THUMB
151
152        PUBWEAK Reset_Handler
153        SECTION .text:CODE:REORDER:NOROOT(2)
154Reset_Handler
155        LDR     R0, =SystemInit
156        BLX     R0
157        LDR     R0, =__iar_program_start
158        BX      R0
159
160        PUBWEAK NMI_Handler
161        PUBWEAK sl_app_properties
162        SECTION .text:CODE:REORDER:NOROOT(1)
163NMI_Handler
164sl_app_properties     ; Provide a dummy value for the sl_app_properties symbol.
165        B NMI_Handler
166
167        PUBWEAK HardFault_Handler
168        SECTION .text:CODE:REORDER:NOROOT(1)
169HardFault_Handler
170        B HardFault_Handler
171
172        PUBWEAK MemManage_Handler
173        SECTION .text:CODE:REORDER:NOROOT(1)
174MemManage_Handler
175        B MemManage_Handler
176
177        PUBWEAK BusFault_Handler
178        SECTION .text:CODE:REORDER:NOROOT(1)
179BusFault_Handler
180        B BusFault_Handler
181
182        PUBWEAK UsageFault_Handler
183        SECTION .text:CODE:REORDER:NOROOT(1)
184UsageFault_Handler
185        B UsageFault_Handler
186
187        PUBWEAK SVC_Handler
188        SECTION .text:CODE:REORDER:NOROOT(1)
189SVC_Handler
190        B SVC_Handler
191
192        PUBWEAK DebugMon_Handler
193        SECTION .text:CODE:REORDER:NOROOT(1)
194DebugMon_Handler
195        B DebugMon_Handler
196
197        PUBWEAK PendSV_Handler
198        SECTION .text:CODE:REORDER:NOROOT(1)
199PendSV_Handler
200        B PendSV_Handler
201
202        PUBWEAK SysTick_Handler
203        SECTION .text:CODE:REORDER:NOROOT(1)
204SysTick_Handler
205        B SysTick_Handler
206
207        ; Device specific interrupt handlers
208
209        PUBWEAK EMU_IRQHandler
210        SECTION .text:CODE:REORDER:NOROOT(1)
211EMU_IRQHandler
212        B EMU_IRQHandler
213
214        PUBWEAK FRC_PRI_IRQHandler
215        SECTION .text:CODE:REORDER:NOROOT(1)
216FRC_PRI_IRQHandler
217        B FRC_PRI_IRQHandler
218
219        PUBWEAK WDOG0_IRQHandler
220        SECTION .text:CODE:REORDER:NOROOT(1)
221WDOG0_IRQHandler
222        B WDOG0_IRQHandler
223
224        PUBWEAK WDOG1_IRQHandler
225        SECTION .text:CODE:REORDER:NOROOT(1)
226WDOG1_IRQHandler
227        B WDOG1_IRQHandler
228
229        PUBWEAK FRC_IRQHandler
230        SECTION .text:CODE:REORDER:NOROOT(1)
231FRC_IRQHandler
232        B FRC_IRQHandler
233
234        PUBWEAK MODEM_IRQHandler
235        SECTION .text:CODE:REORDER:NOROOT(1)
236MODEM_IRQHandler
237        B MODEM_IRQHandler
238
239        PUBWEAK RAC_SEQ_IRQHandler
240        SECTION .text:CODE:REORDER:NOROOT(1)
241RAC_SEQ_IRQHandler
242        B RAC_SEQ_IRQHandler
243
244        PUBWEAK RAC_RSM_IRQHandler
245        SECTION .text:CODE:REORDER:NOROOT(1)
246RAC_RSM_IRQHandler
247        B RAC_RSM_IRQHandler
248
249        PUBWEAK BUFC_IRQHandler
250        SECTION .text:CODE:REORDER:NOROOT(1)
251BUFC_IRQHandler
252        B BUFC_IRQHandler
253
254        PUBWEAK LDMA_IRQHandler
255        SECTION .text:CODE:REORDER:NOROOT(1)
256LDMA_IRQHandler
257        B LDMA_IRQHandler
258
259        PUBWEAK GPIO_EVEN_IRQHandler
260        SECTION .text:CODE:REORDER:NOROOT(1)
261GPIO_EVEN_IRQHandler
262        B GPIO_EVEN_IRQHandler
263
264        PUBWEAK TIMER0_IRQHandler
265        SECTION .text:CODE:REORDER:NOROOT(1)
266TIMER0_IRQHandler
267        B TIMER0_IRQHandler
268
269        PUBWEAK USART0_RX_IRQHandler
270        SECTION .text:CODE:REORDER:NOROOT(1)
271USART0_RX_IRQHandler
272        B USART0_RX_IRQHandler
273
274        PUBWEAK USART0_TX_IRQHandler
275        SECTION .text:CODE:REORDER:NOROOT(1)
276USART0_TX_IRQHandler
277        B USART0_TX_IRQHandler
278
279        PUBWEAK ACMP0_IRQHandler
280        SECTION .text:CODE:REORDER:NOROOT(1)
281ACMP0_IRQHandler
282        B ACMP0_IRQHandler
283
284        PUBWEAK ADC0_IRQHandler
285        SECTION .text:CODE:REORDER:NOROOT(1)
286ADC0_IRQHandler
287        B ADC0_IRQHandler
288
289        PUBWEAK IDAC0_IRQHandler
290        SECTION .text:CODE:REORDER:NOROOT(1)
291IDAC0_IRQHandler
292        B IDAC0_IRQHandler
293
294        PUBWEAK I2C0_IRQHandler
295        SECTION .text:CODE:REORDER:NOROOT(1)
296I2C0_IRQHandler
297        B I2C0_IRQHandler
298
299        PUBWEAK GPIO_ODD_IRQHandler
300        SECTION .text:CODE:REORDER:NOROOT(1)
301GPIO_ODD_IRQHandler
302        B GPIO_ODD_IRQHandler
303
304        PUBWEAK TIMER1_IRQHandler
305        SECTION .text:CODE:REORDER:NOROOT(1)
306TIMER1_IRQHandler
307        B TIMER1_IRQHandler
308
309        PUBWEAK USART1_RX_IRQHandler
310        SECTION .text:CODE:REORDER:NOROOT(1)
311USART1_RX_IRQHandler
312        B USART1_RX_IRQHandler
313
314        PUBWEAK USART1_TX_IRQHandler
315        SECTION .text:CODE:REORDER:NOROOT(1)
316USART1_TX_IRQHandler
317        B USART1_TX_IRQHandler
318
319        PUBWEAK LEUART0_IRQHandler
320        SECTION .text:CODE:REORDER:NOROOT(1)
321LEUART0_IRQHandler
322        B LEUART0_IRQHandler
323
324        PUBWEAK PCNT0_IRQHandler
325        SECTION .text:CODE:REORDER:NOROOT(1)
326PCNT0_IRQHandler
327        B PCNT0_IRQHandler
328
329        PUBWEAK CMU_IRQHandler
330        SECTION .text:CODE:REORDER:NOROOT(1)
331CMU_IRQHandler
332        B CMU_IRQHandler
333
334        PUBWEAK MSC_IRQHandler
335        SECTION .text:CODE:REORDER:NOROOT(1)
336MSC_IRQHandler
337        B MSC_IRQHandler
338
339        PUBWEAK CRYPTO0_IRQHandler
340        SECTION .text:CODE:REORDER:NOROOT(1)
341CRYPTO0_IRQHandler
342        B CRYPTO0_IRQHandler
343
344        PUBWEAK LETIMER0_IRQHandler
345        SECTION .text:CODE:REORDER:NOROOT(1)
346LETIMER0_IRQHandler
347        B LETIMER0_IRQHandler
348
349        PUBWEAK AGC_IRQHandler
350        SECTION .text:CODE:REORDER:NOROOT(1)
351AGC_IRQHandler
352        B AGC_IRQHandler
353
354        PUBWEAK PROTIMER_IRQHandler
355        SECTION .text:CODE:REORDER:NOROOT(1)
356PROTIMER_IRQHandler
357        B PROTIMER_IRQHandler
358
359        PUBWEAK PRORTC_IRQHandler
360        SECTION .text:CODE:REORDER:NOROOT(1)
361PRORTC_IRQHandler
362        B PRORTC_IRQHandler
363
364        PUBWEAK RTCC_IRQHandler
365        SECTION .text:CODE:REORDER:NOROOT(1)
366RTCC_IRQHandler
367        B RTCC_IRQHandler
368
369        PUBWEAK SYNTH_IRQHandler
370        SECTION .text:CODE:REORDER:NOROOT(1)
371SYNTH_IRQHandler
372        B SYNTH_IRQHandler
373
374        PUBWEAK CRYOTIMER_IRQHandler
375        SECTION .text:CODE:REORDER:NOROOT(1)
376CRYOTIMER_IRQHandler
377        B CRYOTIMER_IRQHandler
378
379        PUBWEAK RFSENSE_IRQHandler
380        SECTION .text:CODE:REORDER:NOROOT(1)
381RFSENSE_IRQHandler
382        B RFSENSE_IRQHandler
383
384        PUBWEAK FPUEH_IRQHandler
385        SECTION .text:CODE:REORDER:NOROOT(1)
386FPUEH_IRQHandler
387        B FPUEH_IRQHandler
388
389        PUBWEAK SMU_IRQHandler
390        SECTION .text:CODE:REORDER:NOROOT(1)
391SMU_IRQHandler
392        B SMU_IRQHandler
393
394        PUBWEAK WTIMER0_IRQHandler
395        SECTION .text:CODE:REORDER:NOROOT(1)
396WTIMER0_IRQHandler
397        B WTIMER0_IRQHandler
398
399        PUBWEAK USART2_RX_IRQHandler
400        SECTION .text:CODE:REORDER:NOROOT(1)
401USART2_RX_IRQHandler
402        B USART2_RX_IRQHandler
403
404        PUBWEAK USART2_TX_IRQHandler
405        SECTION .text:CODE:REORDER:NOROOT(1)
406USART2_TX_IRQHandler
407        B USART2_TX_IRQHandler
408
409        PUBWEAK I2C1_IRQHandler
410        SECTION .text:CODE:REORDER:NOROOT(1)
411I2C1_IRQHandler
412        B I2C1_IRQHandler
413
414        PUBWEAK VDAC0_IRQHandler
415        SECTION .text:CODE:REORDER:NOROOT(1)
416VDAC0_IRQHandler
417        B VDAC0_IRQHandler
418
419        PUBWEAK CSEN_IRQHandler
420        SECTION .text:CODE:REORDER:NOROOT(1)
421CSEN_IRQHandler
422        B CSEN_IRQHandler
423
424        PUBWEAK LESENSE_IRQHandler
425        SECTION .text:CODE:REORDER:NOROOT(1)
426LESENSE_IRQHandler
427        B LESENSE_IRQHandler
428
429        PUBWEAK CRYPTO1_IRQHandler
430        SECTION .text:CODE:REORDER:NOROOT(1)
431CRYPTO1_IRQHandler
432        B CRYPTO1_IRQHandler
433
434        PUBWEAK TRNG0_IRQHandler
435        SECTION .text:CODE:REORDER:NOROOT(1)
436TRNG0_IRQHandler
437        B TRNG0_IRQHandler
438
439
440        END
441