1  .syntax unified
2  .cpu cortex-m0plus
3  .fpu softvfp
4  .thumb
5
6.global  Default_Handler
7
8/* start address for the initialization values of the .data section.
9defined in linker script */
10.word  _sidata
11/* start address for the .data section. defined in linker script */
12.word  _sdata
13/* end address for the .data section. defined in linker script */
14.word  _edata
15/* start address for the .bss section. defined in linker script */
16.word  _sbss
17/* end address for the .bss section. defined in linker script */
18.word  _ebss
19
20  .section  .text.Reset_Handler
21  .weak  Reset_Handler
22  .type  Reset_Handler, %function
23Reset_Handler:
24   ldr   r0, =_estack
25   mov   sp, r0          /* set stack pointer */
26
27/* Copy the data segment initializers from flash to SRAM */
28  movs  r1, #0
29  b  LoopCopyDataInit
30
31CopyDataInit:
32  ldr  r3, =_sidata
33  ldr  r3, [r3, r1]
34  str  r3, [r0, r1]
35  adds  r1, r1, #4
36
37LoopCopyDataInit:
38  ldr  r0, =_sdata
39  ldr  r3, =_edata
40  adds  r2, r0, r1
41  cmp  r2, r3
42  bcc  CopyDataInit
43  ldr  r2, =_sbss
44  b  LoopFillZerobss
45/* Zero fill the bss segment. */
46FillZerobss:
47  movs  r3, #0
48  str  r3, [r2]
49  adds r2, r2, #4
50
51LoopFillZerobss:
52  ldr  r3, = _ebss
53  cmp  r2, r3
54  bcc  FillZerobss
55
56/* Call the clock system intitialization function.*/
57  bl  SystemInit
58/* Call static constructors */
59//    bl __libc_init_array
60/* Call the application's entry point.*/
61  bl  main
62
63LoopForever:
64  b LoopForever
65
66  .size  Reset_Handler, .-Reset_Handler
67  .section  .text.Default_Handler,"ax",%progbits
68Default_Handler:
69Infinite_Loop:
70  b  Infinite_Loop
71  .size  Default_Handler, .-Default_Handler
72
73/******************************************************************************
74*
75* The minimal vector table for a Cortex M0.  Note that the proper constructs
76* must be placed on this to ensure that it ends up at physical address
77* 0x0000.0000.
78*
79******************************************************************************/
80  .section  .isr_vector,"a",%progbits
81  .global  g_pfnVectors
82g_pfnVectors:
83  .word  _estack
84  .word  Reset_Handler
85  .word  NMI_Handler
86  .word  HardFault_Handler
87  .word  0
88  .word  0
89  .word  0
90  .word  0
91  .word  0
92  .word  0
93  .word  0
94  .word  SVC_Handler
95  .word  0
96  .word  0
97  .word  PendSV_Handler
98  .word  SysTick_Handler
99  /* External Interrupts */
100  .word  WWDT_IRQHandler           /* 0:  WWDT         */
101  .word  SVD_IRQHandler            /* 1:  SVD          */
102  .word  RTC_IRQHandler            /* 2:  RTC          */
103  .word  FLASH_IRQHandler          /* 3:  FLASH        */
104  .word  LFDET_IRQHandler          /* 4:  LFDET        */
105  .word  ADC_IRQHandler            /* 5:  ADC          */
106  .word  IWDT_IRQHandler           /* 6:  IWDT         */
107  .word  SPI1_IRQHandler           /* 7:  SPI1         */
108  .word  SPI2_IRQHandler           /* 8:  SPI2         */
109  .word  LCD_IRQHandler            /* 9:  LCD          */
110  .word  UART0_IRQHandler          /* 10: UART0        */
111  .word  UART1_IRQHandler          /* 11: UART1        */
112  .word  UART4_IRQHandler          /* 12: UART4        */
113  .word  UART5_IRQHandler          /* 13: UART5        */
114  .word  HFDET_IRQHandler          /* 14: HFDET        */
115  .word  U7816_IRQHandler          /* 15: U7816        */
116  .word  LPUART1_IRQHandler        /* 16: LPUART1      */
117  .word  I2C_IRQHandler            /* 17: I2C          */
118  .word  USB_IRQHandler            /* 18: USB          */
119  .word  AES_IRQHandler            /* 19: AES          */
120  .word  LPTIM_IRQHandler          /* 20: LPTIM        */
121  .word  DMA_IRQHandler            /* 21: DMA          */
122  .word  WKUP_IRQHandler           /* 22: WKUP         */
123  .word  OPAx_IRQHandler           /* 23: OPAx         */
124  .word  BSTIM_IRQHandler          /* 24: BSTIM        */
125  .word  COMPx_IRQHandler          /* 25: COMPx        */
126  .word  GPTIM0_IRQHandler         /* 26: GPTIM0       */
127  .word  GPTIM1_IRQHandler         /* 27: GPTIM1       */
128  .word  ATIM_IRQHandler           /* 28: ATIM         */
129  .word  VREF_IRQHandler           /* 39: VREF         */
130  .word  GPIO_IRQHandler           /* 30: GPIO         */
131  .word  LPUART0_IRQHandler        /* 31: LPUART0      */
132
133/*******************************************************************************
134*
135* Provide weak aliases for each Exception handler to the Default_Handler.
136* As they are weak aliases, any function with the same name will override
137* this definition.
138*
139*******************************************************************************/
140   .weak      NMI_Handler
141   .thumb_set NMI_Handler,Default_Handler
142
143   .weak      HardFault_Handler
144   .thumb_set HardFault_Handler,Default_Handler
145
146   .weak      SVC_Handler
147   .thumb_set SVC_Handler,Default_Handler
148
149   .weak      PendSV_Handler
150   .thumb_set PendSV_Handler,Default_Handler
151
152   .weak      SysTick_Handler
153   .thumb_set SysTick_Handler,Default_Handler
154
155   .weak      WWDT_IRQHandler
156   .thumb_set WWDT_IRQHandler,Default_Handler
157
158   .weak      SVD_IRQHandler
159   .thumb_set SVD_IRQHandler,Default_Handler
160
161   .weak      RTC_IRQHandler
162   .thumb_set RTC_IRQHandler,Default_Handler
163
164   .weak      FLASH_IRQHandler
165   .thumb_set FLASH_IRQHandler,Default_Handler
166
167   .weak      LFDET_IRQHandler
168   .thumb_set LFDET_IRQHandler,Default_Handler
169
170   .weak      ADC_IRQHandler
171   .thumb_set ADC_IRQHandler,Default_Handler
172
173   .weak      IWDT_IRQHandler
174   .thumb_set IWDT_IRQHandler,Default_Handler
175
176   .weak      SPI1_IRQHandler
177   .thumb_set SPI1_IRQHandler,Default_Handler
178
179   .weak      SPI2_IRQHandler
180   .thumb_set SPI2_IRQHandler,Default_Handler
181
182   .weak      LCD_IRQHandler
183   .thumb_set LCD_IRQHandler,Default_Handler
184
185   .weak      UART0_IRQHandler
186   .thumb_set UART0_IRQHandler,Default_Handler
187
188   .weak      UART1_IRQHandler
189   .thumb_set UART1_IRQHandler,Default_Handler
190
191   .weak      UART4_IRQHandler
192   .thumb_set UART4_IRQHandler,Default_Handler
193
194   .weak      UART5_IRQHandler
195   .thumb_set UART5_IRQHandler,Default_Handler
196
197   .weak      HFDET_IRQHandler
198   .thumb_set HFDET_IRQHandler,Default_Handler
199
200   .weak      U7816_IRQHandler
201   .thumb_set U7816_IRQHandler,Default_Handler
202
203   .weak      LPUART1_IRQHandler
204   .thumb_set LPUART1_IRQHandler,Default_Handler
205
206   .weak      I2C_IRQHandler
207   .thumb_set I2C_IRQHandler,Default_Handler
208
209   .weak      USB_IRQHandler
210   .thumb_set USB_IRQHandler,Default_Handler
211
212   .weak      AES_IRQHandler
213   .thumb_set AES_IRQHandler,Default_Handler
214
215   .weak      LPTIM_IRQHandler
216   .thumb_set LPTIM_IRQHandler,Default_Handler
217
218   .weak      DMA_IRQHandler
219   .thumb_set DMA_IRQHandler,Default_Handler
220
221   .weak      WKUP_IRQHandler
222   .thumb_set WKUP_IRQHandler,Default_Handler
223
224   .weak      OPAx_IRQHandler
225   .thumb_set OPAx_IRQHandler,Default_Handler
226
227   .weak      BSTIM_IRQHandler
228   .thumb_set BSTIM_IRQHandler,Default_Handler
229
230   .weak      COMPx_IRQHandler
231   .thumb_set COMPx_IRQHandler,Default_Handler
232
233   .weak      GPTIM0_IRQHandler
234   .thumb_set GPTIM0_IRQHandler,Default_Handler
235
236   .weak      GPTIM1_IRQHandler
237   .thumb_set GPTIM1_IRQHandler,Default_Handler
238
239   .weak      ATIM_IRQHandler
240   .thumb_set ATIM_IRQHandler,Default_Handler
241
242   .weak      VREF_IRQHandler
243   .thumb_set VREF_IRQHandler,Default_Handler
244
245   .weak      GPIO_IRQHandler
246   .thumb_set GPIO_IRQHandler,Default_Handler
247
248   .weak      LPUART0_IRQHandler
249   .thumb_set LPUART0_IRQHandler,Default_Handler
250
251