]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_EFMG890F128_IAR/startup_efm32.s
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_EFMG890F128_IAR / startup_efm32.s
1 ;/*************************************************************************//**\r
2 ; * @file:    startup_efm32.s\r
3 ; * @purpose: CMSIS Cortex-M3 Core Device Startup File \r
4 ; *           for the Energy Micro 'EFM32G' Device Series \r
5 ; * @version 1.0.2\r
6 ; * @date:    10. September 2009\r
7 ; *----------------------------------------------------------------------------\r
8 ; *\r
9 ; * Copyright (C) 2009 ARM Limited. All rights reserved.\r
10 ; *\r
11 ; * ARM Limited (ARM) is supplying this software for use with Cortex-Mx \r
12 ; * processor based microcontrollers.  This file can be freely distributed \r
13 ; * within development tools that are supporting such ARM based processors. \r
14 ; *\r
15 ; * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
16 ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
17 ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
18 ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
19 ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
20 ; *\r
21 ; ******************************************************************************/\r
22 \r
23 \r
24 ;\r
25 ; The modules in this file are included in the libraries, and may be replaced\r
26 ; by any user-defined modules that define the PUBLIC symbol _program_start or\r
27 ; a user defined start symbol.\r
28 ; To override the cstartup defined in the library, simply add your modified\r
29 ; version to the workbench project.\r
30 ;\r
31 ; The vector table is normally located at address 0.\r
32 ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.\r
33 ; The name "__vector_table" has special meaning for C-SPY:\r
34 ; it is where the SP start value is found, and the NVIC vector\r
35 ; table register (VTOR) is initialized to this address if != 0.\r
36 ;\r
37 ; Cortex-M version\r
38 ;\r
39         MODULE  ?cstartup\r
40 \r
41         ;; Forward declaration of sections.\r
42         SECTION CSTACK:DATA:NOROOT(3)\r
43 \r
44         SECTION .intvec:CODE:NOROOT(2)\r
45             \r
46         EXTERN  __iar_program_start\r
47         EXTERN  SystemInit\r
48         PUBLIC  __vector_table\r
49         PUBLIC  __vector_table_0x1c\r
50         PUBLIC  __Vectors\r
51         PUBLIC  __Vectors_End\r
52         PUBLIC  __Vectors_Size\r
53 \r
54         DATA\r
55 \r
56 __vector_table\r
57         DCD     sfe(CSTACK)\r
58         DCD     Reset_Handler\r
59 \r
60         DCD     NMI_Handler\r
61         DCD     HardFault_Handler\r
62         DCD     MemManage_Handler\r
63         DCD     BusFault_Handler\r
64         DCD     UsageFault_Handler\r
65 __vector_table_0x1c\r
66         DCD     0\r
67         DCD     0\r
68         DCD     0\r
69         DCD     0\r
70         DCD     vPortSVCHandler\r
71         DCD     DebugMon_Handler\r
72         DCD     0\r
73         DCD     xPortPendSVHandler\r
74         DCD     xPortSysTickHandler \r
75 \r
76         ; External Interrupts\r
77         DCD DMA_IRQHandler  ; 0: DMA Interrupt \r
78         DCD GPIO_EVEN_IRQHandler  ; 1: GPIO_EVEN Interrupt \r
79         DCD TIMER0_IRQHandler  ; 2: TIMER0 Interrupt \r
80         DCD USART0_RX_IRQHandler  ; 3: USART0_RX Interrupt \r
81         DCD USART0_TX_IRQHandler  ; 4: USART0_TX Interrupt \r
82         DCD ACMP0_IRQHandler  ; 5: ACMP0 Interrupt \r
83         DCD ADC0_IRQHandler  ; 6: ADC0 Interrupt \r
84         DCD DAC0_IRQHandler  ; 7: DAC0 Interrupt \r
85         DCD I2C0_IRQHandler  ; 8: I2C0 Interrupt \r
86         DCD GPIO_ODD_IRQHandler  ; 9: GPIO_ODD Interrupt \r
87         DCD TIMER1_IRQHandler  ; 10: TIMER1 Interrupt \r
88         DCD TIMER2_IRQHandler  ; 11: TIMER2 Interrupt \r
89         DCD USART1_RX_IRQHandler  ; 12: USART1_RX Interrupt \r
90         DCD USART1_TX_IRQHandler  ; 13: USART1_TX Interrupt \r
91         DCD USART2_RX_IRQHandler  ; 14: USART2_RX Interrupt \r
92         DCD USART2_TX_IRQHandler  ; 15: USART2_TX Interrupt \r
93         DCD UART0_RX_IRQHandler  ; 16: UART0_RX Interrupt \r
94         DCD UART0_TX_IRQHandler  ; 17: UART0_TX Interrupt \r
95         DCD LEUART0_IRQHandler  ; 18: LEUART0 Interrupt \r
96         DCD LEUART1_IRQHandler  ; 19: LEUART1 Interrupt \r
97         DCD LETIMER0_IRQHandler  ; 20: LETIMER0 Interrupt \r
98         DCD PCNT0_IRQHandler  ; 21: PCNT0 Interrupt \r
99         DCD PCNT1_IRQHandler  ; 22: PCNT1 Interrupt \r
100         DCD PCNT2_IRQHandler  ; 23: PCNT2 Interrupt \r
101         DCD SYSTICCK_IRQHandler;DCD RTC_IRQHandler  ; 24: RTC Interrupt \r
102         DCD CMU_IRQHandler  ; 25: CMU Interrupt \r
103         DCD VCMP_IRQHandler  ; 26: VCMP Interrupt \r
104         DCD LCD_IRQHandler  ; 27: LCD Interrupt \r
105         DCD MSC_IRQHandler  ; 28: MSC Interrupt \r
106         DCD AES_IRQHandler  ; 29: AES Interrupt \r
107 \r
108 __Vectors_End\r
109 __Vectors       EQU   __vector_table\r
110 __Vectors_Size  EQU     __Vectors_End - __Vectors\r
111 \r
112 \r
113 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
114 ;;\r
115 ;; Default interrupt handlers.\r
116 ;;\r
117         THUMB\r
118 \r
119         PUBWEAK Reset_Handler\r
120         SECTION .text:CODE:REORDER(2)\r
121 Reset_Handler\r
122         LDR     R0, =SystemInit\r
123         BLX     R0\r
124         LDR     R0, =__iar_program_start\r
125         BX      R0\r
126 \r
127         PUBWEAK NMI_Handler\r
128         SECTION .text:CODE:REORDER(1)\r
129 NMI_Handler\r
130         B NMI_Handler\r
131 \r
132         PUBWEAK HardFault_Handler\r
133         SECTION .text:CODE:REORDER(1)\r
134 HardFault_Handler\r
135         B HardFault_Handler\r
136 \r
137         PUBWEAK MemManage_Handler\r
138         SECTION .text:CODE:REORDER(1)\r
139 MemManage_Handler\r
140         B MemManage_Handler\r
141 \r
142         PUBWEAK BusFault_Handler\r
143         SECTION .text:CODE:REORDER(1)\r
144 BusFault_Handler\r
145         B BusFault_Handler\r
146 \r
147         PUBWEAK UsageFault_Handler\r
148         SECTION .text:CODE:REORDER(1)\r
149 UsageFault_Handler\r
150         B UsageFault_Handler\r
151 \r
152         PUBWEAK vPortSVCHandler\r
153         SECTION .text:CODE:REORDER(1)\r
154 vPortSVCHandler\r
155         B vPortSVCHandler\r
156 \r
157         PUBWEAK DebugMon_Handler\r
158         SECTION .text:CODE:REORDER(1)\r
159 DebugMon_Handler\r
160         B DebugMon_Handler\r
161 \r
162         PUBWEAK xPortPendSVHandler\r
163         SECTION .text:CODE:REORDER(1)\r
164 xPortPendSVHandler\r
165         B xPortPendSVHandler\r
166 \r
167         PUBWEAK SYSTICCK_IRQHandler\r
168         SECTION .text:CODE:REORDER(1)\r
169 SYSTICCK_IRQHandler\r
170         B SYSTICCK_IRQHandler\r
171         ; EFM32G specific interrupt handlers\r
172 \r
173         PUBWEAK DMA_IRQHandler\r
174         SECTION .text:CODE:REORDER(1)\r
175 DMA_IRQHandler\r
176         B DMA_IRQHandler\r
177  \r
178         PUBWEAK GPIO_EVEN_IRQHandler\r
179         SECTION .text:CODE:REORDER(1)\r
180 GPIO_EVEN_IRQHandler\r
181         B GPIO_EVEN_IRQHandler\r
182  \r
183         PUBWEAK TIMER0_IRQHandler\r
184         SECTION .text:CODE:REORDER(1)\r
185 TIMER0_IRQHandler\r
186         B TIMER0_IRQHandler\r
187  \r
188         PUBWEAK USART0_RX_IRQHandler\r
189         SECTION .text:CODE:REORDER(1)\r
190 USART0_RX_IRQHandler\r
191         B USART0_RX_IRQHandler\r
192  \r
193         PUBWEAK USART0_TX_IRQHandler\r
194         SECTION .text:CODE:REORDER(1)\r
195 USART0_TX_IRQHandler\r
196         B USART0_TX_IRQHandler\r
197  \r
198         PUBWEAK ACMP0_IRQHandler\r
199         SECTION .text:CODE:REORDER(1)\r
200 ACMP0_IRQHandler\r
201         B ACMP0_IRQHandler\r
202  \r
203         PUBWEAK ADC0_IRQHandler\r
204         SECTION .text:CODE:REORDER(1)\r
205 ADC0_IRQHandler\r
206         B ADC0_IRQHandler\r
207  \r
208         PUBWEAK DAC0_IRQHandler\r
209         SECTION .text:CODE:REORDER(1)\r
210 DAC0_IRQHandler\r
211         B DAC0_IRQHandler\r
212  \r
213         PUBWEAK I2C0_IRQHandler\r
214         SECTION .text:CODE:REORDER(1)\r
215 I2C0_IRQHandler\r
216         B I2C0_IRQHandler\r
217  \r
218         PUBWEAK GPIO_ODD_IRQHandler\r
219         SECTION .text:CODE:REORDER(1)\r
220 GPIO_ODD_IRQHandler\r
221         B GPIO_ODD_IRQHandler\r
222  \r
223         PUBWEAK TIMER1_IRQHandler\r
224         SECTION .text:CODE:REORDER(1)\r
225 TIMER1_IRQHandler\r
226         B TIMER1_IRQHandler\r
227  \r
228         PUBWEAK TIMER2_IRQHandler\r
229         SECTION .text:CODE:REORDER(1)\r
230 TIMER2_IRQHandler\r
231         B TIMER2_IRQHandler\r
232  \r
233         PUBWEAK USART1_RX_IRQHandler\r
234         SECTION .text:CODE:REORDER(1)\r
235 USART1_RX_IRQHandler\r
236         B USART1_RX_IRQHandler\r
237  \r
238         PUBWEAK USART1_TX_IRQHandler\r
239         SECTION .text:CODE:REORDER(1)\r
240 USART1_TX_IRQHandler\r
241         B USART1_TX_IRQHandler\r
242  \r
243         PUBWEAK USART2_RX_IRQHandler\r
244         SECTION .text:CODE:REORDER(1)\r
245 USART2_RX_IRQHandler\r
246         B USART2_RX_IRQHandler\r
247  \r
248         PUBWEAK USART2_TX_IRQHandler\r
249         SECTION .text:CODE:REORDER(1)\r
250 USART2_TX_IRQHandler\r
251         B USART2_TX_IRQHandler\r
252  \r
253         PUBWEAK UART0_RX_IRQHandler\r
254         SECTION .text:CODE:REORDER(1)\r
255 UART0_RX_IRQHandler\r
256         B UART0_RX_IRQHandler\r
257  \r
258         PUBWEAK UART0_TX_IRQHandler\r
259         SECTION .text:CODE:REORDER(1)\r
260 UART0_TX_IRQHandler\r
261         B UART0_TX_IRQHandler\r
262  \r
263         PUBWEAK LEUART0_IRQHandler\r
264         SECTION .text:CODE:REORDER(1)\r
265 LEUART0_IRQHandler\r
266         B LEUART0_IRQHandler\r
267  \r
268         PUBWEAK LEUART1_IRQHandler\r
269         SECTION .text:CODE:REORDER(1)\r
270 LEUART1_IRQHandler\r
271         B LEUART1_IRQHandler\r
272  \r
273         PUBWEAK LETIMER0_IRQHandler\r
274         SECTION .text:CODE:REORDER(1)\r
275 LETIMER0_IRQHandler\r
276         B LETIMER0_IRQHandler\r
277  \r
278         PUBWEAK PCNT0_IRQHandler\r
279         SECTION .text:CODE:REORDER(1)\r
280 PCNT0_IRQHandler\r
281         B PCNT0_IRQHandler\r
282  \r
283         PUBWEAK PCNT1_IRQHandler\r
284         SECTION .text:CODE:REORDER(1)\r
285 PCNT1_IRQHandler\r
286         B PCNT1_IRQHandler\r
287  \r
288         PUBWEAK PCNT2_IRQHandler\r
289         SECTION .text:CODE:REORDER(1)\r
290 PCNT2_IRQHandler\r
291         B PCNT2_IRQHandler\r
292  \r
293         PUBWEAK xPortSysTickHandler\r
294         SECTION .text:CODE:REORDER(1)\r
295 xPortSysTickHandler\r
296         B xPortSysTickHandler\r
297  \r
298         PUBWEAK CMU_IRQHandler\r
299         SECTION .text:CODE:REORDER(1)\r
300 CMU_IRQHandler\r
301         B CMU_IRQHandler\r
302  \r
303         PUBWEAK VCMP_IRQHandler\r
304         SECTION .text:CODE:REORDER(1)\r
305 VCMP_IRQHandler\r
306         B VCMP_IRQHandler\r
307  \r
308         PUBWEAK LCD_IRQHandler\r
309         SECTION .text:CODE:REORDER(1)\r
310 LCD_IRQHandler\r
311         B LCD_IRQHandler\r
312  \r
313         PUBWEAK MSC_IRQHandler\r
314         SECTION .text:CODE:REORDER(1)\r
315 MSC_IRQHandler\r
316         B MSC_IRQHandler\r
317  \r
318         PUBWEAK AES_IRQHandler\r
319         SECTION .text:CODE:REORDER(1)\r
320 AES_IRQHandler\r
321         B AES_IRQHandler\r
322  \r
323         END\r