iar_startup_nrf9160.s 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  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 SecureFault_Handler
  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 0 ; Reserved
  72. DCD 0 ; Reserved
  73. DCD 0 ; Reserved
  74. DCD SPU_IRQHandler
  75. DCD 0 ; Reserved
  76. DCD CLOCK_POWER_IRQHandler
  77. DCD 0 ; Reserved
  78. DCD 0 ; Reserved
  79. DCD UARTE0_SPIM0_SPIS0_TWIM0_TWIS0_IRQHandler
  80. DCD UARTE1_SPIM1_SPIS1_TWIM1_TWIS1_IRQHandler
  81. DCD UARTE2_SPIM2_SPIS2_TWIM2_TWIS2_IRQHandler
  82. DCD UARTE3_SPIM3_SPIS3_TWIM3_TWIS3_IRQHandler
  83. DCD 0 ; Reserved
  84. DCD GPIOTE0_IRQHandler
  85. DCD SAADC_IRQHandler
  86. DCD TIMER0_IRQHandler
  87. DCD TIMER1_IRQHandler
  88. DCD TIMER2_IRQHandler
  89. DCD 0 ; Reserved
  90. DCD 0 ; Reserved
  91. DCD RTC0_IRQHandler
  92. DCD RTC1_IRQHandler
  93. DCD 0 ; Reserved
  94. DCD 0 ; Reserved
  95. DCD WDT_IRQHandler
  96. DCD 0 ; Reserved
  97. DCD 0 ; Reserved
  98. DCD EGU0_IRQHandler
  99. DCD EGU1_IRQHandler
  100. DCD EGU2_IRQHandler
  101. DCD EGU3_IRQHandler
  102. DCD EGU4_IRQHandler
  103. DCD EGU5_IRQHandler
  104. DCD PWM0_IRQHandler
  105. DCD PWM1_IRQHandler
  106. DCD PWM2_IRQHandler
  107. DCD PWM3_IRQHandler
  108. DCD 0 ; Reserved
  109. DCD PDM_IRQHandler
  110. DCD 0 ; Reserved
  111. DCD I2S_IRQHandler
  112. DCD 0 ; Reserved
  113. DCD IPC_IRQHandler
  114. DCD 0 ; Reserved
  115. DCD FPU_IRQHandler
  116. DCD 0 ; Reserved
  117. DCD 0 ; Reserved
  118. DCD 0 ; Reserved
  119. DCD 0 ; Reserved
  120. DCD GPIOTE1_IRQHandler
  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 KMU_IRQHandler
  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 CRYPTOCELL_IRQHandler
  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. DCD 0 ; Reserved
  184. DCD 0 ; Reserved
  185. DCD 0 ; Reserved
  186. DCD 0 ; Reserved
  187. DCD 0 ; Reserved
  188. DCD 0 ; Reserved
  189. DCD 0 ; Reserved
  190. DCD 0 ; Reserved
  191. DCD 0 ; Reserved
  192. DCD 0 ; Reserved
  193. DCD 0 ; Reserved
  194. DCD 0 ; Reserved
  195. DCD 0 ; Reserved
  196. DCD 0 ; Reserved
  197. DCD 0 ; Reserved
  198. DCD 0 ; Reserved
  199. DCD 0 ; Reserved
  200. DCD 0 ; Reserved
  201. DCD 0 ; Reserved
  202. DCD 0 ; Reserved
  203. DCD 0 ; Reserved
  204. DCD 0 ; Reserved
  205. DCD 0 ; Reserved
  206. DCD 0 ; Reserved
  207. DCD 0 ; Reserved
  208. DCD 0 ; Reserved
  209. DCD 0 ; Reserved
  210. DCD 0 ; Reserved
  211. DCD 0 ; Reserved
  212. DCD 0 ; Reserved
  213. DCD 0 ; Reserved
  214. DCD 0 ; Reserved
  215. DCD 0 ; Reserved
  216. DCD 0 ; Reserved
  217. DCD 0 ; Reserved
  218. DCD 0 ; Reserved
  219. DCD 0 ; Reserved
  220. DCD 0 ; Reserved
  221. DCD 0 ; Reserved
  222. DCD 0 ; Reserved
  223. DCD 0 ; Reserved
  224. DCD 0 ; Reserved
  225. DCD 0 ; Reserved
  226. DCD 0 ; Reserved
  227. DCD 0 ; Reserved
  228. DCD 0 ; Reserved
  229. DCD 0 ; Reserved
  230. DCD 0 ; Reserved
  231. DCD 0 ; Reserved
  232. DCD 0 ; Reserved
  233. DCD 0 ; Reserved
  234. DCD 0 ; Reserved
  235. DCD 0 ; Reserved
  236. DCD 0 ; Reserved
  237. DCD 0 ; Reserved
  238. DCD 0 ; Reserved
  239. DCD 0 ; Reserved
  240. DCD 0 ; Reserved
  241. DCD 0 ; Reserved
  242. DCD 0 ; Reserved
  243. DCD 0 ; Reserved
  244. DCD 0 ; Reserved
  245. DCD 0 ; Reserved
  246. DCD 0 ; Reserved
  247. DCD 0 ; Reserved
  248. DCD 0 ; Reserved
  249. DCD 0 ; Reserved
  250. DCD 0 ; Reserved
  251. DCD 0 ; Reserved
  252. DCD 0 ; Reserved
  253. DCD 0 ; Reserved
  254. DCD 0 ; Reserved
  255. DCD 0 ; Reserved
  256. DCD 0 ; Reserved
  257. DCD 0 ; Reserved
  258. DCD 0 ; Reserved
  259. DCD 0 ; Reserved
  260. DCD 0 ; Reserved
  261. DCD 0 ; Reserved
  262. DCD 0 ; Reserved
  263. DCD 0 ; Reserved
  264. DCD 0 ; Reserved
  265. DCD 0 ; Reserved
  266. DCD 0 ; Reserved
  267. DCD 0 ; Reserved
  268. DCD 0 ; Reserved
  269. DCD 0 ; Reserved
  270. DCD 0 ; Reserved
  271. DCD 0 ; Reserved
  272. DCD 0 ; Reserved
  273. DCD 0 ; Reserved
  274. DCD 0 ; Reserved
  275. DCD 0 ; Reserved
  276. DCD 0 ; Reserved
  277. DCD 0 ; Reserved
  278. DCD 0 ; Reserved
  279. DCD 0 ; Reserved
  280. DCD 0 ; Reserved
  281. DCD 0 ; Reserved
  282. DCD 0 ; Reserved
  283. DCD 0 ; Reserved
  284. DCD 0 ; Reserved
  285. DCD 0 ; Reserved
  286. DCD 0 ; Reserved
  287. DCD 0 ; Reserved
  288. DCD 0 ; Reserved
  289. DCD 0 ; Reserved
  290. DCD 0 ; Reserved
  291. DCD 0 ; Reserved
  292. DCD 0 ; Reserved
  293. DCD 0 ; Reserved
  294. DCD 0 ; Reserved
  295. DCD 0 ; Reserved
  296. DCD 0 ; Reserved
  297. DCD 0 ; Reserved
  298. DCD 0 ; Reserved
  299. DCD 0 ; Reserved
  300. DCD 0 ; Reserved
  301. DCD 0 ; Reserved
  302. DCD 0 ; Reserved
  303. DCD 0 ; Reserved
  304. DCD 0 ; Reserved
  305. DCD 0 ; Reserved
  306. DCD 0 ; Reserved
  307. DCD 0 ; Reserved
  308. DCD 0 ; Reserved
  309. DCD 0 ; Reserved
  310. DCD 0 ; Reserved
  311. __Vectors_End
  312. __Vectors EQU __vector_table
  313. __Vectors_Size EQU __Vectors_End - __Vectors
  314. ; Default handlers.
  315. THUMB
  316. PUBWEAK Reset_Handler
  317. SECTION .text:CODE:REORDER:NOROOT(2)
  318. Reset_Handler
  319. LDR R0, =SystemInit
  320. BLX R0
  321. LDR R0, =__iar_program_start
  322. BX R0
  323. ; Dummy exception handlers
  324. PUBWEAK NMI_Handler
  325. SECTION .text:CODE:REORDER:NOROOT(1)
  326. NMI_Handler
  327. B .
  328. PUBWEAK HardFault_Handler
  329. SECTION .text:CODE:REORDER:NOROOT(1)
  330. HardFault_Handler
  331. B .
  332. PUBWEAK MemoryManagement_Handler
  333. SECTION .text:CODE:REORDER:NOROOT(1)
  334. MemoryManagement_Handler
  335. B .
  336. PUBWEAK BusFault_Handler
  337. SECTION .text:CODE:REORDER:NOROOT(1)
  338. BusFault_Handler
  339. B .
  340. PUBWEAK UsageFault_Handler
  341. SECTION .text:CODE:REORDER:NOROOT(1)
  342. UsageFault_Handler
  343. B .
  344. PUBWEAK SecureFault_Handler
  345. SECTION .text:CODE:REORDER:NOROOT(1)
  346. SecureFault_Handler
  347. B .
  348. PUBWEAK SVC_Handler
  349. SECTION .text:CODE:REORDER:NOROOT(1)
  350. SVC_Handler
  351. B .
  352. PUBWEAK DebugMon_Handler
  353. SECTION .text:CODE:REORDER:NOROOT(1)
  354. DebugMon_Handler
  355. B .
  356. PUBWEAK PendSV_Handler
  357. SECTION .text:CODE:REORDER:NOROOT(1)
  358. PendSV_Handler
  359. B .
  360. PUBWEAK SysTick_Handler
  361. SECTION .text:CODE:REORDER:NOROOT(1)
  362. SysTick_Handler
  363. B .
  364. ; Dummy interrupt handlers
  365. PUBWEAK SPU_IRQHandler
  366. SECTION .text:CODE:REORDER:NOROOT(1)
  367. SPU_IRQHandler
  368. B .
  369. PUBWEAK CLOCK_POWER_IRQHandler
  370. SECTION .text:CODE:REORDER:NOROOT(1)
  371. CLOCK_POWER_IRQHandler
  372. B .
  373. PUBWEAK UARTE0_SPIM0_SPIS0_TWIM0_TWIS0_IRQHandler
  374. SECTION .text:CODE:REORDER:NOROOT(1)
  375. UARTE0_SPIM0_SPIS0_TWIM0_TWIS0_IRQHandler
  376. B .
  377. PUBWEAK UARTE1_SPIM1_SPIS1_TWIM1_TWIS1_IRQHandler
  378. SECTION .text:CODE:REORDER:NOROOT(1)
  379. UARTE1_SPIM1_SPIS1_TWIM1_TWIS1_IRQHandler
  380. B .
  381. PUBWEAK UARTE2_SPIM2_SPIS2_TWIM2_TWIS2_IRQHandler
  382. SECTION .text:CODE:REORDER:NOROOT(1)
  383. UARTE2_SPIM2_SPIS2_TWIM2_TWIS2_IRQHandler
  384. B .
  385. PUBWEAK UARTE3_SPIM3_SPIS3_TWIM3_TWIS3_IRQHandler
  386. SECTION .text:CODE:REORDER:NOROOT(1)
  387. UARTE3_SPIM3_SPIS3_TWIM3_TWIS3_IRQHandler
  388. B .
  389. PUBWEAK GPIOTE0_IRQHandler
  390. SECTION .text:CODE:REORDER:NOROOT(1)
  391. GPIOTE0_IRQHandler
  392. B .
  393. PUBWEAK SAADC_IRQHandler
  394. SECTION .text:CODE:REORDER:NOROOT(1)
  395. SAADC_IRQHandler
  396. B .
  397. PUBWEAK TIMER0_IRQHandler
  398. SECTION .text:CODE:REORDER:NOROOT(1)
  399. TIMER0_IRQHandler
  400. B .
  401. PUBWEAK TIMER1_IRQHandler
  402. SECTION .text:CODE:REORDER:NOROOT(1)
  403. TIMER1_IRQHandler
  404. B .
  405. PUBWEAK TIMER2_IRQHandler
  406. SECTION .text:CODE:REORDER:NOROOT(1)
  407. TIMER2_IRQHandler
  408. B .
  409. PUBWEAK RTC0_IRQHandler
  410. SECTION .text:CODE:REORDER:NOROOT(1)
  411. RTC0_IRQHandler
  412. B .
  413. PUBWEAK RTC1_IRQHandler
  414. SECTION .text:CODE:REORDER:NOROOT(1)
  415. RTC1_IRQHandler
  416. B .
  417. PUBWEAK WDT_IRQHandler
  418. SECTION .text:CODE:REORDER:NOROOT(1)
  419. WDT_IRQHandler
  420. B .
  421. PUBWEAK EGU0_IRQHandler
  422. SECTION .text:CODE:REORDER:NOROOT(1)
  423. EGU0_IRQHandler
  424. B .
  425. PUBWEAK EGU1_IRQHandler
  426. SECTION .text:CODE:REORDER:NOROOT(1)
  427. EGU1_IRQHandler
  428. B .
  429. PUBWEAK EGU2_IRQHandler
  430. SECTION .text:CODE:REORDER:NOROOT(1)
  431. EGU2_IRQHandler
  432. B .
  433. PUBWEAK EGU3_IRQHandler
  434. SECTION .text:CODE:REORDER:NOROOT(1)
  435. EGU3_IRQHandler
  436. B .
  437. PUBWEAK EGU4_IRQHandler
  438. SECTION .text:CODE:REORDER:NOROOT(1)
  439. EGU4_IRQHandler
  440. B .
  441. PUBWEAK EGU5_IRQHandler
  442. SECTION .text:CODE:REORDER:NOROOT(1)
  443. EGU5_IRQHandler
  444. B .
  445. PUBWEAK PWM0_IRQHandler
  446. SECTION .text:CODE:REORDER:NOROOT(1)
  447. PWM0_IRQHandler
  448. B .
  449. PUBWEAK PWM1_IRQHandler
  450. SECTION .text:CODE:REORDER:NOROOT(1)
  451. PWM1_IRQHandler
  452. B .
  453. PUBWEAK PWM2_IRQHandler
  454. SECTION .text:CODE:REORDER:NOROOT(1)
  455. PWM2_IRQHandler
  456. B .
  457. PUBWEAK PWM3_IRQHandler
  458. SECTION .text:CODE:REORDER:NOROOT(1)
  459. PWM3_IRQHandler
  460. B .
  461. PUBWEAK PDM_IRQHandler
  462. SECTION .text:CODE:REORDER:NOROOT(1)
  463. PDM_IRQHandler
  464. B .
  465. PUBWEAK I2S_IRQHandler
  466. SECTION .text:CODE:REORDER:NOROOT(1)
  467. I2S_IRQHandler
  468. B .
  469. PUBWEAK IPC_IRQHandler
  470. SECTION .text:CODE:REORDER:NOROOT(1)
  471. IPC_IRQHandler
  472. B .
  473. PUBWEAK FPU_IRQHandler
  474. SECTION .text:CODE:REORDER:NOROOT(1)
  475. FPU_IRQHandler
  476. B .
  477. PUBWEAK GPIOTE1_IRQHandler
  478. SECTION .text:CODE:REORDER:NOROOT(1)
  479. GPIOTE1_IRQHandler
  480. B .
  481. PUBWEAK KMU_IRQHandler
  482. SECTION .text:CODE:REORDER:NOROOT(1)
  483. KMU_IRQHandler
  484. B .
  485. PUBWEAK CRYPTOCELL_IRQHandler
  486. SECTION .text:CODE:REORDER:NOROOT(1)
  487. CRYPTOCELL_IRQHandler
  488. B .
  489. END