startup_efm32g.s 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. ;/**************************************************************************//**
  2. ; * @file
  3. ; * @brief CMSIS Core Device Startup File
  4. ; * Energy Micro 'EFM32G' Device Series
  5. ; * @version 3.0.0
  6. ; * @date 30. January 2012
  7. ; *
  8. ; * @note
  9. ; * Copyright (C) 2012 ARM Limited. All rights reserved.
  10. ; *
  11. ; * @par
  12. ; * ARM Limited (ARM) is supplying this software for use with Cortex-M
  13. ; * processor based microcontrollers. This file can be freely distributed
  14. ; * within development tools that are supporting such ARM based processors.
  15. ; *
  16. ; * @par
  17. ; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
  18. ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
  19. ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
  20. ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
  21. ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
  22. ; *
  23. ; ******************************************************************************/
  24. ; Energy Micro release version
  25. ; @version INTERNAL
  26. ;
  27. ; The modules in this file are included in the libraries, and may be replaced
  28. ; by any user-defined modules that define the PUBLIC symbol _program_start or
  29. ; a user defined start symbol.
  30. ; To override the cstartup defined in the library, simply add your modified
  31. ; version to the workbench project.
  32. ;
  33. ; The vector table is normally located at address 0.
  34. ;
  35. ; When debugging in RAM, it can be located in RAM with at least a 128 byte
  36. ; alignment, 256 byte alignment is requied if all interrupt vectors are in use.
  37. ;
  38. ; The name "__vector_table" has special meaning for C-SPY:
  39. ; it is where the SP start value is found, and the NVIC vector
  40. ; table register (VTOR) is initialized to this address if != 0.
  41. ;
  42. ; Cortex-M version
  43. ;
  44. MODULE ?cstartup
  45. ;; Forward declaration of sections.
  46. SECTION CSTACK:DATA:NOROOT(3)
  47. SECTION .intvec:CODE:NOROOT(8)
  48. EXTERN __iar_program_start
  49. EXTERN SystemInit
  50. PUBLIC __vector_table
  51. PUBLIC __vector_table_0x1c
  52. PUBLIC __Vectors
  53. PUBLIC __Vectors_End
  54. PUBLIC __Vectors_Size
  55. DATA
  56. __vector_table
  57. DCD sfe(CSTACK)
  58. DCD Reset_Handler
  59. DCD NMI_Handler
  60. DCD HardFault_Handler
  61. DCD MemManage_Handler
  62. DCD BusFault_Handler
  63. DCD UsageFault_Handler
  64. __vector_table_0x1c
  65. DCD 0
  66. DCD 0
  67. DCD 0
  68. DCD 0
  69. DCD SVC_Handler
  70. DCD DebugMon_Handler
  71. DCD 0
  72. DCD PendSV_Handler
  73. DCD SysTick_Handler
  74. ; External Interrupts
  75. DCD DMA_IRQHandler ; 0: DMA Interrupt
  76. DCD GPIO_EVEN_IRQHandler ; 1: GPIO_EVEN Interrupt
  77. DCD TIMER0_IRQHandler ; 2: TIMER0 Interrupt
  78. DCD USART0_RX_IRQHandler ; 3: USART0_RX Interrupt
  79. DCD USART0_TX_IRQHandler ; 4: USART0_TX Interrupt
  80. DCD ACMP0_IRQHandler ; 5: ACMP0 Interrupt
  81. DCD ADC0_IRQHandler ; 6: ADC0 Interrupt
  82. DCD DAC0_IRQHandler ; 7: DAC0 Interrupt
  83. DCD I2C0_IRQHandler ; 8: I2C0 Interrupt
  84. DCD GPIO_ODD_IRQHandler ; 9: GPIO_ODD Interrupt
  85. DCD TIMER1_IRQHandler ; 10: TIMER1 Interrupt
  86. DCD TIMER2_IRQHandler ; 11: TIMER2 Interrupt
  87. DCD USART1_RX_IRQHandler ; 12: USART1_RX Interrupt
  88. DCD USART1_TX_IRQHandler ; 13: USART1_TX Interrupt
  89. DCD USART2_RX_IRQHandler ; 14: USART2_RX Interrupt
  90. DCD USART2_TX_IRQHandler ; 15: USART2_TX Interrupt
  91. DCD UART0_RX_IRQHandler ; 16: UART0_RX Interrupt
  92. DCD UART0_TX_IRQHandler ; 17: UART0_TX Interrupt
  93. DCD LEUART0_IRQHandler ; 18: LEUART0 Interrupt
  94. DCD LEUART1_IRQHandler ; 19: LEUART1 Interrupt
  95. DCD LETIMER0_IRQHandler ; 20: LETIMER0 Interrupt
  96. DCD PCNT0_IRQHandler ; 21: PCNT0 Interrupt
  97. DCD PCNT1_IRQHandler ; 22: PCNT1 Interrupt
  98. DCD PCNT2_IRQHandler ; 23: PCNT2 Interrupt
  99. DCD RTC_IRQHandler ; 24: RTC Interrupt
  100. DCD CMU_IRQHandler ; 25: CMU Interrupt
  101. DCD VCMP_IRQHandler ; 26: VCMP Interrupt
  102. DCD LCD_IRQHandler ; 27: LCD Interrupt
  103. DCD MSC_IRQHandler ; 28: MSC Interrupt
  104. DCD AES_IRQHandler ; 29: AES Interrupt
  105. __Vectors_End
  106. __Vectors EQU __vector_table
  107. __Vectors_Size EQU __Vectors_End - __Vectors
  108. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  109. ;;
  110. ;; Default interrupt handlers.
  111. ;;
  112. THUMB
  113. PUBWEAK Reset_Handler
  114. SECTION .text:CODE:REORDER(2)
  115. Reset_Handler
  116. LDR R0, =SystemInit
  117. BLX R0
  118. LDR R0, =__iar_program_start
  119. BX R0
  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. ; EFM32G specific interrupt handlers
  157. PUBWEAK DMA_IRQHandler
  158. SECTION .text:CODE:REORDER(1)
  159. DMA_IRQHandler
  160. B DMA_IRQHandler
  161. PUBWEAK GPIO_EVEN_IRQHandler
  162. SECTION .text:CODE:REORDER(1)
  163. GPIO_EVEN_IRQHandler
  164. B GPIO_EVEN_IRQHandler
  165. PUBWEAK TIMER0_IRQHandler
  166. SECTION .text:CODE:REORDER(1)
  167. TIMER0_IRQHandler
  168. B TIMER0_IRQHandler
  169. PUBWEAK USART0_RX_IRQHandler
  170. SECTION .text:CODE:REORDER(1)
  171. USART0_RX_IRQHandler
  172. B USART0_RX_IRQHandler
  173. PUBWEAK USART0_TX_IRQHandler
  174. SECTION .text:CODE:REORDER(1)
  175. USART0_TX_IRQHandler
  176. B USART0_TX_IRQHandler
  177. PUBWEAK ACMP0_IRQHandler
  178. SECTION .text:CODE:REORDER(1)
  179. ACMP0_IRQHandler
  180. B ACMP0_IRQHandler
  181. PUBWEAK ADC0_IRQHandler
  182. SECTION .text:CODE:REORDER(1)
  183. ADC0_IRQHandler
  184. B ADC0_IRQHandler
  185. PUBWEAK DAC0_IRQHandler
  186. SECTION .text:CODE:REORDER(1)
  187. DAC0_IRQHandler
  188. B DAC0_IRQHandler
  189. PUBWEAK I2C0_IRQHandler
  190. SECTION .text:CODE:REORDER(1)
  191. I2C0_IRQHandler
  192. B I2C0_IRQHandler
  193. PUBWEAK GPIO_ODD_IRQHandler
  194. SECTION .text:CODE:REORDER(1)
  195. GPIO_ODD_IRQHandler
  196. B GPIO_ODD_IRQHandler
  197. PUBWEAK TIMER1_IRQHandler
  198. SECTION .text:CODE:REORDER(1)
  199. TIMER1_IRQHandler
  200. B TIMER1_IRQHandler
  201. PUBWEAK TIMER2_IRQHandler
  202. SECTION .text:CODE:REORDER(1)
  203. TIMER2_IRQHandler
  204. B TIMER2_IRQHandler
  205. PUBWEAK USART1_RX_IRQHandler
  206. SECTION .text:CODE:REORDER(1)
  207. USART1_RX_IRQHandler
  208. B USART1_RX_IRQHandler
  209. PUBWEAK USART1_TX_IRQHandler
  210. SECTION .text:CODE:REORDER(1)
  211. USART1_TX_IRQHandler
  212. B USART1_TX_IRQHandler
  213. PUBWEAK USART2_RX_IRQHandler
  214. SECTION .text:CODE:REORDER(1)
  215. USART2_RX_IRQHandler
  216. B USART2_RX_IRQHandler
  217. PUBWEAK USART2_TX_IRQHandler
  218. SECTION .text:CODE:REORDER(1)
  219. USART2_TX_IRQHandler
  220. B USART2_TX_IRQHandler
  221. PUBWEAK UART0_RX_IRQHandler
  222. SECTION .text:CODE:REORDER(1)
  223. UART0_RX_IRQHandler
  224. B UART0_RX_IRQHandler
  225. PUBWEAK UART0_TX_IRQHandler
  226. SECTION .text:CODE:REORDER(1)
  227. UART0_TX_IRQHandler
  228. B UART0_TX_IRQHandler
  229. PUBWEAK LEUART0_IRQHandler
  230. SECTION .text:CODE:REORDER(1)
  231. LEUART0_IRQHandler
  232. B LEUART0_IRQHandler
  233. PUBWEAK LEUART1_IRQHandler
  234. SECTION .text:CODE:REORDER(1)
  235. LEUART1_IRQHandler
  236. B LEUART1_IRQHandler
  237. PUBWEAK LETIMER0_IRQHandler
  238. SECTION .text:CODE:REORDER(1)
  239. LETIMER0_IRQHandler
  240. B LETIMER0_IRQHandler
  241. PUBWEAK PCNT0_IRQHandler
  242. SECTION .text:CODE:REORDER(1)
  243. PCNT0_IRQHandler
  244. B PCNT0_IRQHandler
  245. PUBWEAK PCNT1_IRQHandler
  246. SECTION .text:CODE:REORDER(1)
  247. PCNT1_IRQHandler
  248. B PCNT1_IRQHandler
  249. PUBWEAK PCNT2_IRQHandler
  250. SECTION .text:CODE:REORDER(1)
  251. PCNT2_IRQHandler
  252. B PCNT2_IRQHandler
  253. PUBWEAK RTC_IRQHandler
  254. SECTION .text:CODE:REORDER(1)
  255. RTC_IRQHandler
  256. B RTC_IRQHandler
  257. PUBWEAK CMU_IRQHandler
  258. SECTION .text:CODE:REORDER(1)
  259. CMU_IRQHandler
  260. B CMU_IRQHandler
  261. PUBWEAK VCMP_IRQHandler
  262. SECTION .text:CODE:REORDER(1)
  263. VCMP_IRQHandler
  264. B VCMP_IRQHandler
  265. PUBWEAK LCD_IRQHandler
  266. SECTION .text:CODE:REORDER(1)
  267. LCD_IRQHandler
  268. B LCD_IRQHandler
  269. PUBWEAK MSC_IRQHandler
  270. SECTION .text:CODE:REORDER(1)
  271. MSC_IRQHandler
  272. B MSC_IRQHandler
  273. PUBWEAK AES_IRQHandler
  274. SECTION .text:CODE:REORDER(1)
  275. AES_IRQHandler
  276. B AES_IRQHandler
  277. SECTION .text:CODE:REORDER(1)
  278. END