start_iar.S 10 KB

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