arm_startup_nrf5340_network.s 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  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. IF :DEF: __STARTUP_CONFIG
  19. #ifdef __STARTUP_CONFIG
  20. #include "startup_config.h"
  21. #ifndef __STARTUP_CONFIG_STACK_ALIGNEMENT
  22. #define __STARTUP_CONFIG_STACK_ALIGNEMENT 3
  23. #endif
  24. #endif
  25. ENDIF
  26. IF :DEF: __STARTUP_CONFIG
  27. Stack_Size EQU __STARTUP_CONFIG_STACK_SIZE
  28. ELIF :DEF: __STACK_SIZE
  29. Stack_Size EQU __STACK_SIZE
  30. ELSE
  31. Stack_Size EQU 4096
  32. ENDIF
  33. IF :DEF: __STARTUP_CONFIG
  34. Stack_Align EQU __STARTUP_CONFIG_STACK_ALIGNEMENT
  35. ELSE
  36. Stack_Align EQU 3
  37. ENDIF
  38. AREA STACK, NOINIT, READWRITE, ALIGN=Stack_Align
  39. Stack_Mem SPACE Stack_Size
  40. __initial_sp
  41. IF :DEF: __STARTUP_CONFIG
  42. Heap_Size EQU __STARTUP_CONFIG_HEAP_SIZE
  43. ELIF :DEF: __HEAP_SIZE
  44. Heap_Size EQU __HEAP_SIZE
  45. ELSE
  46. Heap_Size EQU 4096
  47. ENDIF
  48. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  49. __heap_base
  50. Heap_Mem SPACE Heap_Size
  51. __heap_limit
  52. PRESERVE8
  53. THUMB
  54. ; Vector Table Mapped to Address 0 at Reset
  55. AREA RESET, DATA, READONLY
  56. EXPORT __Vectors
  57. EXPORT __Vectors_End
  58. EXPORT __Vectors_Size
  59. __Vectors DCD __initial_sp ; Top of Stack
  60. DCD Reset_Handler
  61. DCD NMI_Handler
  62. DCD HardFault_Handler
  63. DCD MemoryManagement_Handler
  64. DCD BusFault_Handler
  65. DCD UsageFault_Handler
  66. DCD 0 ; Reserved
  67. DCD 0 ; Reserved
  68. DCD 0 ; Reserved
  69. DCD 0 ; Reserved
  70. DCD SVC_Handler
  71. DCD DebugMon_Handler
  72. DCD 0 ; Reserved
  73. DCD PendSV_Handler
  74. DCD SysTick_Handler
  75. ; External Interrupts
  76. DCD 0 ; Reserved
  77. DCD 0 ; Reserved
  78. DCD 0 ; Reserved
  79. DCD 0 ; Reserved
  80. DCD 0 ; Reserved
  81. DCD CLOCK_POWER_IRQHandler
  82. DCD 0 ; Reserved
  83. DCD 0 ; Reserved
  84. DCD RADIO_IRQHandler
  85. DCD RNG_IRQHandler
  86. DCD GPIOTE_IRQHandler
  87. DCD WDT_IRQHandler
  88. DCD TIMER0_IRQHandler
  89. DCD ECB_IRQHandler
  90. DCD AAR_CCM_IRQHandler
  91. DCD 0 ; Reserved
  92. DCD TEMP_IRQHandler
  93. DCD RTC0_IRQHandler
  94. DCD IPC_IRQHandler
  95. DCD SPIM0_SPIS0_TWIM0_TWIS0_UARTE0_IRQHandler
  96. DCD EGU0_IRQHandler
  97. DCD 0 ; Reserved
  98. DCD RTC1_IRQHandler
  99. DCD 0 ; Reserved
  100. DCD TIMER1_IRQHandler
  101. DCD TIMER2_IRQHandler
  102. DCD SWI0_IRQHandler
  103. DCD SWI1_IRQHandler
  104. DCD SWI2_IRQHandler
  105. DCD SWI3_IRQHandler
  106. DCD 0 ; Reserved
  107. DCD 0 ; Reserved
  108. DCD 0 ; Reserved
  109. DCD 0 ; Reserved
  110. DCD 0 ; Reserved
  111. DCD 0 ; Reserved
  112. DCD 0 ; Reserved
  113. DCD 0 ; Reserved
  114. DCD 0 ; Reserved
  115. DCD 0 ; Reserved
  116. DCD 0 ; Reserved
  117. DCD 0 ; Reserved
  118. DCD 0 ; Reserved
  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. 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. __Vectors_End
  206. __Vectors_Size EQU __Vectors_End - __Vectors
  207. AREA |.text|, CODE, READONLY
  208. ; Reset Handler
  209. Reset_Handler PROC
  210. EXPORT Reset_Handler [WEAK]
  211. IMPORT SystemInit
  212. IMPORT __main
  213. LDR R0, =SystemInit
  214. BLX R0
  215. LDR R0, =__main
  216. BX R0
  217. ENDP
  218. ; Dummy Exception Handlers (infinite loops which can be modified)
  219. NMI_Handler PROC
  220. EXPORT NMI_Handler [WEAK]
  221. B .
  222. ENDP
  223. HardFault_Handler\
  224. PROC
  225. EXPORT HardFault_Handler [WEAK]
  226. B .
  227. ENDP
  228. MemoryManagement_Handler\
  229. PROC
  230. EXPORT MemoryManagement_Handler [WEAK]
  231. B .
  232. ENDP
  233. BusFault_Handler\
  234. PROC
  235. EXPORT BusFault_Handler [WEAK]
  236. B .
  237. ENDP
  238. UsageFault_Handler\
  239. PROC
  240. EXPORT UsageFault_Handler [WEAK]
  241. B .
  242. ENDP
  243. SVC_Handler PROC
  244. EXPORT SVC_Handler [WEAK]
  245. B .
  246. ENDP
  247. DebugMon_Handler\
  248. PROC
  249. EXPORT DebugMon_Handler [WEAK]
  250. B .
  251. ENDP
  252. PendSV_Handler PROC
  253. EXPORT PendSV_Handler [WEAK]
  254. B .
  255. ENDP
  256. SysTick_Handler PROC
  257. EXPORT SysTick_Handler [WEAK]
  258. B .
  259. ENDP
  260. Default_Handler PROC
  261. EXPORT CLOCK_POWER_IRQHandler [WEAK]
  262. EXPORT RADIO_IRQHandler [WEAK]
  263. EXPORT RNG_IRQHandler [WEAK]
  264. EXPORT GPIOTE_IRQHandler [WEAK]
  265. EXPORT WDT_IRQHandler [WEAK]
  266. EXPORT TIMER0_IRQHandler [WEAK]
  267. EXPORT ECB_IRQHandler [WEAK]
  268. EXPORT AAR_CCM_IRQHandler [WEAK]
  269. EXPORT TEMP_IRQHandler [WEAK]
  270. EXPORT RTC0_IRQHandler [WEAK]
  271. EXPORT IPC_IRQHandler [WEAK]
  272. EXPORT SPIM0_SPIS0_TWIM0_TWIS0_UARTE0_IRQHandler [WEAK]
  273. EXPORT EGU0_IRQHandler [WEAK]
  274. EXPORT RTC1_IRQHandler [WEAK]
  275. EXPORT TIMER1_IRQHandler [WEAK]
  276. EXPORT TIMER2_IRQHandler [WEAK]
  277. EXPORT SWI0_IRQHandler [WEAK]
  278. EXPORT SWI1_IRQHandler [WEAK]
  279. EXPORT SWI2_IRQHandler [WEAK]
  280. EXPORT SWI3_IRQHandler [WEAK]
  281. CLOCK_POWER_IRQHandler
  282. RADIO_IRQHandler
  283. RNG_IRQHandler
  284. GPIOTE_IRQHandler
  285. WDT_IRQHandler
  286. TIMER0_IRQHandler
  287. ECB_IRQHandler
  288. AAR_CCM_IRQHandler
  289. TEMP_IRQHandler
  290. RTC0_IRQHandler
  291. IPC_IRQHandler
  292. SPIM0_SPIS0_TWIM0_TWIS0_UARTE0_IRQHandler
  293. EGU0_IRQHandler
  294. RTC1_IRQHandler
  295. TIMER1_IRQHandler
  296. TIMER2_IRQHandler
  297. SWI0_IRQHandler
  298. SWI1_IRQHandler
  299. SWI2_IRQHandler
  300. SWI3_IRQHandler
  301. B .
  302. ENDP
  303. ALIGN
  304. ; User Initial Stack & Heap
  305. IF :DEF:__MICROLIB
  306. EXPORT __initial_sp
  307. EXPORT __heap_base
  308. EXPORT __heap_limit
  309. ELSE
  310. IMPORT __use_two_region_memory
  311. EXPORT __user_initial_stackheap
  312. __user_initial_stackheap PROC
  313. LDR R0, = Heap_Mem
  314. LDR R1, = (Stack_Mem + Stack_Size)
  315. LDR R2, = (Heap_Mem + Heap_Size)
  316. LDR R3, = Stack_Mem
  317. BX LR
  318. ENDP
  319. ALIGN
  320. ENDIF
  321. END