]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M0_Infineon_XMC1000_IAR_Keil_GCC/IAR_Specific/startup_XMC1300.s
Ensure the XMC1000_IAR_KEIL_GCC projects still build after updates to the Cortex...
[freertos] / FreeRTOS / Demo / CORTEX_M0_Infineon_XMC1000_IAR_Keil_GCC / IAR_Specific / startup_XMC1300.s
1 ;************************************************\r
2 ;*\r
3 ;* Part one of the system initialization code, contains low-level\r
4 ;* initialization, plain thumb variant.\r
5 ;*\r
6 ;* Copyright 2013 IAR Systems. All rights reserved.\r
7 ;*\r
8 ;* $Revision: 64600 $\r
9 ;*\r
10 ;******************* Version History **********************************************\r
11 ;\r
12 ;  V6, May, 16,2013 TYS:a) Add XMC1300_SCU.inc\r
13 ;\r
14 ;**********************************************************************************\r
15 ;\r
16 ; The modules in this file are included in the libraries, and may be replaced\r
17 ; by any user-defined modules that define the PUBLIC symbol _program_start or\r
18 ; a user defined start symbol.\r
19 ; To override the cstartup defined in the library, simply add your modified\r
20 ; version to the workbench project.\r
21 ;\r
22 ; Cortex-M version\r
23 ;\r
24 \r
25         MODULE  ?cstartup\r
26 \r
27 #ifdef DAVE_CE\r
28 #include "XMC1300_SCU.inc"\r
29 #include "Device_Data.h"\r
30 #else\r
31 #define CLKVAL1_SSW 0x00000100\r
32 #define CLKVAL2_SSW 0x00000000\r
33 #endif\r
34 \r
35         ;; Forward declaration of sections.\r
36         SECTION CSTACK:DATA:NOROOT(3)\r
37         SECTION .intvec:CODE:NOROOT(2)\r
38 \r
39         EXTERN  __iar_program_start\r
40         PUBLIC  __vector_table\r
41 \r
42         DATA\r
43 __vector_table\r
44         DCD     sfe(CSTACK)\r
45         DCD     Reset_Handler             ; Reset Handler\r
46         DCD     0                         ; 0x8\r
47         DCD     0                         ; 0xC\r
48         DCD     CLKVAL1_SSW               ; 0x10 CLK_VAL1 - (CLKCR default)\r
49         DCD     CLKVAL2_SSW               ; 0x14 CLK_VAL2 - (CGATCLR0 default)\r
50 \r
51         SECTION .vect_table:CODE:ROOT(2)\r
52         THUMB\r
53         LDR     R0,=HardFault_Handler\r
54         BX      R0\r
55         LDR     R0,=Undef_Handler\r
56         BX      R0\r
57         LDR     R0,=Undef_Handler\r
58         BX      R0\r
59         LDR     R0,=Undef_Handler\r
60         BX      R0\r
61         LDR     R0,=Undef_Handler\r
62         BX      R0\r
63         LDR     R0,=Undef_Handler\r
64         BX      R0\r
65         LDR     R0,=Undef_Handler\r
66         BX      R0\r
67         LDR     R0,=Undef_Handler\r
68         BX      R0\r
69         LDR     R0,=SVC_Handler\r
70         BX      R0\r
71         LDR     R0,=Undef_Handler\r
72         BX      R0\r
73         LDR     R0,=Undef_Handler\r
74         BX      R0\r
75         LDR     R0,=PendSV_Handler\r
76         BX      R0\r
77         LDR     R0,=SysTick_Handler\r
78         BX      R0\r
79 \r
80         ; External Interrupts\r
81         LDR     R0,=SCU_0_IRQHandler      ; Handler name for SR SCU_0\r
82         BX      R0\r
83         LDR     R0,=SCU_1_IRQHandler      ; Handler name for SR SCU_1\r
84         BX      R0\r
85         LDR     R0,=SCU_2_IRQHandler      ; Handler name for SR SCU_2\r
86         BX      R0\r
87         LDR     R0,=ERU0_0_IRQHandler     ; Handler name for SR ERU0_0\r
88         BX      R0\r
89         LDR     R0,=ERU0_1_IRQHandler     ; Handler name for SR ERU0_1\r
90         BX      R0\r
91         LDR     R0,=ERU0_2_IRQHandler     ; Handler name for SR ERU0_2\r
92         BX      R0\r
93         LDR     R0,=ERU0_3_IRQHandler     ; Handler name for SR ERU0_3\r
94         BX      R0\r
95         LDR     R0,=MATH0_0_IRQHandler    ; Handler name for SR MATH0_0\r
96         BX      R0\r
97         LDR     R0,=Undef_Handler         ; Not Available\r
98         BX      R0\r
99         LDR     R0,=USIC0_0_IRQHandler    ; Handler name for SR USIC0_0\r
100         BX      R0\r
101         LDR     R0,=USIC0_1_IRQHandler    ; Handler name for SR USIC0_1\r
102         BX      R0\r
103         LDR     R0,=USIC0_2_IRQHandler    ; Handler name for SR USIC0_2\r
104         BX      R0\r
105         LDR     R0,=USIC0_3_IRQHandler    ; Handler name for SR USIC0_3\r
106         BX      R0\r
107         LDR     R0,=USIC0_4_IRQHandler    ; Handler name for SR USIC0_4\r
108         BX      R0\r
109         LDR     R0,=USIC0_5_IRQHandler    ; Handler name for SR USIC0_5\r
110         BX      R0\r
111         LDR     R0,=VADC0_C0_0_IRQHandler ; Handler name for SR VADC0_C0_0\r
112         BX      R0\r
113         LDR     R0,=VADC0_C0_1_IRQHandler ; Handler name for SR VADC0_C0_1\r
114         BX      R0\r
115         LDR     R0,=VADC0_G0_0_IRQHandler ; Handler name for SR VADC0_G0_0\r
116         BX      R0\r
117         LDR     R0,=VADC0_G0_1_IRQHandler ; Handler name for SR VADC0_G0_1\r
118         BX      R0\r
119         LDR     R0,=VADC0_G1_0_IRQHandler ; Handler name for SR VADC0_G1_0\r
120         BX      R0\r
121         LDR     R0,=VADC0_G1_1_IRQHandler ; Handler name for SR VADC0_G1_1\r
122         BX      R0\r
123         LDR     R0,=CCU40_0_IRQHandler    ; Handler name for SR CCU40_0\r
124         BX      R0\r
125         LDR     R0,=CCU40_1_IRQHandler    ; Handler name for SR CCU40_1\r
126         BX      R0\r
127         LDR     R0,=CCU40_2_IRQHandler    ; Handler name for SR CCU40_2\r
128         BX      R0\r
129         LDR     R0,=CCU40_3_IRQHandler    ; Handler name for SR CCU40_3\r
130         BX      R0\r
131         LDR     R0,=CCU80_0_IRQHandler    ; Handler name for SR CCU80_0\r
132         BX      R0\r
133         LDR     R0,=CCU80_1_IRQHandler    ; Handler name for SR CCU80_1\r
134         BX      R0\r
135         LDR     R0,=POSIF0_0_IRQHandler   ; Handler name for SR POSIF0_0\r
136         BX      R0\r
137         LDR     R0,=POSIF0_1_IRQHandler   ; Handler name for SR POSIF0_1\r
138         BX      R0\r
139         LDR     R0,=Undef_Handler         ; Not Available\r
140         BX      R0\r
141         LDR     R0,=Undef_Handler         ; Not Available\r
142         BX      R0\r
143         LDR     R0,=BCCU0_0_IRQHandler    ; Handler name for SR BCCU0_0\r
144         BX      R0\r
145 \r
146 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
147 ;;\r
148 ;; Default interrupt handlers.\r
149 ;;\r
150         EXTERN  SystemInit\r
151         SECTION .text:CODE:NOROOT(2)\r
152 \r
153         THUMB\r
154 \r
155         PUBLIC Reset_Handler\r
156         SECTION .text:CODE:REORDER(2)\r
157 Reset_Handler\r
158         LDR     R0, =SystemInit\r
159         BLX     R0\r
160         LDR     R0, =SystemInit_DAVE3\r
161         BLX     R0\r
162         LDR     R0, =__iar_program_start\r
163         BX      R0\r
164 \r
165         PUBWEAK Undef_Handler\r
166         SECTION .text:CODE:REORDER:NOROOT(1)\r
167 Undef_Handler\r
168         B Undef_Handler\r
169 \r
170 \r
171         PUBWEAK HardFault_Handler\r
172         SECTION .text:CODE:REORDER:NOROOT(1)\r
173 HardFault_Handler\r
174         B HardFault_Handler\r
175 \r
176 \r
177         PUBWEAK SVC_Handler\r
178         SECTION .text:CODE:REORDER:NOROOT(1)\r
179 SVC_Handler\r
180         B SVC_Handler\r
181 \r
182 \r
183         PUBWEAK PendSV_Handler\r
184         SECTION .text:CODE:REORDER:NOROOT(1)\r
185 PendSV_Handler\r
186         B PendSV_Handler\r
187 \r
188 \r
189         PUBWEAK SysTick_Handler\r
190         SECTION .text:CODE:REORDER:NOROOT(1)\r
191 SysTick_Handler\r
192         B SysTick_Handler\r
193 \r
194 \r
195         PUBWEAK SCU_0_IRQHandler\r
196         SECTION .text:CODE:REORDER:NOROOT(1)\r
197 SCU_0_IRQHandler\r
198         B SCU_0_IRQHandler\r
199 \r
200         PUBWEAK SCU_1_IRQHandler\r
201         SECTION .text:CODE:REORDER:NOROOT(1)\r
202 SCU_1_IRQHandler\r
203         B SCU_1_IRQHandler\r
204 \r
205 \r
206         PUBWEAK SCU_2_IRQHandler\r
207         SECTION .text:CODE:REORDER:NOROOT(1)\r
208 SCU_2_IRQHandler\r
209         B SCU_2_IRQHandler\r
210 \r
211 \r
212         PUBWEAK ERU0_0_IRQHandler\r
213         SECTION .text:CODE:REORDER:NOROOT(1)\r
214 ERU0_0_IRQHandler\r
215         B ERU0_0_IRQHandler\r
216 \r
217 \r
218         PUBWEAK ERU0_1_IRQHandler\r
219         SECTION .text:CODE:REORDER:NOROOT(1)\r
220 ERU0_1_IRQHandler\r
221         B ERU0_1_IRQHandler\r
222 \r
223 \r
224         PUBWEAK ERU0_2_IRQHandler\r
225         SECTION .text:CODE:REORDER:NOROOT(1)\r
226 ERU0_2_IRQHandler\r
227         B ERU0_2_IRQHandler\r
228 \r
229 \r
230         PUBWEAK ERU0_3_IRQHandler\r
231         SECTION .text:CODE:REORDER:NOROOT(1)\r
232 ERU0_3_IRQHandler\r
233         B ERU0_3_IRQHandler\r
234 \r
235 \r
236         PUBWEAK MATH0_0_IRQHandler\r
237         SECTION .text:CODE:REORDER:NOROOT(1)\r
238 MATH0_0_IRQHandler\r
239         B MATH0_0_IRQHandler\r
240 \r
241 \r
242         PUBWEAK USIC0_0_IRQHandler\r
243         SECTION .text:CODE:REORDER:NOROOT(1)\r
244 USIC0_0_IRQHandler\r
245         B USIC0_0_IRQHandler\r
246 \r
247 \r
248         PUBWEAK USIC0_1_IRQHandler\r
249         SECTION .text:CODE:REORDER:NOROOT(1)\r
250 USIC0_1_IRQHandler\r
251         B USIC0_1_IRQHandler\r
252 \r
253 \r
254         PUBWEAK USIC0_2_IRQHandler\r
255         SECTION .text:CODE:REORDER:NOROOT(1)\r
256 USIC0_2_IRQHandler\r
257         B USIC0_2_IRQHandler\r
258 \r
259 \r
260         PUBWEAK USIC0_3_IRQHandler\r
261         SECTION .text:CODE:REORDER:NOROOT(1)\r
262 USIC0_3_IRQHandler\r
263         B USIC0_3_IRQHandler\r
264 \r
265 \r
266         PUBWEAK USIC0_4_IRQHandler\r
267         SECTION .text:CODE:REORDER:NOROOT(1)\r
268 USIC0_4_IRQHandler\r
269         B USIC0_4_IRQHandler\r
270 \r
271 \r
272         PUBWEAK USIC0_5_IRQHandler\r
273         SECTION .text:CODE:REORDER:NOROOT(1)\r
274 USIC0_5_IRQHandler\r
275         B USIC0_5_IRQHandler\r
276 \r
277 \r
278         PUBWEAK VADC0_C0_0_IRQHandler\r
279         SECTION .text:CODE:REORDER:NOROOT(1)\r
280 VADC0_C0_0_IRQHandler\r
281         B VADC0_C0_0_IRQHandler\r
282 \r
283 \r
284         PUBWEAK VADC0_C0_1_IRQHandler\r
285         SECTION .text:CODE:REORDER:NOROOT(1)\r
286 VADC0_C0_1_IRQHandler\r
287         B VADC0_C0_1_IRQHandler\r
288 \r
289 \r
290         PUBWEAK VADC0_G0_0_IRQHandler\r
291         SECTION .text:CODE:REORDER:NOROOT(1)\r
292 VADC0_G0_0_IRQHandler\r
293         B VADC0_G0_0_IRQHandler\r
294 \r
295 \r
296         PUBWEAK VADC0_G0_1_IRQHandler\r
297         SECTION .text:CODE:REORDER:NOROOT(1)\r
298 VADC0_G0_1_IRQHandler\r
299         B VADC0_G0_1_IRQHandler\r
300 \r
301 \r
302         PUBWEAK VADC0_G1_0_IRQHandler\r
303         SECTION .text:CODE:REORDER:NOROOT(1)\r
304 VADC0_G1_0_IRQHandler\r
305         B VADC0_G1_0_IRQHandler\r
306 \r
307 \r
308         PUBWEAK VADC0_G1_1_IRQHandler\r
309         SECTION .text:CODE:REORDER:NOROOT(1)\r
310 VADC0_G1_1_IRQHandler\r
311         B VADC0_G1_1_IRQHandler\r
312 \r
313 \r
314         PUBWEAK CCU40_0_IRQHandler\r
315         SECTION .text:CODE:REORDER:NOROOT(1)\r
316 CCU40_0_IRQHandler\r
317         B CCU40_0_IRQHandler\r
318 \r
319 \r
320         PUBWEAK CCU40_1_IRQHandler\r
321         SECTION .text:CODE:REORDER:NOROOT(1)\r
322 CCU40_1_IRQHandler\r
323         B CCU40_1_IRQHandler\r
324 \r
325 \r
326         PUBWEAK CCU40_2_IRQHandler\r
327         SECTION .text:CODE:REORDER:NOROOT(1)\r
328 CCU40_2_IRQHandler\r
329         B CCU40_2_IRQHandler\r
330 \r
331 \r
332         PUBWEAK CCU40_3_IRQHandler\r
333         SECTION .text:CODE:REORDER:NOROOT(1)\r
334 CCU40_3_IRQHandler\r
335         B CCU40_3_IRQHandler\r
336 \r
337 \r
338         PUBWEAK CCU80_0_IRQHandler\r
339         SECTION .text:CODE:REORDER:NOROOT(1)\r
340 CCU80_0_IRQHandler\r
341         B CCU80_0_IRQHandler\r
342 \r
343 \r
344         PUBWEAK CCU80_1_IRQHandler\r
345         SECTION .text:CODE:REORDER:NOROOT(1)\r
346 CCU80_1_IRQHandler\r
347         B CCU80_1_IRQHandler\r
348 \r
349 \r
350         PUBWEAK POSIF0_0_IRQHandler\r
351         SECTION .text:CODE:REORDER:NOROOT(1)\r
352 POSIF0_0_IRQHandler\r
353         B POSIF0_0_IRQHandler\r
354 \r
355 \r
356         PUBWEAK POSIF0_1_IRQHandler\r
357         SECTION .text:CODE:REORDER:NOROOT(1)\r
358 POSIF0_1_IRQHandler\r
359         B POSIF0_1_IRQHandler\r
360 \r
361 \r
362         PUBWEAK BCCU0_0_IRQHandler\r
363         SECTION .text:CODE:REORDER:NOROOT(1)\r
364 BCCU0_0_IRQHandler\r
365         B BCCU0_0_IRQHandler\r
366 \r
367 ; Definition of the default weak SystemInit_DAVE3 function\r
368 ;If DAVE3 requires an extended SystemInit it will create its own version of\r
369 ;SystemInit_DAVE3 which overrides this weak definition. Example includes\r
370 ;setting up of external memory interfaces.\r
371 \r
372         PUBWEAK SystemInit_DAVE3\r
373         SECTION .text:CODE:REORDER:NOROOT(2)\r
374 SystemInit_DAVE3\r
375         NOP\r
376         BX LR\r
377 \r
378 ;Decision function queried by CMSIS startup for Clock tree setup ======== */\r
379 ;In the absence of DAVE code engine, CMSIS SystemInit() must perform clock tree setup.\r
380 ;This decision routine defined here will always return TRUE.\r
381 ;When overridden by a definition defined in DAVE code engine, this routine\r
382 ;returns FALSE indicating that the code engine has performed the clock setup\r
383 \r
384         PUBWEAK AllowClkInitByStartup\r
385         SECTION .text:CODE:REORDER:NOROOT(2)\r
386 AllowClkInitByStartup\r
387         MOVS  R0,#1\r
388         BX    LR\r
389 \r
390         END\r