startup_gd32f10x_md.s 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. ;/*!
  2. ; \file startup_gd32f10x_md.s
  3. ; \brief start up file
  4. ;
  5. ; \version 2014-12-26, V1.0.0, firmware for GD32F10x
  6. ; \version 2017-06-20, V2.0.0, firmware for GD32F10x
  7. ; \version 2018-07-31, V2.1.0, firmware for GD32F10x
  8. ;*/
  9. ;
  10. ;/*
  11. ; Copyright (c) 2018, GigaDevice Semiconductor Inc.
  12. ;
  13. ; All rights reserved.
  14. ;
  15. ; Redistribution and use in source and binary forms, with or without modification,
  16. ;are permitted provided that the following conditions are met:
  17. ;
  18. ; 1. Redistributions of source code must retain the above copyright notice, this
  19. ; list of conditions and the following disclaimer.
  20. ; 2. Redistributions in binary form must reproduce the above copyright notice,
  21. ; this list of conditions and the following disclaimer in the documentation
  22. ; and/or other materials provided with the distribution.
  23. ; 3. Neither the name of the copyright holder nor the names of its contributors
  24. ; may be used to endorse or promote products derived from this software without
  25. ; specific prior written permission.
  26. ;
  27. ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  28. ;AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  29. ;WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  30. ;IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
  31. ;INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  32. ;NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  33. ;PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  34. ;WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  35. ;ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
  36. ;OF SUCH DAMAGE.
  37. ;*/
  38. MODULE ?cstartup
  39. ;; Forward declaration of sections.
  40. SECTION CSTACK:DATA:NOROOT(3)
  41. SECTION .intvec:CODE:NOROOT(2)
  42. EXTERN __iar_program_start
  43. EXTERN SystemInit
  44. PUBLIC __vector_table
  45. DATA
  46. __vector_table
  47. DCD sfe(CSTACK) ; top of stack
  48. DCD Reset_Handler ; Reset Handler
  49. DCD NMI_Handler ; NMI Handler
  50. DCD HardFault_Handler ; Hard Fault Handler
  51. DCD MemManage_Handler ; MPU Fault Handler
  52. DCD BusFault_Handler ; Bus Fault Handler
  53. DCD UsageFault_Handler ; Usage Fault Handler
  54. DCD 0 ; Reserved
  55. DCD 0 ; Reserved
  56. DCD 0 ; Reserved
  57. DCD 0 ; Reserved
  58. DCD SVC_Handler ; SVCall Handler
  59. DCD DebugMon_Handler ; Debug Monitor Handler
  60. DCD 0 ; Reserved
  61. DCD PendSV_Handler ; PendSV Handler
  62. DCD SysTick_Handler ; SysTick Handler
  63. ; External Interrupts
  64. DCD WWDGT_IRQHandler ; Vector Number 16,Window Watchdog Timer
  65. DCD LVD_IRQHandler ; Vector Number 17,LVD through EXTI Line detect
  66. DCD TAMPER_IRQHandler ; Vector Number 18,Tamper Interrupt
  67. DCD RTC_IRQHandler ; Vector Number 19,RTC through EXTI Line
  68. DCD FMC_IRQHandler ; Vector Number 20,FMC
  69. DCD RCU_IRQHandler ; Vector Number 21,RCU
  70. DCD EXTI0_IRQHandler ; Vector Number 22,EXTI Line 0
  71. DCD EXTI1_IRQHandler ; Vector Number 23,EXTI Line 1
  72. DCD EXTI2_IRQHandler ; Vector Number 24,EXTI Line 2
  73. DCD EXTI3_IRQHandler ; Vector Number 25,EXTI Line 3
  74. DCD EXTI4_IRQHandler ; Vector Number 26,EXTI Line 4
  75. DCD DMA0_Channel0_IRQHandler ; Vector Number 27,DMA0 Channel 0
  76. DCD DMA0_Channel1_IRQHandler ; Vector Number 28,DMA0 Channel 1
  77. DCD DMA0_Channel2_IRQHandler ; Vector Number 29,DMA0 Channel 2
  78. DCD DMA0_Channel3_IRQHandler ; Vector Number 30,DMA0 Channel 3
  79. DCD DMA0_Channel4_IRQHandler ; Vector Number 31,DMA0 Channel 4
  80. DCD DMA0_Channel5_IRQHandler ; Vector Number 32,DMA0 Channel 5
  81. DCD DMA0_Channel6_IRQHandler ; Vector Number 33,DMA0 Channel 6
  82. DCD ADC0_1_IRQHandler ; Vector Number 34,ADC0 and ADC1
  83. DCD USBD_HP_CAN0_TX_IRQHandler ; Vector Number 35,USBD and CAN0 TX
  84. DCD USBD_LP_CAN0_RX0_IRQHandler ; Vector Number 36,USBD and CAN0 RX0
  85. DCD CAN0_RX1_IRQHandler ; Vector Number 37,CAN0 RX1
  86. DCD CAN0_EWMC_IRQHandler ; Vector Number 38,CAN0 EWMC
  87. DCD EXTI5_9_IRQHandler ; Vector Number 39,EXTI Line 5 to EXTI Line 9
  88. DCD TIMER0_BRK_IRQHandler ; Vector Number 40,TIMER0 Break
  89. DCD TIMER0_UP_IRQHandler ; Vector Number 41,TIMER0 Update
  90. DCD TIMER0_TRG_CMT_IRQHandler ; Vector Number 42,TIMER0 Trigger and Commutation
  91. DCD TIMER0_Channel_IRQHandler ; Vector Number 43,TIMER0 Channel Capture Compare
  92. DCD TIMER1_IRQHandler ; Vector Number 44,TIMER1
  93. DCD TIMER2_IRQHandler ; Vector Number 45,TIMER2
  94. DCD TIMER3_IRQHandler ; Vector Number 46,TIMER3
  95. DCD I2C0_EV_IRQHandler ; Vector Number 47,I2C0 Event
  96. DCD I2C0_ER_IRQHandler ; Vector Number 48,I2C0 Error
  97. DCD I2C1_EV_IRQHandler ; Vector Number 49,I2C1 Event
  98. DCD I2C1_ER_IRQHandler ; Vector Number 50,I2C1 Error
  99. DCD SPI0_IRQHandler ; Vector Number 51,SPI0
  100. DCD SPI1_IRQHandler ; Vector Number 52,SPI1
  101. DCD USART0_IRQHandler ; Vector Number 53,USART0
  102. DCD USART1_IRQHandler ; Vector Number 54,USART1
  103. DCD USART2_IRQHandler ; Vector Number 55,USART2
  104. DCD EXTI10_15_IRQHandler ; Vector Number 56,EXTI Line 10 to EXTI Line 15
  105. DCD RTC_Alarm_IRQHandler ; Vector Number 57,RTC Alarm through EXTI Line
  106. DCD USBD_WKUP_IRQHandler ; Vector Number 58,USBD WakeUp from suspend through EXTI Line
  107. DCD 0 ; Reserved
  108. DCD 0 ; Reserved
  109. DCD 0 ; Reserved
  110. DCD 0 ; Reserved
  111. DCD 0 ; Reserved
  112. DCD EXMC_IRQHandler ; Vector Number 64,EXMC
  113. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  114. ;;
  115. ;; Default interrupt handlers.
  116. ;;
  117. THUMB
  118. PUBWEAK Reset_Handler
  119. SECTION .text:CODE:NOROOT:REORDER(2)
  120. Reset_Handler
  121. LDR R0, = SystemInit
  122. BLX R0
  123. LDR R0, =__iar_program_start
  124. BX R0
  125. PUBWEAK NMI_Handler
  126. SECTION .text:CODE:NOROOT:REORDER(1)
  127. NMI_Handler
  128. B NMI_Handler
  129. PUBWEAK HardFault_Handler
  130. SECTION .text:CODE:NOROOT:REORDER(1)
  131. HardFault_Handler
  132. B HardFault_Handler
  133. PUBWEAK MemManage_Handler
  134. SECTION .text:CODE:NOROOT:REORDER(1)
  135. MemManage_Handler
  136. B MemManage_Handler
  137. PUBWEAK BusFault_Handler
  138. SECTION .text:CODE:NOROOT:REORDER(1)
  139. BusFault_Handler
  140. B BusFault_Handler
  141. PUBWEAK UsageFault_Handler
  142. SECTION .text:CODE:NOROOT:REORDER(1)
  143. UsageFault_Handler
  144. B UsageFault_Handler
  145. PUBWEAK SVC_Handler
  146. SECTION .text:CODE:NOROOT:REORDER(1)
  147. SVC_Handler
  148. B SVC_Handler
  149. PUBWEAK DebugMon_Handler
  150. SECTION .text:CODE:NOROOT:REORDER(1)
  151. DebugMon_Handler
  152. B DebugMon_Handler
  153. PUBWEAK PendSV_Handler
  154. SECTION .text:CODE:NOROOT:REORDER(1)
  155. PendSV_Handler
  156. B PendSV_Handler
  157. PUBWEAK SysTick_Handler
  158. SECTION .text:CODE:NOROOT:REORDER(1)
  159. SysTick_Handler
  160. B SysTick_Handler
  161. PUBWEAK WWDGT_IRQHandler
  162. SECTION .text:CODE:NOROOT:REORDER(1)
  163. WWDGT_IRQHandler
  164. B WWDGT_IRQHandler
  165. PUBWEAK LVD_IRQHandler
  166. SECTION .text:CODE:NOROOT:REORDER(1)
  167. LVD_IRQHandler
  168. B LVD_IRQHandler
  169. PUBWEAK TAMPER_IRQHandler
  170. SECTION .text:CODE:NOROOT:REORDER(1)
  171. TAMPER_IRQHandler
  172. B TAMPER_IRQHandler
  173. PUBWEAK RTC_IRQHandler
  174. SECTION .text:CODE:NOROOT:REORDER(1)
  175. RTC_IRQHandler
  176. B RTC_IRQHandler
  177. PUBWEAK FMC_IRQHandler
  178. SECTION .text:CODE:NOROOT:REORDER(1)
  179. FMC_IRQHandler
  180. B FMC_IRQHandler
  181. PUBWEAK RCU_IRQHandler
  182. SECTION .text:CODE:NOROOT:REORDER(1)
  183. RCU_IRQHandler
  184. B RCU_IRQHandler
  185. PUBWEAK EXTI0_IRQHandler
  186. SECTION .text:CODE:NOROOT:REORDER(1)
  187. EXTI0_IRQHandler
  188. B EXTI0_IRQHandler
  189. PUBWEAK EXTI1_IRQHandler
  190. SECTION .text:CODE:NOROOT:REORDER(1)
  191. EXTI1_IRQHandler
  192. B EXTI1_IRQHandler
  193. PUBWEAK EXTI2_IRQHandler
  194. SECTION .text:CODE:NOROOT:REORDER(1)
  195. EXTI2_IRQHandler
  196. B EXTI2_IRQHandler
  197. PUBWEAK EXTI3_IRQHandler
  198. SECTION .text:CODE:NOROOT:REORDER(1)
  199. EXTI3_IRQHandler
  200. B EXTI3_IRQHandler
  201. PUBWEAK EXTI4_IRQHandler
  202. SECTION .text:CODE:NOROOT:REORDER(1)
  203. EXTI4_IRQHandler
  204. B EXTI4_IRQHandler
  205. PUBWEAK DMA0_Channel0_IRQHandler
  206. SECTION .text:CODE:NOROOT:REORDER(1)
  207. DMA0_Channel0_IRQHandler
  208. B DMA0_Channel0_IRQHandler
  209. PUBWEAK DMA0_Channel1_IRQHandler
  210. SECTION .text:CODE:NOROOT:REORDER(1)
  211. DMA0_Channel1_IRQHandler
  212. B DMA0_Channel1_IRQHandler
  213. PUBWEAK DMA0_Channel2_IRQHandler
  214. SECTION .text:CODE:NOROOT:REORDER(1)
  215. DMA0_Channel2_IRQHandler
  216. B DMA0_Channel2_IRQHandler
  217. PUBWEAK DMA0_Channel3_IRQHandler
  218. SECTION .text:CODE:NOROOT:REORDER(1)
  219. DMA0_Channel3_IRQHandler
  220. B DMA0_Channel3_IRQHandler
  221. PUBWEAK DMA0_Channel4_IRQHandler
  222. SECTION .text:CODE:NOROOT:REORDER(1)
  223. DMA0_Channel4_IRQHandler
  224. B DMA0_Channel4_IRQHandler
  225. PUBWEAK DMA0_Channel5_IRQHandler
  226. SECTION .text:CODE:NOROOT:REORDER(1)
  227. DMA0_Channel5_IRQHandler
  228. B DMA0_Channel5_IRQHandler
  229. PUBWEAK DMA0_Channel6_IRQHandler
  230. SECTION .text:CODE:NOROOT:REORDER(1)
  231. DMA0_Channel6_IRQHandler
  232. B DMA0_Channel6_IRQHandler
  233. PUBWEAK ADC0_1_IRQHandler
  234. SECTION .text:CODE:NOROOT:REORDER(1)
  235. ADC0_1_IRQHandler
  236. B ADC0_1_IRQHandler
  237. PUBWEAK USBD_HP_CAN0_TX_IRQHandler
  238. SECTION .text:CODE:NOROOT:REORDER(1)
  239. USBD_HP_CAN0_TX_IRQHandler
  240. B USBD_HP_CAN0_TX_IRQHandler
  241. PUBWEAK USBD_LP_CAN0_RX0_IRQHandler
  242. SECTION .text:CODE:NOROOT:REORDER(1)
  243. USBD_LP_CAN0_RX0_IRQHandler
  244. B USBD_LP_CAN0_RX0_IRQHandler
  245. PUBWEAK CAN0_RX1_IRQHandler
  246. SECTION .text:CODE:NOROOT:REORDER(1)
  247. CAN0_RX1_IRQHandler
  248. B CAN0_RX1_IRQHandler
  249. PUBWEAK CAN0_EWMC_IRQHandler
  250. SECTION .text:CODE:NOROOT:REORDER(1)
  251. CAN0_EWMC_IRQHandler
  252. B CAN0_EWMC_IRQHandler
  253. PUBWEAK EXTI5_9_IRQHandler
  254. SECTION .text:CODE:NOROOT:REORDER(1)
  255. EXTI5_9_IRQHandler
  256. B EXTI5_9_IRQHandler
  257. PUBWEAK TIMER0_BRK_IRQHandler
  258. SECTION .text:CODE:NOROOT:REORDER(1)
  259. TIMER0_BRK_IRQHandler
  260. B TIMER0_BRK_IRQHandler
  261. PUBWEAK TIMER0_UP_IRQHandler
  262. SECTION .text:CODE:NOROOT:REORDER(1)
  263. TIMER0_UP_IRQHandler
  264. B TIMER0_UP_IRQHandler
  265. PUBWEAK TIMER0_TRG_CMT_IRQHandler
  266. SECTION .text:CODE:NOROOT:REORDER(1)
  267. TIMER0_TRG_CMT_IRQHandler
  268. B TIMER0_TRG_CMT_IRQHandler
  269. PUBWEAK TIMER0_Channel_IRQHandler
  270. SECTION .text:CODE:NOROOT:REORDER(1)
  271. TIMER0_Channel_IRQHandler
  272. B TIMER0_Channel_IRQHandler
  273. PUBWEAK TIMER1_IRQHandler
  274. SECTION .text:CODE:NOROOT:REORDER(1)
  275. TIMER1_IRQHandler
  276. B TIMER1_IRQHandler
  277. PUBWEAK TIMER2_IRQHandler
  278. SECTION .text:CODE:NOROOT:REORDER(1)
  279. TIMER2_IRQHandler
  280. B TIMER2_IRQHandler
  281. PUBWEAK TIMER3_IRQHandler
  282. SECTION .text:CODE:NOROOT:REORDER(1)
  283. TIMER3_IRQHandler
  284. B TIMER3_IRQHandler
  285. PUBWEAK I2C0_EV_IRQHandler
  286. SECTION .text:CODE:NOROOT:REORDER(1)
  287. I2C0_EV_IRQHandler
  288. B I2C0_EV_IRQHandler
  289. PUBWEAK I2C0_ER_IRQHandler
  290. SECTION .text:CODE:NOROOT:REORDER(1)
  291. I2C0_ER_IRQHandler
  292. B I2C0_ER_IRQHandler
  293. PUBWEAK I2C1_EV_IRQHandler
  294. SECTION .text:CODE:NOROOT:REORDER(1)
  295. I2C1_EV_IRQHandler
  296. B I2C1_EV_IRQHandler
  297. PUBWEAK I2C1_ER_IRQHandler
  298. SECTION .text:CODE:NOROOT:REORDER(1)
  299. I2C1_ER_IRQHandler
  300. B I2C1_ER_IRQHandler
  301. PUBWEAK SPI0_IRQHandler
  302. SECTION .text:CODE:NOROOT:REORDER(1)
  303. SPI0_IRQHandler
  304. B SPI0_IRQHandler
  305. PUBWEAK SPI1_IRQHandler
  306. SECTION .text:CODE:NOROOT:REORDER(1)
  307. SPI1_IRQHandler
  308. B SPI1_IRQHandler
  309. PUBWEAK USART0_IRQHandler
  310. SECTION .text:CODE:NOROOT:REORDER(1)
  311. USART0_IRQHandler
  312. B USART0_IRQHandler
  313. PUBWEAK USART1_IRQHandler
  314. SECTION .text:CODE:NOROOT:REORDER(1)
  315. USART1_IRQHandler
  316. B USART1_IRQHandler
  317. PUBWEAK USART2_IRQHandler
  318. SECTION .text:CODE:NOROOT:REORDER(1)
  319. USART2_IRQHandler
  320. B USART2_IRQHandler
  321. PUBWEAK EXTI10_15_IRQHandler
  322. SECTION .text:CODE:NOROOT:REORDER(1)
  323. EXTI10_15_IRQHandler
  324. B EXTI10_15_IRQHandler
  325. PUBWEAK RTC_Alarm_IRQHandler
  326. SECTION .text:CODE:NOROOT:REORDER(1)
  327. RTC_Alarm_IRQHandler
  328. B RTC_Alarm_IRQHandler
  329. PUBWEAK USBD_WKUP_IRQHandler
  330. SECTION .text:CODE:NOROOT:REORDER(1)
  331. USBD_WKUP_IRQHandler
  332. B USBD_WKUP_IRQHandler
  333. PUBWEAK EXMC_IRQHandler
  334. SECTION .text:CODE:NOROOT:REORDER(1)
  335. EXMC_IRQHandler
  336. B EXMC_IRQHandler
  337. END