1;/*
2; * Copyright (c) 2006-2021, RT-Thread Development Team
3; *
4; * SPDX-License-Identifier: Apache-2.0
5; *
6; * Change Logs:
7; * Date           Author       Notes
8; * 2009-01-17     Bernard      first version
9; * 2009-09-27     Bernard      add protect when contex switch occurs
10; */
11
12#include "rtconfig.h"
13
14    MODULE  ?cstartup
15
16;; ICODE is the same segment as cstartup. By placing __low_level_init
17;; in the same segment, we make sure it can be reached with BL. */
18
19    SECTION CSTACK:DATA:NOROOT(3)
20    SECTION .icode:CODE:NOROOT(2)
21
22#ifdef RT_USING_UART2
23    IMPORT  MFS2RX_IRQHandler
24#endif
25    PUBLIC  __low_level_init
26
27    PUBWEAK SystemInit_ExtMemCtl
28    SECTION .text:CODE:REORDER(2)
29    THUMB
30SystemInit_ExtMemCtl
31    BX LR
32
33__low_level_init:
34    ;;  Initialize hardware.
35    LDR R0, = SystemInit_ExtMemCtl ; initialize external memory controller
36    MOV R11, LR
37    BLX R0
38    LDR R1, =sfe(CSTACK)        ; restore original stack pointer
39    MSR MSP, R1
40    MOV R0,#1
41    ;; Return with BX to be independent of mode of caller
42    BX  R11
43
44    ;; Forward declaration of sections.
45    SECTION .intvec:CODE:NOROOT(2)
46
47    EXTERN  __iar_program_start
48    PUBLIC  __vector_table
49
50    DATA
51__vector_table
52    DCD     sfe(CSTACK)
53    DCD     __iar_program_start
54
55    DCD     NMI_Handler               ; NMI Handler
56    DCD     HardFault_Handler         ; Hard Fault Handler
57    DCD     MemManage_Handler         ; MPU Fault Handler
58    DCD     BusFault_Handler          ; Bus Fault Handler
59    DCD     UsageFault_Handler        ; Usage Fault Handler
60    DCD     0                         ; Reserved
61    DCD     0                         ; Reserved
62    DCD     0                         ; Reserved
63    DCD     0                         ; Reserved
64    DCD     SVC_Handler               ; SVCall Handler
65    DCD     DebugMon_Handler          ; Debug Monitor Handler
66    DCD     0                         ; Reserved
67    DCD     PendSV_Handler            ; PendSV Handler
68    DCD     SysTick_Handler           ; SysTick Handler
69
70    ; External Interrupts
71    DCD     CSV_IRQHandler            ; Clock Super Visor
72    DCD     SWDT_IRQHandler           ; Software Watchdog Timer
73    DCD     LVD_IRQHandler            ; Low Voltage Detector
74    DCD     WFG_IRQHandler            ; Wave Form Generator
75    DCD     EXINT0_7_IRQHandler       ; External Interrupt Request ch.0 to ch.7
76    DCD     EXINT8_15_IRQHandler      ; External Interrupt Request ch.8 to ch.15
77    DCD     DTIM_QDU_IRQHandler       ; Dual Timer / Quad Decoder
78    DCD     MFS0RX_IRQHandler         ; MultiFunction Serial ch.0
79    DCD     MFS0TX_IRQHandler         ; MultiFunction Serial ch.0
80    DCD     MFS1RX_IRQHandler         ; MultiFunction Serial ch.1
81    DCD     MFS1TX_IRQHandler         ; MultiFunction Serial ch.1
82#ifdef RT_USING_UART2
83    DCD     MFS2RX_IRQHandler         ; MultiFunction Serial ch.2
84#else
85    DCD     NULL_IRQHandler           ; MultiFunction Serial ch.2
86#endif
87    DCD     MFS2TX_IRQHandler         ; MultiFunction Serial ch.2
88    DCD     MFS3RX_IRQHandler         ; MultiFunction Serial ch.3
89    DCD     MFS3TX_IRQHandler         ; MultiFunction Serial ch.3
90    DCD     MFS4RX_IRQHandler         ; MultiFunction Serial ch.4
91    DCD     MFS4TX_IRQHandler         ; MultiFunction Serial ch.4
92    DCD     MFS5RX_IRQHandler         ; MultiFunction Serial ch.5
93    DCD     MFS5TX_IRQHandler         ; MultiFunction Serial ch.5
94    DCD     MFS6RX_IRQHandler         ; MultiFunction Serial ch.6
95    DCD     MFS6TX_IRQHandler         ; MultiFunction Serial ch.6
96    DCD     MFS7RX_IRQHandler         ; MultiFunction Serial ch.7
97    DCD     MFS7TX_IRQHandler         ; MultiFunction Serial ch.7
98    DCD     PPG_IRQHandler            ; PPG
99    DCD     OSC_PLL_WC_IRQHandler     ; OSC / PLL / Watch Counter
100    DCD     ADC0_IRQHandler           ; ADC0
101    DCD     ADC1_IRQHandler           ; ADC1
102    DCD     ADC2_IRQHandler           ; ADC2
103    DCD     FRTIM_IRQHandler          ; Free-run Timer
104    DCD     INCAP_IRQHandler          ; Input Capture
105    DCD     OUTCOMP_IRQHandler        ; Output Compare
106    DCD     BTIM_IRQHandler           ; Base Timer ch.0 to ch.7
107    DCD     CAN0_IRQHandler           ; CAN ch.0
108    DCD     CAN1_IRQHandler           ; CAN ch.1
109    DCD     USBF_IRQHandler           ; USB Function
110    DCD     USBF_USBH_IRQHandler      ; USB Function / USB HOST
111    DCD     RESERVED_1_IRQHandler     ; Reserved_1
112    DCD     RESERVED_2_IRQHandler     ; Reserved_2
113    DCD     DMAC0_IRQHandler          ; DMAC ch.0
114    DCD     DMAC1_IRQHandler          ; DMAC ch.1
115    DCD     DMAC2_IRQHandler          ; DMAC ch.2
116    DCD     DMAC3_IRQHandler          ; DMAC ch.3
117    DCD     DMAC4_IRQHandler          ; DMAC ch.4
118    DCD     DMAC5_IRQHandler          ; DMAC ch.5
119    DCD     DMAC6_IRQHandler          ; DMAC ch.6
120    DCD     DMAC7_IRQHandler          ; DMAC ch.7
121    DCD     RESERVED_3_IRQHandler     ; Reserved_3
122    DCD     RESERVED_4_IRQHandler     ; Reserved_4
123
124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
125;;
126;; Default interrupt handlers.
127;;
128    THUMB
129
130    PUBWEAK NMI_Handler
131    SECTION .text:CODE:REORDER(1)
132NMI_Handler
133    B NMI_Handler
134    PUBWEAK HardFault_Handler
135    SECTION .text:CODE:REORDER(1)
136HardFault_Handler
137    B HardFault_Handler
138    PUBWEAK MemManage_Handler
139    SECTION .text:CODE:REORDER(1)
140MemManage_Handler
141    B MemManage_Handler
142    PUBWEAK BusFault_Handler
143    SECTION .text:CODE:REORDER(1)
144BusFault_Handler
145    B BusFault_Handler
146    PUBWEAK UsageFault_Handler
147    SECTION .text:CODE:REORDER(1)
148UsageFault_Handler
149    B UsageFault_Handler
150    PUBWEAK SVC_Handler
151    SECTION .text:CODE:REORDER(1)
152SVC_Handler
153    B SVC_Handler
154    PUBWEAK DebugMon_Handler
155    SECTION .text:CODE:REORDER(1)
156DebugMon_Handler
157    B DebugMon_Handler
158    PUBWEAK PendSV_Handler
159    SECTION .text:CODE:REORDER(1)
160PendSV_Handler
161    B PendSV_Handler
162    PUBWEAK SysTick_Handler
163    SECTION .text:CODE:REORDER(1)
164SysTick_Handler
165    B SysTick_Handler
166    PUBWEAK CSV_IRQHandler
167    SECTION .text:CODE:REORDER(1)
168CSV_IRQHandler
169    B CSV_IRQHandler
170    PUBWEAK SWDT_IRQHandler
171    SECTION .text:CODE:REORDER(1)
172SWDT_IRQHandler
173    B SWDT_IRQHandler
174    PUBWEAK LVD_IRQHandler
175    SECTION .text:CODE:REORDER(1)
176LVD_IRQHandler
177    B LVD_IRQHandler
178    PUBWEAK WFG_IRQHandler
179    SECTION .text:CODE:REORDER(1)
180WFG_IRQHandler
181    B WFG_IRQHandler
182    PUBWEAK EXINT0_7_IRQHandler
183    SECTION .text:CODE:REORDER(1)
184EXINT0_7_IRQHandler
185    B EXINT0_7_IRQHandler
186    PUBWEAK EXINT8_15_IRQHandler
187    SECTION .text:CODE:REORDER(1)
188EXINT8_15_IRQHandler
189    B EXINT8_15_IRQHandler
190    PUBWEAK DTIM_QDU_IRQHandler
191    SECTION .text:CODE:REORDER(1)
192DTIM_QDU_IRQHandler
193    B DTIM_QDU_IRQHandler
194    PUBWEAK MFS0RX_IRQHandler
195    SECTION .text:CODE:REORDER(1)
196MFS0RX_IRQHandler
197    B MFS0RX_IRQHandler
198    PUBWEAK MFS0TX_IRQHandler
199    SECTION .text:CODE:REORDER(1)
200MFS0TX_IRQHandler
201    B MFS0TX_IRQHandler
202    PUBWEAK MFS1RX_IRQHandler
203    SECTION .text:CODE:REORDER(1)
204MFS1RX_IRQHandler
205    B MFS1RX_IRQHandler
206    PUBWEAK MFS1TX_IRQHandler
207    SECTION .text:CODE:REORDER(1)
208MFS1TX_IRQHandler
209    B MFS1TX_IRQHandler
210    PUBWEAK NULL_IRQHandler
211    SECTION .text:CODE:REORDER(1)
212NULL_IRQHandler
213    B NULL_IRQHandler
214    PUBWEAK MFS2TX_IRQHandler
215    SECTION .text:CODE:REORDER(1)
216MFS2TX_IRQHandler
217    B MFS2TX_IRQHandler
218    PUBWEAK MFS3RX_IRQHandler
219    SECTION .text:CODE:REORDER(1)
220MFS3RX_IRQHandler
221    B MFS3RX_IRQHandler
222    PUBWEAK MFS3TX_IRQHandler
223    SECTION .text:CODE:REORDER(1)
224MFS3TX_IRQHandler
225    B MFS3TX_IRQHandler
226    PUBWEAK MFS4RX_IRQHandler
227    SECTION .text:CODE:REORDER(1)
228MFS4RX_IRQHandler
229    B MFS4RX_IRQHandler
230    PUBWEAK MFS4TX_IRQHandler
231    SECTION .text:CODE:REORDER(1)
232MFS4TX_IRQHandler
233    B MFS4TX_IRQHandler
234    PUBWEAK MFS5RX_IRQHandler
235    SECTION .text:CODE:REORDER(1)
236MFS5RX_IRQHandler
237    B MFS5RX_IRQHandler
238    PUBWEAK MFS5TX_IRQHandler
239    SECTION .text:CODE:REORDER(1)
240MFS5TX_IRQHandler
241    B MFS5TX_IRQHandler
242    PUBWEAK MFS6RX_IRQHandler
243    SECTION .text:CODE:REORDER(1)
244MFS6RX_IRQHandler
245    B MFS6RX_IRQHandler
246    PUBWEAK MFS6TX_IRQHandler
247    SECTION .text:CODE:REORDER(1)
248MFS6TX_IRQHandler
249    B MFS6TX_IRQHandler
250    PUBWEAK MFS7RX_IRQHandler
251    SECTION .text:CODE:REORDER(1)
252MFS7RX_IRQHandler
253    B MFS7RX_IRQHandler
254    PUBWEAK MFS7TX_IRQHandler
255    SECTION .text:CODE:REORDER(1)
256MFS7TX_IRQHandler
257    B MFS7TX_IRQHandler
258    PUBWEAK PPG_IRQHandler
259    SECTION .text:CODE:REORDER(1)
260PPG_IRQHandler
261    B PPG_IRQHandler
262    PUBWEAK OSC_PLL_WC_IRQHandler
263    SECTION .text:CODE:REORDER(1)
264OSC_PLL_WC_IRQHandler
265    B OSC_PLL_WC_IRQHandler
266    PUBWEAK ADC0_IRQHandler
267    SECTION .text:CODE:REORDER(1)
268ADC0_IRQHandler
269    B ADC0_IRQHandler
270    PUBWEAK ADC1_IRQHandler
271    SECTION .text:CODE:REORDER(1)
272ADC1_IRQHandler
273    B ADC1_IRQHandler
274    PUBWEAK ADC2_IRQHandler
275    SECTION .text:CODE:REORDER(1)
276ADC2_IRQHandler
277    B ADC2_IRQHandler
278    PUBWEAK FRTIM_IRQHandler
279    SECTION .text:CODE:REORDER(1)
280FRTIM_IRQHandler
281    B FRTIM_IRQHandler
282    PUBWEAK INCAP_IRQHandler
283    SECTION .text:CODE:REORDER(1)
284INCAP_IRQHandler
285    B INCAP_IRQHandler
286    PUBWEAK OUTCOMP_IRQHandler
287    SECTION .text:CODE:REORDER(1)
288OUTCOMP_IRQHandler
289    B OUTCOMP_IRQHandler
290    PUBWEAK BTIM_IRQHandler
291    SECTION .text:CODE:REORDER(1)
292BTIM_IRQHandler
293    B BTIM_IRQHandler
294    PUBWEAK CAN0_IRQHandler
295    SECTION .text:CODE:REORDER(1)
296CAN0_IRQHandler
297    B CAN0_IRQHandler
298    PUBWEAK CAN1_IRQHandler
299    SECTION .text:CODE:REORDER(1)
300CAN1_IRQHandler
301    B CAN1_IRQHandler
302    PUBWEAK USBF_IRQHandler
303    SECTION .text:CODE:REORDER(1)
304USBF_IRQHandler
305    B USBF_IRQHandler
306    PUBWEAK USBF_USBH_IRQHandler
307    SECTION .text:CODE:REORDER(1)
308USBF_USBH_IRQHandler
309    B USBF_USBH_IRQHandler
310    PUBWEAK RESERVED_1_IRQHandler
311    SECTION .text:CODE:REORDER(1)
312RESERVED_1_IRQHandler
313    B RESERVED_1_IRQHandler
314    PUBWEAK RESERVED_2_IRQHandler
315    SECTION .text:CODE:REORDER(1)
316RESERVED_2_IRQHandler
317    B RESERVED_2_IRQHandler
318    PUBWEAK DMAC0_IRQHandler
319    SECTION .text:CODE:REORDER(1)
320DMAC0_IRQHandler
321    B DMAC0_IRQHandler
322    PUBWEAK DMAC1_IRQHandler
323    SECTION .text:CODE:REORDER(1)
324DMAC1_IRQHandler
325    B DMAC1_IRQHandler
326    PUBWEAK DMAC2_IRQHandler
327    SECTION .text:CODE:REORDER(1)
328DMAC2_IRQHandler
329    B DMAC2_IRQHandler
330    PUBWEAK DMAC3_IRQHandler
331    SECTION .text:CODE:REORDER(1)
332DMAC3_IRQHandler
333    B DMAC3_IRQHandler
334    PUBWEAK DMAC4_IRQHandler
335    SECTION .text:CODE:REORDER(1)
336DMAC4_IRQHandler
337    B DMAC4_IRQHandler
338    PUBWEAK DMAC5_IRQHandler
339    SECTION .text:CODE:REORDER(1)
340DMAC5_IRQHandler
341    B DMAC5_IRQHandler
342    PUBWEAK DMAC6_IRQHandler
343    SECTION .text:CODE:REORDER(1)
344DMAC6_IRQHandler
345    B DMAC6_IRQHandler
346    PUBWEAK DMAC7_IRQHandler
347    SECTION .text:CODE:REORDER(1)
348DMAC7_IRQHandler
349    B DMAC7_IRQHandler
350    PUBWEAK RESERVED_3_IRQHandler
351    SECTION .text:CODE:REORDER(1)
352RESERVED_3_IRQHandler
353    B RESERVED_3_IRQHandler
354    PUBWEAK RESERVED_4_IRQHandler
355    SECTION .text:CODE:REORDER(1)
356RESERVED_4_IRQHandler
357    B RESERVED_4_IRQHandler
358
359    END
360