start_iar.S 11 KB

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