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