]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M0_Infineon_XMC1000_IAR_Keil_GCC/IAR_Specific/startup_XMC1100.s
commit 9f316c246baafa15c542a5aea81a94f26e3d6507
[freertos] / FreeRTOS / Demo / CORTEX_M0_Infineon_XMC1000_IAR_Keil_GCC / IAR_Specific / startup_XMC1100.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 ;  V5, Feb, 6, 2013 TYS:a) Add DAVE3_CE defination, \r
12 ;                       b) Remove Math,ADC,CCU8,POSIF,LEDTS,BCCU0 interrupt\r
13 ;                       c) Change AllowPLLInitByStartup to AllowClkInitByStartup \r
14 ;  V6, May, 16,2013 TYS:a) Add XMC1100_SCU.inc \r
15 ;     \r
16 ;**********************************************************************************\r
17 ;\r
18 ; The modules in this file are included in the libraries, and may be replaced\r
19 ; by any user-defined modules that define the PUBLIC symbol _program_start or\r
20 ; a user defined start symbol.\r
21 ; To override the cstartup defined in the library, simply add your modified\r
22 ; version to the workbench project.\r
23 ;\r
24 ; Cortex-M version\r
25 ;\r
26 \r
27         MODULE  ?cstartup\r
28 \r
29 #ifdef DAVE_CE\r
30 #include "XMC1100_SCU.inc"\r
31 #include "Device_Data.h"\r
32 #else\r
33 #define CLKVAL1_SSW 0x00000100\r
34 #define CLKVAL2_SSW 0x00000000\r
35 #endif \r
36 \r
37         ;; Forward declaration of sections.\r
38         SECTION CSTACK:DATA:NOROOT(3)\r
39         SECTION .intvec:CODE:NOROOT(2)\r
40 \r
41         EXTERN  __iar_program_start\r
42         PUBLIC  __vector_table\r
43 \r
44         DATA\r
45 __vector_table\r
46         DCD     sfe(CSTACK)\r
47         DCD     Reset_Handler             ; Reset Handler\r
48         DCD     0                         ; 0x8\r
49         DCD     0                         ; 0xC\r
50         DCD     CLKVAL1_SSW               ; 0x10 CLK_VAL1 - (CLKCR default)\r
51         DCD     CLKVAL2_SSW               ; 0x14 CLK_VAL2 - (CGATCLR0 default)\r
52 \r
53         SECTION .vect_table:CODE:ROOT(2)\r
54         THUMB\r
55         LDR     R0,=HardFault_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,=Undef_Handler\r
70         BX      R0\r
71         LDR     R0,=SVC_Handler\r
72         BX      R0\r
73         LDR     R0,=Undef_Handler\r
74         BX      R0\r
75         LDR     R0,=Undef_Handler\r
76         BX      R0\r
77         LDR     R0,=PendSV_Handler\r
78         BX      R0\r
79         LDR     R0,=SysTick_Handler\r
80         BX      R0\r
81 \r
82         ; External Interrupts\r
83         LDR     R0,=SCU_0_IRQHandler      ; Handler name for SR SCU_0\r
84         BX      R0\r
85         LDR     R0,=SCU_1_IRQHandler      ; Handler name for SR SCU_1\r
86         BX      R0\r
87         LDR     R0,=SCU_2_IRQHandler      ; Handler name for SR SCU_2\r
88         BX      R0\r
89         LDR     R0,=ERU0_0_IRQHandler     ; Handler name for SR ERU0_0\r
90         BX      R0\r
91         LDR     R0,=ERU0_1_IRQHandler     ; Handler name for SR ERU0_1\r
92         BX      R0\r
93         LDR     R0,=ERU0_2_IRQHandler     ; Handler name for SR ERU0_2\r
94         BX      R0\r
95         LDR     R0,=ERU0_3_IRQHandler     ; Handler name for SR ERU0_3\r
96         BX      R0\r
97         LDR     R0,=Undef_Handler         ; Not Available\r
98         BX      R0\r
99         LDR     R0,=Undef_Handler         ; Not Available\r
100         BX      R0\r
101         LDR     R0,=USIC0_0_IRQHandler    ; Handler name for SR USIC0_0\r
102         BX      R0\r
103         LDR     R0,=USIC0_1_IRQHandler    ; Handler name for SR USIC0_1\r
104         BX      R0\r
105         LDR     R0,=USIC0_2_IRQHandler    ; Handler name for SR USIC0_2\r
106         BX      R0\r
107         LDR     R0,=USIC0_3_IRQHandler    ; Handler name for SR USIC0_3\r
108         BX      R0\r
109         LDR     R0,=USIC0_4_IRQHandler    ; Handler name for SR USIC0_4\r
110         BX      R0\r
111         LDR     R0,=USIC0_5_IRQHandler    ; Handler name for SR USIC0_5\r
112         BX      R0\r
113         LDR     R0,=VADC0_C0_0_IRQHandler ; Handler name for SR VADC0_C0_0\r
114         BX      R0\r
115         LDR     R0,=VADC0_C0_1_IRQHandler ; Handler name for SR VADC0_C0_1\r
116         BX      R0\r
117         LDR     R0,=Undef_Handler         ; Not Available\r
118         BX      R0\r
119         LDR     R0,=Undef_Handler         ; Not Available\r
120         BX      R0\r
121         LDR     R0,=Undef_Handler         ; Not Available\r
122         BX      R0\r
123         LDR     R0,=Undef_Handler         ; Not Available\r
124         BX      R0\r
125         LDR     R0,=CCU40_0_IRQHandler    ; Handler name for SR CCU40_0\r
126         BX      R0\r
127         LDR     R0,=CCU40_1_IRQHandler    ; Handler name for SR CCU40_1\r
128         BX      R0\r
129         LDR     R0,=CCU40_2_IRQHandler    ; Handler name for SR CCU40_2\r
130         BX      R0\r
131         LDR     R0,=CCU40_3_IRQHandler    ; Handler name for SR CCU40_3\r
132         BX      R0\r
133         LDR     R0,=Undef_Handler         ; Not Available\r
134         BX      R0\r
135         LDR     R0,=Undef_Handler         ; Not Available\r
136         BX      R0\r
137         LDR     R0,=Undef_Handler         ; Not Available\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,=Undef_Handler         ; Not Available\r
144         BX      R0\r
145         LDR     R0,=Undef_Handler         ; Not Available\r
146         BX      R0\r
147 \r
148 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
149 ;;\r
150 ;; Default interrupt handlers.\r
151 ;;\r
152         EXTERN  SystemInit\r
153         SECTION .text:CODE:NOROOT(2)\r
154 \r
155         THUMB\r
156 \r
157         PUBWEAK Reset_Handler\r
158         SECTION .text:CODE:REORDER(2)\r
159 Reset_Handler\r
160         LDR     R0, =SystemInit\r
161         BLX     R0\r
162         LDR     R0, =SystemInit_DAVE3\r
163         BLX     R0\r
164         LDR     R0, =__iar_program_start\r
165         BX      R0\r
166 \r
167         PUBWEAK Undef_Handler\r
168         SECTION .text:CODE:REORDER:NOROOT(1)\r
169 Undef_Handler\r
170         B Undef_Handler\r
171 \r
172 \r
173         PUBWEAK HardFault_Handler\r
174         SECTION .text:CODE:REORDER:NOROOT(1)\r
175 HardFault_Handler\r
176         B HardFault_Handler\r
177 \r
178 \r
179         PUBWEAK SVC_Handler\r
180         SECTION .text:CODE:REORDER:NOROOT(1)\r
181 SVC_Handler\r
182         B SVC_Handler\r
183 \r
184 \r
185         PUBWEAK PendSV_Handler\r
186         SECTION .text:CODE:REORDER:NOROOT(1)\r
187 PendSV_Handler\r
188         B PendSV_Handler\r
189 \r
190 \r
191         PUBWEAK SysTick_Handler\r
192         SECTION .text:CODE:REORDER:NOROOT(1)\r
193 SysTick_Handler\r
194         B SysTick_Handler\r
195 \r
196 \r
197         PUBWEAK SCU_0_IRQHandler\r
198         SECTION .text:CODE:REORDER:NOROOT(1)\r
199 SCU_0_IRQHandler\r
200         B SCU_0_IRQHandler\r
201 \r
202         PUBWEAK SCU_1_IRQHandler\r
203         SECTION .text:CODE:REORDER:NOROOT(1)\r
204 SCU_1_IRQHandler\r
205         B SCU_1_IRQHandler\r
206 \r
207 \r
208         PUBWEAK SCU_2_IRQHandler\r
209         SECTION .text:CODE:REORDER:NOROOT(1)\r
210 SCU_2_IRQHandler\r
211         B SCU_2_IRQHandler\r
212 \r
213 \r
214         PUBWEAK ERU0_0_IRQHandler\r
215         SECTION .text:CODE:REORDER:NOROOT(1)\r
216 ERU0_0_IRQHandler\r
217         B ERU0_0_IRQHandler\r
218 \r
219 \r
220         PUBWEAK ERU0_1_IRQHandler\r
221         SECTION .text:CODE:REORDER:NOROOT(1)\r
222 ERU0_1_IRQHandler\r
223         B ERU0_1_IRQHandler\r
224 \r
225 \r
226         PUBWEAK ERU0_2_IRQHandler\r
227         SECTION .text:CODE:REORDER:NOROOT(1)\r
228 ERU0_2_IRQHandler\r
229         B ERU0_2_IRQHandler\r
230 \r
231 \r
232         PUBWEAK ERU0_3_IRQHandler\r
233         SECTION .text:CODE:REORDER:NOROOT(1)\r
234 ERU0_3_IRQHandler\r
235         B ERU0_3_IRQHandler\r
236 \r
237 \r
238         PUBWEAK USIC0_0_IRQHandler\r
239         SECTION .text:CODE:REORDER:NOROOT(1)\r
240 USIC0_0_IRQHandler\r
241         B USIC0_0_IRQHandler\r
242 \r
243 \r
244         PUBWEAK USIC0_1_IRQHandler\r
245         SECTION .text:CODE:REORDER:NOROOT(1)\r
246 USIC0_1_IRQHandler\r
247         B USIC0_1_IRQHandler\r
248 \r
249 \r
250         PUBWEAK USIC0_2_IRQHandler\r
251         SECTION .text:CODE:REORDER:NOROOT(1)\r
252 USIC0_2_IRQHandler\r
253         B USIC0_2_IRQHandler\r
254 \r
255 \r
256         PUBWEAK USIC0_3_IRQHandler\r
257         SECTION .text:CODE:REORDER:NOROOT(1)\r
258 USIC0_3_IRQHandler\r
259         B USIC0_3_IRQHandler\r
260 \r
261 \r
262         PUBWEAK USIC0_4_IRQHandler\r
263         SECTION .text:CODE:REORDER:NOROOT(1)\r
264 USIC0_4_IRQHandler\r
265         B USIC0_4_IRQHandler\r
266 \r
267 \r
268         PUBWEAK USIC0_5_IRQHandler\r
269         SECTION .text:CODE:REORDER:NOROOT(1)\r
270 USIC0_5_IRQHandler\r
271         B USIC0_5_IRQHandler\r
272 \r
273 \r
274         PUBWEAK VADC0_C0_0_IRQHandler\r
275         SECTION .text:CODE:REORDER:NOROOT(1)\r
276 VADC0_C0_0_IRQHandler\r
277         B VADC0_C0_0_IRQHandler\r
278 \r
279 \r
280         PUBWEAK VADC0_C0_1_IRQHandler\r
281         SECTION .text:CODE:REORDER:NOROOT(1)\r
282 VADC0_C0_1_IRQHandler\r
283         B VADC0_C0_1_IRQHandler\r
284 \r
285 \r
286         PUBWEAK CCU40_0_IRQHandler\r
287         SECTION .text:CODE:REORDER:NOROOT(1)\r
288 CCU40_0_IRQHandler\r
289         B CCU40_0_IRQHandler\r
290 \r
291 \r
292         PUBWEAK CCU40_1_IRQHandler\r
293         SECTION .text:CODE:REORDER:NOROOT(1)\r
294 CCU40_1_IRQHandler\r
295         B CCU40_1_IRQHandler\r
296 \r
297 \r
298         PUBWEAK CCU40_2_IRQHandler\r
299         SECTION .text:CODE:REORDER:NOROOT(1)\r
300 CCU40_2_IRQHandler\r
301         B CCU40_2_IRQHandler\r
302 \r
303 \r
304         PUBWEAK CCU40_3_IRQHandler\r
305         SECTION .text:CODE:REORDER:NOROOT(1)\r
306 CCU40_3_IRQHandler\r
307         B CCU40_3_IRQHandler\r
308 \r
309 \r
310 ; Definition of the default weak SystemInit_DAVE3 function\r
311 ;If DAVE3 requires an extended SystemInit it will create its own version of\r
312 ;SystemInit_DAVE3 which overrides this weak definition. Example includes\r
313 ;setting up of external memory interfaces.\r
314 \r
315         PUBWEAK SystemInit_DAVE3\r
316         SECTION .text:CODE:REORDER:NOROOT(2)\r
317 SystemInit_DAVE3\r
318         NOP\r
319         BX LR\r
320 \r
321 ;Decision function queried by CMSIS startup for Clock tree setup ======== */\r
322 ;In the absence of DAVE code engine, CMSIS SystemInit() must perform clock tree setup.\r
323 ;This decision routine defined here will always return TRUE.\r
324 ;When overridden by a definition defined in DAVE code engine, this routine\r
325 ;returns FALSE indicating that the code engine has performed the clock setup\r
326 \r
327         PUBWEAK AllowClkInitByStartup\r
328         SECTION .text:CODE:REORDER:NOROOT(2)\r
329 AllowClkInitByStartup\r
330         MOVS  R0,#1\r
331         BX    LR\r
332 \r
333         END\r