1 /*****************************************************************************
\r
2 * Copyright (c) 2007 Rowley Associates Limited. *
\r
4 * This file may be distributed under the terms of the License Agreement *
\r
5 * provided with this software. *
\r
7 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE *
\r
8 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. *
\r
9 *****************************************************************************/
\r
11 /*****************************************************************************
\r
12 * Preprocessor Definitions
\r
13 * ------------------------
\r
15 * STARTUP_FROM_RESET
\r
17 * If defined, the program will startup from power-on/reset. If not defined
\r
18 * the program will just loop endlessly from power-on/reset.
\r
20 * This definition is not defined by default on this target because the
\r
21 * debugger is unable to reset this target and maintain control of it over the
\r
22 * JTAG interface. The advantage of doing this is that it allows the debugger
\r
23 * to reset the CPU and run programs from a known reset CPU state on each run.
\r
24 * It also acts as a safety net if you accidently download a program in FLASH
\r
25 * that crashes and prevents the debugger from taking control over JTAG
\r
26 * rendering the target unusable over JTAG. The obvious disadvantage of doing
\r
27 * this is that your application will not startup without the debugger.
\r
29 * We advise that on this target you keep STARTUP_FROM_RESET undefined whilst
\r
30 * you are developing and only define STARTUP_FROM_RESET when development is
\r
33 *****************************************************************************/
\r
35 .global reset_handler
\r
37 .section .vectors, "ax"
\r
42 .macro DEFAULT_ISR_HANDLER name=
\r
46 1: b 1b /* endless loop */
\r
49 .extern xPortPendSVHandler
\r
50 .extern xPortSysTickHandler
\r
51 .extern vPortSVCHandler
\r
56 #ifdef STARTUP_FROM_RESET
\r
60 #endif /* STARTUP_FROM_RESET */
\r
62 .word HardFaultException
\r
63 .word MemManageException
\r
64 .word BusFaultException
\r
65 .word UsageFaultException
\r
70 .word vPortSVCHandler
\r
73 .word xPortPendSVHandler
\r
74 .word xPortSysTickHandler
\r
75 .word WWDG_IRQHandler
\r
76 .word PVD_IRQHandler
\r
77 .word TAMPER_IRQHandler
\r
78 .word RTC_IRQHandler
\r
79 .word FLASH_IRQHandler
\r
80 .word RCC_IRQHandler
\r
81 .word EXTI0_IRQHandler
\r
82 .word EXTI1_IRQHandler
\r
83 .word EXTI2_IRQHandler
\r
84 .word EXTI3_IRQHandler
\r
85 .word EXTI4_IRQHandler
\r
86 .word DMAChannel1_IRQHandler
\r
87 .word DMAChannel2_IRQHandler
\r
88 .word DMAChannel3_IRQHandler
\r
89 .word DMAChannel4_IRQHandler
\r
90 .word DMAChannel5_IRQHandler
\r
91 .word DMAChannel6_IRQHandler
\r
92 .word DMAChannel7_IRQHandler
\r
93 .word ADC_IRQHandler
\r
94 .word USB_HP_CAN_TX_IRQHandler
\r
95 .word USB_LP_CAN_RX0_IRQHandler
\r
96 .word CAN_RX1_IRQHandler
\r
97 .word CAN_SCE_IRQHandler
\r
98 .word EXTI9_5_IRQHandler
\r
99 .word TIM1_BRK_IRQHandler
\r
100 .word TIM1_UP_IRQHandler
\r
101 .word TIM1_TRG_COM_IRQHandler
\r
102 .word TIM1_CC_IRQHandler
\r
103 .word TIM2_IRQHandler
\r
104 .word TIM3_IRQHandler
\r
105 .word TIM4_IRQHandler
\r
106 .word I2C1_EV_IRQHandler
\r
107 .word I2C1_ER_IRQHandler
\r
108 .word I2C2_EV_IRQHandler
\r
109 .word I2C2_ER_IRQHandler
\r
110 .word SPI1_IRQHandler
\r
111 .word SPI2_IRQHandler
\r
112 .word USART1_IRQHandler
\r
113 .word USART2_IRQHandler
\r
114 .word USART3_IRQHandler
\r
115 .word EXTI15_10_IRQHandler
\r
116 .word RTCAlarm_IRQHandler
\r
117 .word USBWakeUp_IRQHandler
\r
118 .word TIM8_BRK_IRQHandler
\r
119 .word TIM8_UP_IRQHandler
\r
120 .word TIM8_TRG_COM_IRQHandler
\r
121 .word TIM8_CC_IRQHandler
\r
122 .word ADC3_IRQHandler
\r
123 .word FSMC_IRQHandler
\r
124 .word SDIO_IRQHandler
\r
125 .word TIM5_IRQHandler
\r
126 .word SPI3_IRQHandler
\r
127 .word UART4_IRQHandler
\r
128 .word UART5_IRQHandler
\r
129 .word TIM6_IRQHandler
\r
130 .word TIM7_IRQHandler
\r
131 .word DMA2_Channel1_IRQHandler
\r
132 .word DMA2_Channel2_IRQHandler
\r
133 .word DMA2_Channel3_IRQHandler
\r
134 .word DMA2_Channel4_5_IRQHandler
\r
138 .section .init, "ax"
\r
142 #ifndef __FLASH_BUILD
\r
143 /* If this is a RAM build, configure vector table offset register to point
\r
144 to the RAM vector table. */
\r
145 ldr r0, =0xE000ED08
\r
151 DEFAULT_ISR_HANDLER HardFaultException
\r
152 DEFAULT_ISR_HANDLER NMIException
\r
153 DEFAULT_ISR_HANDLER MemManageException
\r
154 DEFAULT_ISR_HANDLER BusFaultException
\r
155 DEFAULT_ISR_HANDLER UsageFaultException
\r
156 DEFAULT_ISR_HANDLER SVCHandler
\r
157 DEFAULT_ISR_HANDLER DebugMonitor
\r
158 DEFAULT_ISR_HANDLER PendSV
\r
159 DEFAULT_ISR_HANDLER SysTickHandler
\r
160 DEFAULT_ISR_HANDLER WWDG_IRQHandler
\r
161 DEFAULT_ISR_HANDLER PVD_IRQHandler
\r
162 DEFAULT_ISR_HANDLER TAMPER_IRQHandler
\r
163 DEFAULT_ISR_HANDLER RTC_IRQHandler
\r
164 DEFAULT_ISR_HANDLER FLASH_IRQHandler
\r
165 DEFAULT_ISR_HANDLER RCC_IRQHandler
\r
166 DEFAULT_ISR_HANDLER EXTI0_IRQHandler
\r
167 DEFAULT_ISR_HANDLER EXTI1_IRQHandler
\r
168 DEFAULT_ISR_HANDLER EXTI2_IRQHandler
\r
169 DEFAULT_ISR_HANDLER EXTI3_IRQHandler
\r
170 DEFAULT_ISR_HANDLER EXTI4_IRQHandler
\r
171 DEFAULT_ISR_HANDLER DMAChannel1_IRQHandler
\r
172 DEFAULT_ISR_HANDLER DMAChannel2_IRQHandler
\r
173 DEFAULT_ISR_HANDLER DMAChannel3_IRQHandler
\r
174 DEFAULT_ISR_HANDLER DMAChannel4_IRQHandler
\r
175 DEFAULT_ISR_HANDLER DMAChannel5_IRQHandler
\r
176 DEFAULT_ISR_HANDLER DMAChannel6_IRQHandler
\r
177 DEFAULT_ISR_HANDLER DMAChannel7_IRQHandler
\r
178 DEFAULT_ISR_HANDLER ADC_IRQHandler
\r
179 DEFAULT_ISR_HANDLER USB_HP_CAN_TX_IRQHandler
\r
180 DEFAULT_ISR_HANDLER USB_LP_CAN_RX0_IRQHandler
\r
181 DEFAULT_ISR_HANDLER CAN_RX1_IRQHandler
\r
182 DEFAULT_ISR_HANDLER CAN_SCE_IRQHandler
\r
183 DEFAULT_ISR_HANDLER EXTI9_5_IRQHandler
\r
184 DEFAULT_ISR_HANDLER TIM1_BRK_IRQHandler
\r
185 DEFAULT_ISR_HANDLER TIM1_UP_IRQHandler
\r
186 DEFAULT_ISR_HANDLER TIM1_TRG_COM_IRQHandler
\r
187 DEFAULT_ISR_HANDLER TIM1_CC_IRQHandler
\r
188 DEFAULT_ISR_HANDLER TIM2_IRQHandler
\r
189 DEFAULT_ISR_HANDLER TIM3_IRQHandler
\r
190 DEFAULT_ISR_HANDLER TIM4_IRQHandler
\r
191 DEFAULT_ISR_HANDLER I2C1_EV_IRQHandler
\r
192 DEFAULT_ISR_HANDLER I2C1_ER_IRQHandler
\r
193 DEFAULT_ISR_HANDLER I2C2_EV_IRQHandler
\r
194 DEFAULT_ISR_HANDLER I2C2_ER_IRQHandler
\r
195 DEFAULT_ISR_HANDLER SPI1_IRQHandler
\r
196 DEFAULT_ISR_HANDLER SPI2_IRQHandler
\r
197 DEFAULT_ISR_HANDLER USART1_IRQHandler
\r
198 DEFAULT_ISR_HANDLER USART2_IRQHandler
\r
199 DEFAULT_ISR_HANDLER USART3_IRQHandler
\r
200 DEFAULT_ISR_HANDLER EXTI15_10_IRQHandler
\r
201 DEFAULT_ISR_HANDLER RTCAlarm_IRQHandler
\r
202 DEFAULT_ISR_HANDLER USBWakeUp_IRQHandler
\r
203 DEFAULT_ISR_HANDLER TIM8_BRK_IRQHandler
\r
204 DEFAULT_ISR_HANDLER TIM8_UP_IRQHandler
\r
205 DEFAULT_ISR_HANDLER TIM8_TRG_COM_IRQHandler
\r
206 DEFAULT_ISR_HANDLER TIM8_CC_IRQHandler
\r
207 DEFAULT_ISR_HANDLER ADC3_IRQHandler
\r
208 DEFAULT_ISR_HANDLER FSMC_IRQHandler
\r
209 DEFAULT_ISR_HANDLER SDIO_IRQHandler
\r
210 DEFAULT_ISR_HANDLER TIM5_IRQHandler
\r
211 DEFAULT_ISR_HANDLER SPI3_IRQHandler
\r
212 DEFAULT_ISR_HANDLER UART4_IRQHandler
\r
213 DEFAULT_ISR_HANDLER UART5_IRQHandler
\r
214 DEFAULT_ISR_HANDLER TIM6_IRQHandler
\r
215 DEFAULT_ISR_HANDLER TIM7_IRQHandler
\r
216 DEFAULT_ISR_HANDLER DMA2_Channel1_IRQHandler
\r
217 DEFAULT_ISR_HANDLER DMA2_Channel2_IRQHandler
\r
218 DEFAULT_ISR_HANDLER DMA2_Channel3_IRQHandler
\r
219 DEFAULT_ISR_HANDLER DMA2_Channel4_5_IRQHandler
\r
221 #ifndef STARTUP_FROM_RESET
\r
222 DEFAULT_ISR_HANDLER reset_wait
\r
223 #endif /* STARTUP_FROM_RESET */
\r
225 // STM32 library requires these
\r
233 .global __MRS_CONTROL
\r
234 .global __MSR_CONTROL
\r
239 .global __SETPRIMASK
\r
240 .global __RESETPRIMASK
\r
241 .global __SETFAULTMASK
\r
242 .global __RESETFAULTMASK
\r
243 .global __BASEPRICONFIG
\r
244 .global __GetBASEPRI
\r
245 .global __REV_HalfWord
\r
323 mrs r0, basepri_max
\r