xref: /nrf52832-nimble/nordic/nrfx/mdk/ses_startup_nrf52.s (revision 150812a83cab50279bd772ef6db1bfaf255f2c5b)
1/***********************************************************************************
2 *                           SEGGER Microcontroller GmbH                           *
3 *                               The Embedded Experts                              *
4 ***********************************************************************************
5 *                                                                                 *
6 *                   (c) 2014 - 2018 SEGGER Microcontroller GmbH                   *
7 *                                                                                 *
8 *                  www.segger.com     Support: [email protected]                 *
9 *                                                                                 *
10 ***********************************************************************************
11 *                                                                                 *
12 *        All rights reserved.                                                     *
13 *                                                                                 *
14 *        Redistribution and use in source and binary forms, with or               *
15 *        without modification, are permitted provided that the following          *
16 *        conditions are met:                                                      *
17 *                                                                                 *
18 *        - Redistributions of source code must retain the above copyright         *
19 *          notice, this list of conditions and the following disclaimer.          *
20 *                                                                                 *
21 *        - Neither the name of SEGGER Microcontroller GmbH                        *
22 *          nor the names of its contributors may be used to endorse or            *
23 *          promote products derived from this software without specific           *
24 *          prior written permission.                                              *
25 *                                                                                 *
26 *        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND                   *
27 *        CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,              *
28 *        INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF                 *
29 *        MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE                 *
30 *        DISCLAIMED.                                                              *
31 *        IN NO EVENT SHALL SEGGER Microcontroller GmbH BE LIABLE FOR              *
32 *        ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR                 *
33 *        CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT        *
34 *        OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;          *
35 *        OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF            *
36 *        LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT                *
37 *        (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE        *
38 *        USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH         *
39 *        DAMAGE.                                                                  *
40 *                                                                                 *
41 ***********************************************************************************/
42
43/************************************************************************************
44 *                         Preprocessor Definitions                                 *
45 *                         ------------------------                                 *
46 * VECTORS_IN_RAM                                                                   *
47 *                                                                                  *
48 *   If defined, an area of RAM will large enough to store the vector table         *
49 *   will be reserved.                                                              *
50 *                                                                                  *
51 ************************************************************************************/
52
53  .syntax unified
54  .code 16
55
56  .section .init, "ax"
57  .align 0
58
59/************************************************************************************
60 * Default Exception Handlers                                                       *
61 ************************************************************************************/
62
63
64  .thumb_func
65  .weak   NMI_Handler
66NMI_Handler:
67  b     .
68
69  .thumb_func
70  .weak   HardFault_Handler
71HardFault_Handler:
72  b     .
73
74  .thumb_func
75  .weak   MemoryManagement_Handler
76MemoryManagement_Handler:
77  b     .
78
79  .thumb_func
80  .weak   BusFault_Handler
81BusFault_Handler:
82  b     .
83
84  .thumb_func
85  .weak   UsageFault_Handler
86UsageFault_Handler:
87  b     .
88
89  .thumb_func
90  .weak   SVC_Handler
91SVC_Handler:
92  b     .
93
94  .thumb_func
95  .weak   DebugMon_Handler
96DebugMon_Handler:
97  b     .
98
99  .thumb_func
100  .weak   PendSV_Handler
101PendSV_Handler:
102  b     .
103
104  .thumb_func
105  .weak   SysTick_Handler
106SysTick_Handler:
107  b     .
108
109  .thumb_func
110  .weak   Dummy_Handler
111Dummy_Handler:
112  b     .
113
114/************************************************************************************
115 * Default Interrupt Handlers                                                       *
116 ************************************************************************************/
117
118.weak POWER_CLOCK_IRQHandler
119.thumb_set POWER_CLOCK_IRQHandler, Dummy_Handler
120
121.weak RADIO_IRQHandler
122.thumb_set RADIO_IRQHandler, Dummy_Handler
123
124.weak UARTE0_UART0_IRQHandler
125.thumb_set UARTE0_UART0_IRQHandler, Dummy_Handler
126
127.weak SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler
128.thumb_set SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler, Dummy_Handler
129
130.weak SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler
131.thumb_set SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler, Dummy_Handler
132
133.weak NFCT_IRQHandler
134.thumb_set NFCT_IRQHandler, Dummy_Handler
135
136.weak GPIOTE_IRQHandler
137.thumb_set GPIOTE_IRQHandler, Dummy_Handler
138
139.weak SAADC_IRQHandler
140.thumb_set SAADC_IRQHandler, Dummy_Handler
141
142.weak TIMER0_IRQHandler
143.thumb_set TIMER0_IRQHandler, Dummy_Handler
144
145.weak TIMER1_IRQHandler
146.thumb_set TIMER1_IRQHandler, Dummy_Handler
147
148.weak TIMER2_IRQHandler
149.thumb_set TIMER2_IRQHandler, Dummy_Handler
150
151.weak RTC0_IRQHandler
152.thumb_set RTC0_IRQHandler, Dummy_Handler
153
154.weak TEMP_IRQHandler
155.thumb_set TEMP_IRQHandler, Dummy_Handler
156
157.weak RNG_IRQHandler
158.thumb_set RNG_IRQHandler, Dummy_Handler
159
160.weak ECB_IRQHandler
161.thumb_set ECB_IRQHandler, Dummy_Handler
162
163.weak CCM_AAR_IRQHandler
164.thumb_set CCM_AAR_IRQHandler, Dummy_Handler
165
166.weak WDT_IRQHandler
167.thumb_set WDT_IRQHandler, Dummy_Handler
168
169.weak RTC1_IRQHandler
170.thumb_set RTC1_IRQHandler, Dummy_Handler
171
172.weak QDEC_IRQHandler
173.thumb_set QDEC_IRQHandler, Dummy_Handler
174
175.weak COMP_LPCOMP_IRQHandler
176.thumb_set COMP_LPCOMP_IRQHandler, Dummy_Handler
177
178.weak SWI0_EGU0_IRQHandler
179.thumb_set SWI0_EGU0_IRQHandler, Dummy_Handler
180
181.weak SWI1_EGU1_IRQHandler
182.thumb_set SWI1_EGU1_IRQHandler, Dummy_Handler
183
184.weak SWI2_EGU2_IRQHandler
185.thumb_set SWI2_EGU2_IRQHandler, Dummy_Handler
186
187.weak SWI3_EGU3_IRQHandler
188.thumb_set SWI3_EGU3_IRQHandler, Dummy_Handler
189
190.weak SWI4_EGU4_IRQHandler
191.thumb_set SWI4_EGU4_IRQHandler, Dummy_Handler
192
193.weak SWI5_EGU5_IRQHandler
194.thumb_set SWI5_EGU5_IRQHandler, Dummy_Handler
195
196.weak TIMER3_IRQHandler
197.thumb_set TIMER3_IRQHandler, Dummy_Handler
198
199.weak TIMER4_IRQHandler
200.thumb_set TIMER4_IRQHandler, Dummy_Handler
201
202.weak PWM0_IRQHandler
203.thumb_set PWM0_IRQHandler, Dummy_Handler
204
205.weak PDM_IRQHandler
206.thumb_set PDM_IRQHandler, Dummy_Handler
207
208.weak MWU_IRQHandler
209.thumb_set MWU_IRQHandler, Dummy_Handler
210
211.weak PWM1_IRQHandler
212.thumb_set PWM1_IRQHandler, Dummy_Handler
213
214.weak PWM2_IRQHandler
215.thumb_set PWM2_IRQHandler, Dummy_Handler
216
217.weak SPIM2_SPIS2_SPI2_IRQHandler
218.thumb_set SPIM2_SPIS2_SPI2_IRQHandler, Dummy_Handler
219
220.weak RTC2_IRQHandler
221.thumb_set RTC2_IRQHandler, Dummy_Handler
222
223.weak I2S_IRQHandler
224.thumb_set I2S_IRQHandler, Dummy_Handler
225
226.weak FPU_IRQHandler
227.thumb_set FPU_IRQHandler, Dummy_Handler
228
229/************************************************************************************
230 * Reset Handler Extensions                                                         *
231 ************************************************************************************/
232
233  .extern Reset_Handler
234  .global nRFInitialize
235
236  .thumb_func
237nRFInitialize:
238  bx lr
239
240
241/************************************************************************************
242 * Vector Table                                                                     *
243 ************************************************************************************/
244
245  .section .vectors, "ax"
246  .align 0
247  .global _vectors
248  .extern __stack_end__
249
250_vectors:
251  .word __stack_end__
252  .word Reset_Handler
253  .word NMI_Handler
254  .word HardFault_Handler
255  .word MemoryManagement_Handler
256  .word BusFault_Handler
257  .word UsageFault_Handler
258  .word 0                           /*Reserved */
259  .word 0                           /*Reserved */
260  .word 0                           /*Reserved */
261  .word 0                           /*Reserved */
262  .word SVC_Handler
263  .word DebugMon_Handler
264  .word 0                           /*Reserved */
265  .word PendSV_Handler
266  .word SysTick_Handler
267
268/* External Interrupts */
269  .word   POWER_CLOCK_IRQHandler
270  .word   RADIO_IRQHandler
271  .word   UARTE0_UART0_IRQHandler
272  .word   SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler
273  .word   SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler
274  .word   NFCT_IRQHandler
275  .word   GPIOTE_IRQHandler
276  .word   SAADC_IRQHandler
277  .word   TIMER0_IRQHandler
278  .word   TIMER1_IRQHandler
279  .word   TIMER2_IRQHandler
280  .word   RTC0_IRQHandler
281  .word   TEMP_IRQHandler
282  .word   RNG_IRQHandler
283  .word   ECB_IRQHandler
284  .word   CCM_AAR_IRQHandler
285  .word   WDT_IRQHandler
286  .word   RTC1_IRQHandler
287  .word   QDEC_IRQHandler
288  .word   COMP_LPCOMP_IRQHandler
289  .word   SWI0_EGU0_IRQHandler
290  .word   SWI1_EGU1_IRQHandler
291  .word   SWI2_EGU2_IRQHandler
292  .word   SWI3_EGU3_IRQHandler
293  .word   SWI4_EGU4_IRQHandler
294  .word   SWI5_EGU5_IRQHandler
295  .word   TIMER3_IRQHandler
296  .word   TIMER4_IRQHandler
297  .word   PWM0_IRQHandler
298  .word   PDM_IRQHandler
299  .word   0                           /*Reserved */
300  .word   0                           /*Reserved */
301  .word   MWU_IRQHandler
302  .word   PWM1_IRQHandler
303  .word   PWM2_IRQHandler
304  .word   SPIM2_SPIS2_SPI2_IRQHandler
305  .word   RTC2_IRQHandler
306  .word   I2S_IRQHandler
307  .word   FPU_IRQHandler
308  .word   0                           /*Reserved */
309  .word   0                           /*Reserved */
310  .word   0                           /*Reserved */
311  .word   0                           /*Reserved */
312  .word   0                           /*Reserved */
313  .word   0                           /*Reserved */
314  .word   0                           /*Reserved */
315  .word   0                           /*Reserved */
316  .word   0                           /*Reserved */
317  .word   0                           /*Reserved */
318  .word   0                           /*Reserved */
319  .word   0                           /*Reserved */
320  .word   0                           /*Reserved */
321  .word   0                           /*Reserved */
322  .word   0                           /*Reserved */
323  .word   0                           /*Reserved */
324  .word   0                           /*Reserved */
325  .word   0                           /*Reserved */
326  .word   0                           /*Reserved */
327  .word   0                           /*Reserved */
328  .word   0                           /*Reserved */
329  .word   0                           /*Reserved */
330  .word   0                           /*Reserved */
331  .word   0                           /*Reserved */
332  .word   0                           /*Reserved */
333  .word   0                           /*Reserved */
334  .word   0                           /*Reserved */
335  .word   0                           /*Reserved */
336  .word   0                           /*Reserved */
337  .word   0                           /*Reserved */
338  .word   0                           /*Reserved */
339  .word   0                           /*Reserved */
340  .word   0                           /*Reserved */
341  .word   0                           /*Reserved */
342  .word   0                           /*Reserved */
343  .word   0                           /*Reserved */
344  .word   0                           /*Reserved */
345  .word   0                           /*Reserved */
346  .word   0                           /*Reserved */
347  .word   0                           /*Reserved */
348  .word   0                           /*Reserved */
349  .word   0                           /*Reserved */
350  .word   0                           /*Reserved */
351  .word   0                           /*Reserved */
352  .word   0                           /*Reserved */
353  .word   0                           /*Reserved */
354  .word   0                           /*Reserved */
355  .word   0                           /*Reserved */
356  .word   0                           /*Reserved */
357  .word   0                           /*Reserved */
358  .word   0                           /*Reserved */
359  .word   0                           /*Reserved */
360  .word   0                           /*Reserved */
361  .word   0                           /*Reserved */
362  .word   0                           /*Reserved */
363  .word   0                           /*Reserved */
364  .word   0                           /*Reserved */
365  .word   0                           /*Reserved */
366  .word   0                           /*Reserved */
367  .word   0                           /*Reserved */
368  .word   0                           /*Reserved */
369  .word   0                           /*Reserved */
370  .word   0                           /*Reserved */
371  .word   0                           /*Reserved */
372  .word   0                           /*Reserved */
373  .word   0                           /*Reserved */
374  .word   0                           /*Reserved */
375  .word   0                           /*Reserved */
376  .word   0                           /*Reserved */
377  .word   0                           /*Reserved */
378  .word   0                           /*Reserved */
379  .word   0                           /*Reserved */
380  .word   0                           /*Reserved */
381_vectors_end:
382
383#ifdef VECTORS_IN_RAM
384  .section .vectors_ram, "ax"
385  .align 0
386  .global _vectors_ram
387
388_vectors_ram:
389  .space _vectors_end - _vectors, 0
390#endif
391