summaryrefslogtreecommitdiff
path: root/bsp/synwit/libraries/SWM341_CSL/CMSIS/DeviceSupport/startup/gcc/startup_SWM341.s
blob: c51dcaf46495fe4dafec5d0a0d7e8bf254d9ce39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
  .syntax unified
  .cpu cortex-m33
  .fpu softvfp
  .thumb

.global  g_pfnVectors
.global  Default_Handler
.extern  FPU_Enable
/* start address for the initialization values of the .data section.
defined in linker script */
.word  _sidata
/* start address for the .data section. defined in linker script */
.word  _sdata
/* end address for the .data section. defined in linker script */
.word  _edata
/* start address for the .bss section. defined in linker script */
.word  _sbss
/* end address for the .bss section. defined in linker script */
.word  _ebss
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */

/**
 * @brief  This is the code that gets called when the processor first
 *          starts execution following a reset event. Only the absolutely
 *          necessary set is performed, after which the application
 *          supplied main() routine is called.
 * @param  None
 * @retval : None
*/

    .section  .text.Reset_Handler
  .weak  Reset_Handler
  .type  Reset_Handler, %function
Reset_Handler:
  ldr   sp, =_estack      /* set stack pointer */

/* Call the clock system initialization function.*/
  bl  FPU_Enable

/* Copy the data segment initializers from flash to SRAM */
  ldr r0, =_sdata
  ldr r1, =_edata
  ldr r2, =_sidata
  movs r3, #0
  b LoopCopyDataInit

CopyDataInit:
  ldr r4, [r2, r3]
  str r4, [r0, r3]
  adds r3, r3, #4

LoopCopyDataInit:
  adds r4, r0, r3
  cmp r4, r1
  bcc CopyDataInit
/* Zero fill the bss segment. */
  ldr r2, =_sbss
  ldr r4, =_ebss
  movs r3, #0
  b LoopFillZerobss

FillZerobss:
  str  r3, [r2]
  adds r2, r2, #4

LoopFillZerobss:
  cmp r2, r4
  bcc FillZerobss

/* Call static constructors */
    bl __libc_init_array
/* Call the application's entry point.*/
  bl  entry
  bx  lr
.size  Reset_Handler, .-Reset_Handler

/**
 * @brief  This is the code that gets called when the processor receives an
 *         unexpected interrupt.  This simply enters an infinite loop, preserving
 *         the system state for examination by a debugger.
 * @param  None
 * @retval None
*/
    .section  .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
  b  Infinite_Loop
  .size  Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex M. Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
*******************************************************************************/
   .section  .isr_vector,"a",%progbits
  .type  g_pfnVectors, %object
  .size  g_pfnVectors, .-g_pfnVectors


g_pfnVectors:
  .word  _estack
  .word  Reset_Handler

  .word  NMI_Handler
  .word  HardFault_Handler
  .word  MemManage_Handler
  .word  BusFault_Handler
  .word  UsageFault_Handler
  .word  0
  .word  0
  .word  0
  .word  0
  .word  SVC_Handler
  .word  DebugMon_Handler
  .word  0
  .word  PendSV_Handler
  .word  SysTick_Handler

  /* External Interrupts */
  .word     UART0_Handler
  .word     UART1_Handler
  .word     TIMR0_Handler
  .word     TIMR1_Handler
  .word     DMA_Handler
  .word     SPI0_Handler
  .word     PWM0_Handler
  .word     WDT_Handler
  .word     UART2_Handler
  .word     PWM1_Handler
  .word     ADC0_Handler
  .word     BTIMR0_Handler
  .word     HALL0_Handler
  .word     PWM2_Handler
  .word     PWMBRK_Handler
  .word     I2C0_Handler
  .word     CAN0_Handler
  .word     SPI1_Handler
  .word     RTC_Handler
  .word     PWM3_Handler
  .word     TIMR2_Handler
  .word     UART3_Handler
  .word     TIMR3_Handler
  .word     ADC1_Handler
  .word     BOD_Handler
  .word     CORDIC_Handler
  .word     BTIMR1_Handler
  .word     PWM4_Handler
  .word     HALL3_Handler
  .word     BTIMR2_Handler
  .word     I2C1_Handler
  .word     BTIMR3_Handler
  .word     ACMP_Handler
  .word     XTALSTOP_Handler
  .word     FSPI_Handler
  .word     GPIOA_Handler
  .word     GPIOB_Handler
  .word     GPIOC_Handler
  .word     GPIOD_Handler
  .word     GPIOM_Handler
  .word     GPION_Handler
  .word     GPIOA0_Handler
  .word     GPIOA1_Handler
  .word     GPIOA5_Handler
  .word     GPIOA6_Handler
  .word     GPIOA10_Handler
  .word     GPIOA11_Handler
  .word     GPIOA12_Handler
  .word     GPIOA13_Handler
  .word     GPIOB0_Handler
  .word     GPIOB1_Handler
  .word     GPIOB2_Handler
  .word     GPIOC0_Handler
  .word     GPIOC1_Handler
  .word     GPIOC2_Handler
  .word     GPIOC3_Handler
  .word     GPIOC4_Handler
  .word     GPIOD3_Handler
  .word     GPIOD4_Handler
  .word     GPIOD5_Handler
  .word     GPIOD6_Handler
  .word     GPIOD7_Handler
  .word     GPIOD8_Handler
  .word     GPIOC9_Handler
  .word     GPIOC10_Handler
  .word     GPIOC11_Handler
  .word     GPIOC12_Handler
  .word     GPIOM0_Handler
  .word     GPIOM1_Handler
  .word     GPIOM2_Handler
  .word     GPIOM3_Handler
  .word     GPIOM4_Handler
  .word     DIV_Handler
  .word     LCD_Handler
  .word     GPIOE_Handler
  .word     JPEG_Handler
  .word     SDIO_Handler
  .word     USB_Handler
  .word     CAN1_Handler
  .word     TIMR4_Handler
  .word     BTIMR4_Handler
  .word     BTIMR5_Handler
  .word     BTIMR6_Handler
  .word     BTIMR7_Handler
  .word     BTIMR8_Handler
  .word     BTIMR9_Handler
  .word     BTIMR10_Handler
  .word     BTIMR11_Handler
  .word     DMA2D_Handler
  .word     QEI_Handler

/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/
   .weak      NMI_Handler
   .thumb_set NMI_Handler,Default_Handler

   .weak      HardFault_Handler
   .thumb_set HardFault_Handler,Default_Handler

   .weak      MemManage_Handler
   .thumb_set MemManage_Handler,Default_Handler

   .weak      BusFault_Handler
   .thumb_set BusFault_Handler,Default_Handler

   .weak      UsageFault_Handler
   .thumb_set UsageFault_Handler,Default_Handler

   .weak      SVC_Handler
   .thumb_set SVC_Handler,Default_Handler

   .weak      DebugMon_Handler
   .thumb_set DebugMon_Handler,Default_Handler

   .weak      PendSV_Handler
   .thumb_set PendSV_Handler,Default_Handler

   .weak      SysTick_Handler
   .thumb_set SysTick_Handler,Default_Handler

   .weak      UART0_Handler
   .thumb_set UART0_Handler,Default_Handler

   .weak      UART1_Handler
   .thumb_set UART1_Handler,Default_Handler

   .weak      TIMR0_Handler
   .thumb_set TIMR0_Handler,Default_Handler

   .weak      TIMR1_Handler
   .thumb_set TIMR1_Handler,Default_Handler

   .weak      DMA_Handler
   .thumb_set DMA_Handler,Default_Handler

   .weak      SPI0_Handler
   .thumb_set SPI0_Handler,Default_Handler

   .weak      PWM0_Handler
   .thumb_set PWM0_Handler,Default_Handler

   .weak      WDT_Handler
   .thumb_set WDT_Handler,Default_Handler

   .weak      UART2_Handler
   .thumb_set UART2_Handler,Default_Handler

   .weak      PWM1_Handler
   .thumb_set PWM1_Handler,Default_Handler

   .weak      ADC0_Handler
   .thumb_set ADC0_Handler,Default_Handler

   .weak      BTIMR0_Handler
   .thumb_set BTIMR0_Handler,Default_Handler

   .weak      HALL0_Handler
   .thumb_set HALL0_Handler,Default_Handler

   .weak      PWM2_Handler
   .thumb_set PWM2_Handler,Default_Handler

   .weak      PWMBRK_Handler
   .thumb_set PWMBRK_Handler,Default_Handler

   .weak      I2C0_Handler
   .thumb_set I2C0_Handler,Default_Handler

   .weak      CAN0_Handler
   .thumb_set CAN0_Handler,Default_Handler

   .weak      SPI1_Handler
   .thumb_set SPI1_Handler,Default_Handler

   .weak      RTC_Handler
   .thumb_set RTC_Handler,Default_Handler

   .weak      PWM3_Handler
   .thumb_set PWM3_Handler,Default_Handler

   .weak      TIMR2_Handler
   .thumb_set TIMR2_Handler,Default_Handler

   .weak      UART3_Handler
   .thumb_set UART3_Handler,Default_Handler

   .weak      TIMR3_Handler
   .thumb_set TIMR3_Handler,Default_Handler

   .weak      ADC1_Handler
   .thumb_set ADC1_Handler,Default_Handler

   .weak      BOD_Handler
   .thumb_set BOD_Handler,Default_Handler

   .weak      CORDIC_Handler
   .thumb_set CORDIC_Handler,Default_Handler

   .weak      BTIMR1_Handler
   .thumb_set BTIMR1_Handler,Default_Handler

   .weak      PWM4_Handler
   .thumb_set PWM4_Handler,Default_Handler

   .weak      HALL3_Handler
   .thumb_set HALL3_Handler,Default_Handler

   .weak      BTIMR2_Handler
   .thumb_set BTIMR2_Handler,Default_Handler

   .weak      I2C1_Handler
   .thumb_set I2C1_Handler,Default_Handler

   .weak      BTIMR3_Handler
   .thumb_set BTIMR3_Handler,Default_Handler

   .weak      ACMP_Handler
   .thumb_set ACMP_Handler,Default_Handler

   .weak      XTALSTOP_Handler
   .thumb_set XTALSTOP_Handler,Default_Handler

   .weak      FSPI_Handler
   .thumb_set FSPI_Handler,Default_Handler

   .weak      GPIOA_Handler
   .thumb_set GPIOA_Handler,Default_Handler

   .weak      GPIOB_Handler
   .thumb_set GPIOB_Handler,Default_Handler

   .weak      GPIOC_Handler
   .thumb_set GPIOC_Handler,Default_Handler

   .weak      GPIOD_Handler
   .thumb_set GPIOD_Handler,Default_Handler

   .weak      GPIOM_Handler
   .thumb_set GPIOM_Handler,Default_Handler

   .weak      GPION_Handler
   .thumb_set GPION_Handler,Default_Handler

   .weak      GPIOA0_Handler
   .thumb_set GPIOA0_Handler,Default_Handler

   .weak      GPIOA1_Handler
   .thumb_set GPIOA1_Handler,Default_Handler

   .weak      GPIOA5_Handler
   .thumb_set GPIOA5_Handler,Default_Handler

   .weak      GPIOA6_Handler
   .thumb_set GPIOA6_Handler,Default_Handler

   .weak      GPIOA10_Handler
   .thumb_set GPIOA10_Handler,Default_Handler

   .weak      GPIOA11_Handler
   .thumb_set GPIOA11_Handler,Default_Handler

   .weak      GPIOA12_Handler
   .thumb_set GPIOA12_Handler,Default_Handler

   .weak      GPIOA13_Handler
   .thumb_set GPIOA13_Handler,Default_Handler

   .weak      GPIOB0_Handler
   .thumb_set GPIOB0_Handler,Default_Handler

   .weak      GPIOB1_Handler
   .thumb_set GPIOB1_Handler,Default_Handler

   .weak      GPIOB2_Handler
   .thumb_set GPIOB2_Handler,Default_Handler

   .weak      GPIOC0_Handler
   .thumb_set GPIOC0_Handler,Default_Handler

   .weak      GPIOC1_Handler
   .thumb_set GPIOC1_Handler,Default_Handler

   .weak      GPIOC2_Handler
   .thumb_set GPIOC2_Handler,Default_Handler

   .weak      GPIOC3_Handler
   .thumb_set GPIOC3_Handler,Default_Handler

   .weak      GPIOC4_Handler
   .thumb_set GPIOC4_Handler,Default_Handler

   .weak      GPIOD3_Handler
   .thumb_set GPIOD3_Handler,Default_Handler

   .weak      GPIOD4_Handler
   .thumb_set GPIOD4_Handler,Default_Handler

   .weak      GPIOD5_Handler
   .thumb_set GPIOD5_Handler,Default_Handler

   .weak      GPIOD6_Handler
   .thumb_set GPIOD6_Handler,Default_Handler

   .weak      GPIOD7_Handler
   .thumb_set GPIOD7_Handler,Default_Handler

   .weak      GPIOD8_Handler
   .thumb_set GPIOD8_Handler,Default_Handler

   .weak      GPIOC9_Handler
   .thumb_set GPIOC9_Handler,Default_Handler

   .weak      GPIOC10_Handler
   .thumb_set GPIOC10_Handler,Default_Handler

   .weak      GPIOC11_Handler
   .thumb_set GPIOC11_Handler,Default_Handler

   .weak      GPIOC12_Handler
   .thumb_set GPIOC12_Handler,Default_Handler

   .weak      GPIOM0_Handler
   .thumb_set GPIOM0_Handler,Default_Handler

   .weak      GPIOM1_Handler
   .thumb_set GPIOM1_Handler,Default_Handler

   .weak      GPIOM2_Handler
   .thumb_set GPIOM2_Handler,Default_Handler

   .weak      GPIOM3_Handler
   .thumb_set GPIOM3_Handler,Default_Handler

   .weak      GPIOM4_Handler
   .thumb_set GPIOM4_Handler,Default_Handler

   .weak      DIV_Handler
   .thumb_set DIV_Handler,Default_Handler

   .weak      LCD_Handler
   .thumb_set LCD_Handler,Default_Handler

   .weak      GPIOE_Handler
   .thumb_set GPIOE_Handler,Default_Handler

   .weak      JPEG_Handler
   .thumb_set JPEG_Handler,Default_Handler

   .weak      SDIO_Handler
   .thumb_set SDIO_Handler,Default_Handler

   .weak      USB_Handler
   .thumb_set USB_Handler,Default_Handler

   .weak      CAN1_Handler
   .thumb_set CAN1_Handler,Default_Handler

   .weak      TIMR4_Handler
   .thumb_set TIMR4_Handler,Default_Handler

   .weak      BTIMR4_Handler
   .thumb_set BTIMR4_Handler,Default_Handler

   .weak      BTIMR5_Handler
   .thumb_set BTIMR5_Handler,Default_Handler

   .weak      BTIMR6_Handler
   .thumb_set BTIMR6_Handler,Default_Handler

   .weak      BTIMR7_Handler
   .thumb_set BTIMR7_Handler,Default_Handler

   .weak      BTIMR8_Handler
   .thumb_set BTIMR8_Handler,Default_Handler

   .weak      BTIMR9_Handler
   .thumb_set BTIMR9_Handler,Default_Handler

   .weak      BTIMR10_Handler
   .thumb_set BTIMR10_Handler,Default_Handler

   .weak      BTIMR11_Handler
   .thumb_set BTIMR11_Handler,Default_Handler

   .weak      DMA2D_Handler
   .thumb_set DMA2D_Handler,Default_Handler

   .weak      QEI_Handler
   .thumb_set QEI_Handler,Default_Handler