1;/**************************************************************************//**
2; * @file
3; * @brief    CMSIS Core Device Startup File
4; *           Silicon Labs EFR32FG1P 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     FRC_IRQHandler            ; 3: FRC Interrupt
96        DCD     MODEM_IRQHandler          ; 4: MODEM Interrupt
97        DCD     RAC_SEQ_IRQHandler        ; 5: RAC_SEQ Interrupt
98        DCD     RAC_RSM_IRQHandler        ; 6: RAC_RSM Interrupt
99        DCD     BUFC_IRQHandler           ; 7: BUFC Interrupt
100        DCD     LDMA_IRQHandler           ; 8: LDMA Interrupt
101        DCD     GPIO_EVEN_IRQHandler      ; 9: GPIO_EVEN Interrupt
102        DCD     TIMER0_IRQHandler         ; 10: TIMER0 Interrupt
103        DCD     USART0_RX_IRQHandler      ; 11: USART0_RX Interrupt
104        DCD     USART0_TX_IRQHandler      ; 12: USART0_TX Interrupt
105        DCD     ACMP0_IRQHandler          ; 13: ACMP0 Interrupt
106        DCD     ADC0_IRQHandler           ; 14: ADC0 Interrupt
107        DCD     IDAC0_IRQHandler          ; 15: IDAC0 Interrupt
108        DCD     I2C0_IRQHandler           ; 16: I2C0 Interrupt
109        DCD     GPIO_ODD_IRQHandler       ; 17: GPIO_ODD Interrupt
110        DCD     TIMER1_IRQHandler         ; 18: TIMER1 Interrupt
111        DCD     USART1_RX_IRQHandler      ; 19: USART1_RX Interrupt
112        DCD     USART1_TX_IRQHandler      ; 20: USART1_TX Interrupt
113        DCD     LEUART0_IRQHandler        ; 21: LEUART0 Interrupt
114        DCD     PCNT0_IRQHandler          ; 22: PCNT0 Interrupt
115        DCD     CMU_IRQHandler            ; 23: CMU Interrupt
116        DCD     MSC_IRQHandler            ; 24: MSC Interrupt
117        DCD     CRYPTO_IRQHandler         ; 25: CRYPTO Interrupt
118        DCD     LETIMER0_IRQHandler       ; 26: LETIMER0 Interrupt
119        DCD     AGC_IRQHandler            ; 27: AGC Interrupt
120        DCD     PROTIMER_IRQHandler       ; 28: PROTIMER Interrupt
121        DCD     RTCC_IRQHandler           ; 29: RTCC Interrupt
122        DCD     SYNTH_IRQHandler          ; 30: SYNTH Interrupt
123        DCD     CRYOTIMER_IRQHandler      ; 31: CRYOTIMER Interrupt
124        DCD     RFSENSE_IRQHandler        ; 32: RFSENSE Interrupt
125        DCD     FPUEH_IRQHandler          ; 33: FPUEH Interrupt
126
127__Vectors_End
128
129__Vectors       EQU   __vector_table
130__Vectors_Size  EQU   __Vectors_End - __Vectors
131
132
133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
134;;
135;; Default interrupt handlers.
136;;
137        THUMB
138
139        PUBWEAK Reset_Handler
140        SECTION .text:CODE:REORDER:NOROOT(2)
141Reset_Handler
142        LDR     R0, =SystemInit
143        BLX     R0
144        LDR     R0, =__iar_program_start
145        BX      R0
146
147        PUBWEAK NMI_Handler
148        PUBWEAK sl_app_properties
149        SECTION .text:CODE:REORDER:NOROOT(1)
150NMI_Handler
151sl_app_properties     ; Provide a dummy value for the sl_app_properties symbol.
152        B NMI_Handler
153
154        PUBWEAK HardFault_Handler
155        SECTION .text:CODE:REORDER:NOROOT(1)
156HardFault_Handler
157        B HardFault_Handler
158
159        PUBWEAK MemManage_Handler
160        SECTION .text:CODE:REORDER:NOROOT(1)
161MemManage_Handler
162        B MemManage_Handler
163
164        PUBWEAK BusFault_Handler
165        SECTION .text:CODE:REORDER:NOROOT(1)
166BusFault_Handler
167        B BusFault_Handler
168
169        PUBWEAK UsageFault_Handler
170        SECTION .text:CODE:REORDER:NOROOT(1)
171UsageFault_Handler
172        B UsageFault_Handler
173
174        PUBWEAK SVC_Handler
175        SECTION .text:CODE:REORDER:NOROOT(1)
176SVC_Handler
177        B SVC_Handler
178
179        PUBWEAK DebugMon_Handler
180        SECTION .text:CODE:REORDER:NOROOT(1)
181DebugMon_Handler
182        B DebugMon_Handler
183
184        PUBWEAK PendSV_Handler
185        SECTION .text:CODE:REORDER:NOROOT(1)
186PendSV_Handler
187        B PendSV_Handler
188
189        PUBWEAK SysTick_Handler
190        SECTION .text:CODE:REORDER:NOROOT(1)
191SysTick_Handler
192        B SysTick_Handler
193
194        ; Device specific interrupt handlers
195
196        PUBWEAK EMU_IRQHandler
197        SECTION .text:CODE:REORDER:NOROOT(1)
198EMU_IRQHandler
199        B EMU_IRQHandler
200
201        PUBWEAK FRC_PRI_IRQHandler
202        SECTION .text:CODE:REORDER:NOROOT(1)
203FRC_PRI_IRQHandler
204        B FRC_PRI_IRQHandler
205
206        PUBWEAK WDOG0_IRQHandler
207        SECTION .text:CODE:REORDER:NOROOT(1)
208WDOG0_IRQHandler
209        B WDOG0_IRQHandler
210
211        PUBWEAK FRC_IRQHandler
212        SECTION .text:CODE:REORDER:NOROOT(1)
213FRC_IRQHandler
214        B FRC_IRQHandler
215
216        PUBWEAK MODEM_IRQHandler
217        SECTION .text:CODE:REORDER:NOROOT(1)
218MODEM_IRQHandler
219        B MODEM_IRQHandler
220
221        PUBWEAK RAC_SEQ_IRQHandler
222        SECTION .text:CODE:REORDER:NOROOT(1)
223RAC_SEQ_IRQHandler
224        B RAC_SEQ_IRQHandler
225
226        PUBWEAK RAC_RSM_IRQHandler
227        SECTION .text:CODE:REORDER:NOROOT(1)
228RAC_RSM_IRQHandler
229        B RAC_RSM_IRQHandler
230
231        PUBWEAK BUFC_IRQHandler
232        SECTION .text:CODE:REORDER:NOROOT(1)
233BUFC_IRQHandler
234        B BUFC_IRQHandler
235
236        PUBWEAK LDMA_IRQHandler
237        SECTION .text:CODE:REORDER:NOROOT(1)
238LDMA_IRQHandler
239        B LDMA_IRQHandler
240
241        PUBWEAK GPIO_EVEN_IRQHandler
242        SECTION .text:CODE:REORDER:NOROOT(1)
243GPIO_EVEN_IRQHandler
244        B GPIO_EVEN_IRQHandler
245
246        PUBWEAK TIMER0_IRQHandler
247        SECTION .text:CODE:REORDER:NOROOT(1)
248TIMER0_IRQHandler
249        B TIMER0_IRQHandler
250
251        PUBWEAK USART0_RX_IRQHandler
252        SECTION .text:CODE:REORDER:NOROOT(1)
253USART0_RX_IRQHandler
254        B USART0_RX_IRQHandler
255
256        PUBWEAK USART0_TX_IRQHandler
257        SECTION .text:CODE:REORDER:NOROOT(1)
258USART0_TX_IRQHandler
259        B USART0_TX_IRQHandler
260
261        PUBWEAK ACMP0_IRQHandler
262        SECTION .text:CODE:REORDER:NOROOT(1)
263ACMP0_IRQHandler
264        B ACMP0_IRQHandler
265
266        PUBWEAK ADC0_IRQHandler
267        SECTION .text:CODE:REORDER:NOROOT(1)
268ADC0_IRQHandler
269        B ADC0_IRQHandler
270
271        PUBWEAK IDAC0_IRQHandler
272        SECTION .text:CODE:REORDER:NOROOT(1)
273IDAC0_IRQHandler
274        B IDAC0_IRQHandler
275
276        PUBWEAK I2C0_IRQHandler
277        SECTION .text:CODE:REORDER:NOROOT(1)
278I2C0_IRQHandler
279        B I2C0_IRQHandler
280
281        PUBWEAK GPIO_ODD_IRQHandler
282        SECTION .text:CODE:REORDER:NOROOT(1)
283GPIO_ODD_IRQHandler
284        B GPIO_ODD_IRQHandler
285
286        PUBWEAK TIMER1_IRQHandler
287        SECTION .text:CODE:REORDER:NOROOT(1)
288TIMER1_IRQHandler
289        B TIMER1_IRQHandler
290
291        PUBWEAK USART1_RX_IRQHandler
292        SECTION .text:CODE:REORDER:NOROOT(1)
293USART1_RX_IRQHandler
294        B USART1_RX_IRQHandler
295
296        PUBWEAK USART1_TX_IRQHandler
297        SECTION .text:CODE:REORDER:NOROOT(1)
298USART1_TX_IRQHandler
299        B USART1_TX_IRQHandler
300
301        PUBWEAK LEUART0_IRQHandler
302        SECTION .text:CODE:REORDER:NOROOT(1)
303LEUART0_IRQHandler
304        B LEUART0_IRQHandler
305
306        PUBWEAK PCNT0_IRQHandler
307        SECTION .text:CODE:REORDER:NOROOT(1)
308PCNT0_IRQHandler
309        B PCNT0_IRQHandler
310
311        PUBWEAK CMU_IRQHandler
312        SECTION .text:CODE:REORDER:NOROOT(1)
313CMU_IRQHandler
314        B CMU_IRQHandler
315
316        PUBWEAK MSC_IRQHandler
317        SECTION .text:CODE:REORDER:NOROOT(1)
318MSC_IRQHandler
319        B MSC_IRQHandler
320
321        PUBWEAK CRYPTO_IRQHandler
322        SECTION .text:CODE:REORDER:NOROOT(1)
323CRYPTO_IRQHandler
324        B CRYPTO_IRQHandler
325
326        PUBWEAK LETIMER0_IRQHandler
327        SECTION .text:CODE:REORDER:NOROOT(1)
328LETIMER0_IRQHandler
329        B LETIMER0_IRQHandler
330
331        PUBWEAK AGC_IRQHandler
332        SECTION .text:CODE:REORDER:NOROOT(1)
333AGC_IRQHandler
334        B AGC_IRQHandler
335
336        PUBWEAK PROTIMER_IRQHandler
337        SECTION .text:CODE:REORDER:NOROOT(1)
338PROTIMER_IRQHandler
339        B PROTIMER_IRQHandler
340
341        PUBWEAK RTCC_IRQHandler
342        SECTION .text:CODE:REORDER:NOROOT(1)
343RTCC_IRQHandler
344        B RTCC_IRQHandler
345
346        PUBWEAK SYNTH_IRQHandler
347        SECTION .text:CODE:REORDER:NOROOT(1)
348SYNTH_IRQHandler
349        B SYNTH_IRQHandler
350
351        PUBWEAK CRYOTIMER_IRQHandler
352        SECTION .text:CODE:REORDER:NOROOT(1)
353CRYOTIMER_IRQHandler
354        B CRYOTIMER_IRQHandler
355
356        PUBWEAK RFSENSE_IRQHandler
357        SECTION .text:CODE:REORDER:NOROOT(1)
358RFSENSE_IRQHandler
359        B RFSENSE_IRQHandler
360
361        PUBWEAK FPUEH_IRQHandler
362        SECTION .text:CODE:REORDER:NOROOT(1)
363FPUEH_IRQHandler
364        B FPUEH_IRQHandler
365
366
367        END
368