iar_startup_nrf52840.s 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. ; Copyright (c) 2009-2020 ARM Limited. All rights reserved.
  2. ;
  3. ; SPDX-License-Identifier: Apache-2.0
  4. ;
  5. ; Licensed under the Apache License, Version 2.0 (the License); you may
  6. ; not use this file except in compliance with the License.
  7. ; You may obtain a copy of the License at
  8. ;
  9. ; www.apache.org/licenses/LICENSE-2.0
  10. ;
  11. ; Unless required by applicable law or agreed to in writing, software
  12. ; distributed under the License is distributed on an AS IS BASIS, WITHOUT
  13. ; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. ; See the License for the specific language governing permissions and
  15. ; limitations under the License.
  16. ;
  17. ; NOTICE: This file has been modified by Nordic Semiconductor ASA.
  18. ; The modules in this file are included in the libraries, and may be replaced
  19. ; by any user-defined modules that define the PUBLIC symbol _program_start or
  20. ; a user defined start symbol.
  21. ; To override the cstartup defined in the library, simply add your modified
  22. ; version to the workbench project.
  23. ;
  24. ; The vector table is normally located at address 0.
  25. ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
  26. ; The name "__vector_table" has special meaning for C-SPY:
  27. ; it is where the SP start value is found, and the NVIC vector
  28. ; table register (VTOR) is initialized to this address if != 0.
  29. MODULE ?cstartup
  30. #if defined(__STARTUP_CONFIG)
  31. #include "startup_config.h"
  32. #ifndef __STARTUP_CONFIG_STACK_ALIGNEMENT
  33. #define __STARTUP_CONFIG_STACK_ALIGNEMENT 3
  34. #endif
  35. SECTION CSTACK:DATA:NOROOT(__STARTUP_CONFIG_STACK_ALIGNEMENT)
  36. DS8 __STARTUP_CONFIG_STACK_SIZE
  37. SECTION HEAP:DATA:NOROOT(3)
  38. DS8 __STARTUP_CONFIG_HEAP_SIZE
  39. #else
  40. ;; Stack size default : Defined in *.icf (linker file). Can be modified inside EW.
  41. ;; Heap size default : Defined in *.icf (linker file). Can be modified inside EW.
  42. ;; Forward declaration of sections.
  43. SECTION CSTACK:DATA:NOROOT(3)
  44. #endif
  45. SECTION .intvec:CODE:NOROOT(2)
  46. EXTERN __iar_program_start
  47. EXTERN SystemInit
  48. PUBLIC __vector_table
  49. PUBLIC __Vectors
  50. PUBLIC __Vectors_End
  51. PUBLIC __Vectors_Size
  52. DATA
  53. __vector_table
  54. DCD sfe(CSTACK)
  55. DCD Reset_Handler
  56. DCD NMI_Handler
  57. DCD HardFault_Handler
  58. DCD MemoryManagement_Handler
  59. DCD BusFault_Handler
  60. DCD UsageFault_Handler
  61. DCD 0 ; Reserved
  62. DCD 0 ; Reserved
  63. DCD 0 ; Reserved
  64. DCD 0 ; Reserved
  65. DCD SVC_Handler
  66. DCD DebugMon_Handler
  67. DCD 0 ; Reserved
  68. DCD PendSV_Handler
  69. DCD SysTick_Handler
  70. ; External Interrupts
  71. DCD POWER_CLOCK_IRQHandler
  72. DCD RADIO_IRQHandler
  73. DCD UARTE0_UART0_IRQHandler
  74. DCD SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler
  75. DCD SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler
  76. DCD NFCT_IRQHandler
  77. DCD GPIOTE_IRQHandler
  78. DCD SAADC_IRQHandler
  79. DCD TIMER0_IRQHandler
  80. DCD TIMER1_IRQHandler
  81. DCD TIMER2_IRQHandler
  82. DCD RTC0_IRQHandler
  83. DCD TEMP_IRQHandler
  84. DCD RNG_IRQHandler
  85. DCD ECB_IRQHandler
  86. DCD CCM_AAR_IRQHandler
  87. DCD WDT_IRQHandler
  88. DCD RTC1_IRQHandler
  89. DCD QDEC_IRQHandler
  90. DCD COMP_LPCOMP_IRQHandler
  91. DCD SWI0_EGU0_IRQHandler
  92. DCD SWI1_EGU1_IRQHandler
  93. DCD SWI2_EGU2_IRQHandler
  94. DCD SWI3_EGU3_IRQHandler
  95. DCD SWI4_EGU4_IRQHandler
  96. DCD SWI5_EGU5_IRQHandler
  97. DCD TIMER3_IRQHandler
  98. DCD TIMER4_IRQHandler
  99. DCD PWM0_IRQHandler
  100. DCD PDM_IRQHandler
  101. DCD 0 ; Reserved
  102. DCD 0 ; Reserved
  103. DCD MWU_IRQHandler
  104. DCD PWM1_IRQHandler
  105. DCD PWM2_IRQHandler
  106. DCD SPIM2_SPIS2_SPI2_IRQHandler
  107. DCD RTC2_IRQHandler
  108. DCD I2S_IRQHandler
  109. DCD FPU_IRQHandler
  110. DCD USBD_IRQHandler
  111. DCD UARTE1_IRQHandler
  112. DCD QSPI_IRQHandler
  113. DCD CRYPTOCELL_IRQHandler
  114. DCD 0 ; Reserved
  115. DCD 0 ; Reserved
  116. DCD PWM3_IRQHandler
  117. DCD 0 ; Reserved
  118. DCD SPIM3_IRQHandler
  119. DCD 0 ; Reserved
  120. DCD 0 ; Reserved
  121. DCD 0 ; Reserved
  122. DCD 0 ; Reserved
  123. DCD 0 ; Reserved
  124. DCD 0 ; Reserved
  125. DCD 0 ; Reserved
  126. DCD 0 ; Reserved
  127. DCD 0 ; Reserved
  128. DCD 0 ; Reserved
  129. DCD 0 ; Reserved
  130. DCD 0 ; Reserved
  131. DCD 0 ; Reserved
  132. DCD 0 ; Reserved
  133. DCD 0 ; Reserved
  134. DCD 0 ; Reserved
  135. DCD 0 ; Reserved
  136. DCD 0 ; Reserved
  137. DCD 0 ; Reserved
  138. DCD 0 ; Reserved
  139. DCD 0 ; Reserved
  140. DCD 0 ; Reserved
  141. DCD 0 ; Reserved
  142. DCD 0 ; Reserved
  143. DCD 0 ; Reserved
  144. DCD 0 ; Reserved
  145. DCD 0 ; Reserved
  146. DCD 0 ; Reserved
  147. DCD 0 ; Reserved
  148. DCD 0 ; Reserved
  149. DCD 0 ; Reserved
  150. DCD 0 ; Reserved
  151. DCD 0 ; Reserved
  152. DCD 0 ; Reserved
  153. DCD 0 ; Reserved
  154. DCD 0 ; Reserved
  155. DCD 0 ; Reserved
  156. DCD 0 ; Reserved
  157. DCD 0 ; Reserved
  158. DCD 0 ; Reserved
  159. DCD 0 ; Reserved
  160. DCD 0 ; Reserved
  161. DCD 0 ; Reserved
  162. DCD 0 ; Reserved
  163. DCD 0 ; Reserved
  164. DCD 0 ; Reserved
  165. DCD 0 ; Reserved
  166. DCD 0 ; Reserved
  167. DCD 0 ; Reserved
  168. DCD 0 ; Reserved
  169. DCD 0 ; Reserved
  170. DCD 0 ; Reserved
  171. DCD 0 ; Reserved
  172. DCD 0 ; Reserved
  173. DCD 0 ; Reserved
  174. DCD 0 ; Reserved
  175. DCD 0 ; Reserved
  176. DCD 0 ; Reserved
  177. DCD 0 ; Reserved
  178. DCD 0 ; Reserved
  179. DCD 0 ; Reserved
  180. DCD 0 ; Reserved
  181. DCD 0 ; Reserved
  182. DCD 0 ; Reserved
  183. __Vectors_End
  184. __Vectors EQU __vector_table
  185. __Vectors_Size EQU __Vectors_End - __Vectors
  186. ; Default handlers.
  187. THUMB
  188. PUBWEAK Reset_Handler
  189. SECTION .text:CODE:REORDER:NOROOT(2)
  190. Reset_Handler
  191. LDR R0, =SystemInit
  192. BLX R0
  193. LDR R0, =__iar_program_start
  194. BX R0
  195. ; Dummy exception handlers
  196. PUBWEAK NMI_Handler
  197. SECTION .text:CODE:REORDER:NOROOT(1)
  198. NMI_Handler
  199. B .
  200. PUBWEAK HardFault_Handler
  201. SECTION .text:CODE:REORDER:NOROOT(1)
  202. HardFault_Handler
  203. B .
  204. PUBWEAK MemoryManagement_Handler
  205. SECTION .text:CODE:REORDER:NOROOT(1)
  206. MemoryManagement_Handler
  207. B .
  208. PUBWEAK BusFault_Handler
  209. SECTION .text:CODE:REORDER:NOROOT(1)
  210. BusFault_Handler
  211. B .
  212. PUBWEAK UsageFault_Handler
  213. SECTION .text:CODE:REORDER:NOROOT(1)
  214. UsageFault_Handler
  215. B .
  216. PUBWEAK SVC_Handler
  217. SECTION .text:CODE:REORDER:NOROOT(1)
  218. SVC_Handler
  219. B .
  220. PUBWEAK DebugMon_Handler
  221. SECTION .text:CODE:REORDER:NOROOT(1)
  222. DebugMon_Handler
  223. B .
  224. PUBWEAK PendSV_Handler
  225. SECTION .text:CODE:REORDER:NOROOT(1)
  226. PendSV_Handler
  227. B .
  228. PUBWEAK SysTick_Handler
  229. SECTION .text:CODE:REORDER:NOROOT(1)
  230. SysTick_Handler
  231. B .
  232. ; Dummy interrupt handlers
  233. PUBWEAK POWER_CLOCK_IRQHandler
  234. SECTION .text:CODE:REORDER:NOROOT(1)
  235. POWER_CLOCK_IRQHandler
  236. B .
  237. PUBWEAK RADIO_IRQHandler
  238. SECTION .text:CODE:REORDER:NOROOT(1)
  239. RADIO_IRQHandler
  240. B .
  241. PUBWEAK UARTE0_UART0_IRQHandler
  242. SECTION .text:CODE:REORDER:NOROOT(1)
  243. UARTE0_UART0_IRQHandler
  244. B .
  245. PUBWEAK SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler
  246. SECTION .text:CODE:REORDER:NOROOT(1)
  247. SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler
  248. B .
  249. PUBWEAK SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler
  250. SECTION .text:CODE:REORDER:NOROOT(1)
  251. SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler
  252. B .
  253. PUBWEAK NFCT_IRQHandler
  254. SECTION .text:CODE:REORDER:NOROOT(1)
  255. NFCT_IRQHandler
  256. B .
  257. PUBWEAK GPIOTE_IRQHandler
  258. SECTION .text:CODE:REORDER:NOROOT(1)
  259. GPIOTE_IRQHandler
  260. B .
  261. PUBWEAK SAADC_IRQHandler
  262. SECTION .text:CODE:REORDER:NOROOT(1)
  263. SAADC_IRQHandler
  264. B .
  265. PUBWEAK TIMER0_IRQHandler
  266. SECTION .text:CODE:REORDER:NOROOT(1)
  267. TIMER0_IRQHandler
  268. B .
  269. PUBWEAK TIMER1_IRQHandler
  270. SECTION .text:CODE:REORDER:NOROOT(1)
  271. TIMER1_IRQHandler
  272. B .
  273. PUBWEAK TIMER2_IRQHandler
  274. SECTION .text:CODE:REORDER:NOROOT(1)
  275. TIMER2_IRQHandler
  276. B .
  277. PUBWEAK RTC0_IRQHandler
  278. SECTION .text:CODE:REORDER:NOROOT(1)
  279. RTC0_IRQHandler
  280. B .
  281. PUBWEAK TEMP_IRQHandler
  282. SECTION .text:CODE:REORDER:NOROOT(1)
  283. TEMP_IRQHandler
  284. B .
  285. PUBWEAK RNG_IRQHandler
  286. SECTION .text:CODE:REORDER:NOROOT(1)
  287. RNG_IRQHandler
  288. B .
  289. PUBWEAK ECB_IRQHandler
  290. SECTION .text:CODE:REORDER:NOROOT(1)
  291. ECB_IRQHandler
  292. B .
  293. PUBWEAK CCM_AAR_IRQHandler
  294. SECTION .text:CODE:REORDER:NOROOT(1)
  295. CCM_AAR_IRQHandler
  296. B .
  297. PUBWEAK WDT_IRQHandler
  298. SECTION .text:CODE:REORDER:NOROOT(1)
  299. WDT_IRQHandler
  300. B .
  301. PUBWEAK RTC1_IRQHandler
  302. SECTION .text:CODE:REORDER:NOROOT(1)
  303. RTC1_IRQHandler
  304. B .
  305. PUBWEAK QDEC_IRQHandler
  306. SECTION .text:CODE:REORDER:NOROOT(1)
  307. QDEC_IRQHandler
  308. B .
  309. PUBWEAK COMP_LPCOMP_IRQHandler
  310. SECTION .text:CODE:REORDER:NOROOT(1)
  311. COMP_LPCOMP_IRQHandler
  312. B .
  313. PUBWEAK SWI0_EGU0_IRQHandler
  314. SECTION .text:CODE:REORDER:NOROOT(1)
  315. SWI0_EGU0_IRQHandler
  316. B .
  317. PUBWEAK SWI1_EGU1_IRQHandler
  318. SECTION .text:CODE:REORDER:NOROOT(1)
  319. SWI1_EGU1_IRQHandler
  320. B .
  321. PUBWEAK SWI2_EGU2_IRQHandler
  322. SECTION .text:CODE:REORDER:NOROOT(1)
  323. SWI2_EGU2_IRQHandler
  324. B .
  325. PUBWEAK SWI3_EGU3_IRQHandler
  326. SECTION .text:CODE:REORDER:NOROOT(1)
  327. SWI3_EGU3_IRQHandler
  328. B .
  329. PUBWEAK SWI4_EGU4_IRQHandler
  330. SECTION .text:CODE:REORDER:NOROOT(1)
  331. SWI4_EGU4_IRQHandler
  332. B .
  333. PUBWEAK SWI5_EGU5_IRQHandler
  334. SECTION .text:CODE:REORDER:NOROOT(1)
  335. SWI5_EGU5_IRQHandler
  336. B .
  337. PUBWEAK TIMER3_IRQHandler
  338. SECTION .text:CODE:REORDER:NOROOT(1)
  339. TIMER3_IRQHandler
  340. B .
  341. PUBWEAK TIMER4_IRQHandler
  342. SECTION .text:CODE:REORDER:NOROOT(1)
  343. TIMER4_IRQHandler
  344. B .
  345. PUBWEAK PWM0_IRQHandler
  346. SECTION .text:CODE:REORDER:NOROOT(1)
  347. PWM0_IRQHandler
  348. B .
  349. PUBWEAK PDM_IRQHandler
  350. SECTION .text:CODE:REORDER:NOROOT(1)
  351. PDM_IRQHandler
  352. B .
  353. PUBWEAK MWU_IRQHandler
  354. SECTION .text:CODE:REORDER:NOROOT(1)
  355. MWU_IRQHandler
  356. B .
  357. PUBWEAK PWM1_IRQHandler
  358. SECTION .text:CODE:REORDER:NOROOT(1)
  359. PWM1_IRQHandler
  360. B .
  361. PUBWEAK PWM2_IRQHandler
  362. SECTION .text:CODE:REORDER:NOROOT(1)
  363. PWM2_IRQHandler
  364. B .
  365. PUBWEAK SPIM2_SPIS2_SPI2_IRQHandler
  366. SECTION .text:CODE:REORDER:NOROOT(1)
  367. SPIM2_SPIS2_SPI2_IRQHandler
  368. B .
  369. PUBWEAK RTC2_IRQHandler
  370. SECTION .text:CODE:REORDER:NOROOT(1)
  371. RTC2_IRQHandler
  372. B .
  373. PUBWEAK I2S_IRQHandler
  374. SECTION .text:CODE:REORDER:NOROOT(1)
  375. I2S_IRQHandler
  376. B .
  377. PUBWEAK FPU_IRQHandler
  378. SECTION .text:CODE:REORDER:NOROOT(1)
  379. FPU_IRQHandler
  380. B .
  381. PUBWEAK USBD_IRQHandler
  382. SECTION .text:CODE:REORDER:NOROOT(1)
  383. USBD_IRQHandler
  384. B .
  385. PUBWEAK UARTE1_IRQHandler
  386. SECTION .text:CODE:REORDER:NOROOT(1)
  387. UARTE1_IRQHandler
  388. B .
  389. PUBWEAK QSPI_IRQHandler
  390. SECTION .text:CODE:REORDER:NOROOT(1)
  391. QSPI_IRQHandler
  392. B .
  393. PUBWEAK CRYPTOCELL_IRQHandler
  394. SECTION .text:CODE:REORDER:NOROOT(1)
  395. CRYPTOCELL_IRQHandler
  396. B .
  397. PUBWEAK PWM3_IRQHandler
  398. SECTION .text:CODE:REORDER:NOROOT(1)
  399. PWM3_IRQHandler
  400. B .
  401. PUBWEAK SPIM3_IRQHandler
  402. SECTION .text:CODE:REORDER:NOROOT(1)
  403. SPIM3_IRQHandler
  404. B .
  405. END