startup_m2sxxx.s 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. ;*******************************************************************************
  2. ; (c) Copyright 2015 Microsemi SoC Products Group. All rights reserved.
  3. ; SmartFusion2 startup code for Keil-MDK.
  4. ;
  5. ; SmartFusion2 vector table and startup code for ARM tool chain.
  6. ;
  7. ; SVN $Revision: 7419 $
  8. ; SVN $Date: 2015-05-15 16:50:21 +0100 (Fri, 15 May 2015) $
  9. ;
  10. ; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
  11. ; <h> Stack Configuration
  12. ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
  13. ; </h>
  14. Stack_Size EQU 0x00001000
  15. AREA STACK, NOINIT, READWRITE, ALIGN=3
  16. stack_start
  17. Stack_Mem SPACE Stack_Size
  18. __initial_sp
  19. stack_end
  20. ; <h> Heap Configuration
  21. ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
  22. ; </h>
  23. Heap_Size EQU 0x00000200
  24. AREA HEAP, NOINIT, READWRITE, ALIGN=3
  25. __heap_base
  26. Heap_Mem SPACE Heap_Size
  27. __heap_limit
  28. PRESERVE8
  29. THUMB
  30. ;===============================================================================
  31. ; Vector Table Mapped to Address 0 at Reset
  32. AREA RESET, DATA, READONLY
  33. EXPORT __Vectors
  34. EXPORT __Vectors_End
  35. EXPORT __Vectors_Size
  36. __Vectors DCD __initial_sp ; Top of Stack
  37. DCD Reset_Handler ; Reset Handler
  38. DCD NMI_Handler ; NMI Handler
  39. DCD HardFault_Handler ; Hard Fault Handler
  40. DCD MemManage_Handler ; MPU Fault Handler
  41. DCD BusFault_Handler ; Bus Fault Handler
  42. DCD UsageFault_Handler ; Usage Fault Handler
  43. DCD 0 ; Reserved
  44. DCD 0 ; Reserved
  45. DCD 0 ; Reserved
  46. DCD 0 ; Reserved
  47. DCD SVC_Handler ; SVCall Handler
  48. DCD DebugMon_Handler ; Debug Monitor Handler
  49. DCD 0 ; Reserved
  50. DCD PendSV_Handler ; PendSV Handler
  51. DCD SysTick_Handler ; SysTick Handler
  52. ; External Interrupts
  53. DCD WdogWakeup_IRQHandler
  54. DCD RTC_Wakeup_IRQHandler
  55. DCD SPI0_IRQHandler
  56. DCD SPI1_IRQHandler
  57. DCD I2C0_IRQHandler
  58. DCD I2C0_SMBAlert_IRQHandler
  59. DCD I2C0_SMBus_IRQHandler
  60. DCD I2C1_IRQHandler
  61. DCD I2C1_SMBAlert_IRQHandler
  62. DCD I2C1_SMBus_IRQHandler
  63. DCD UART0_IRQHandler
  64. DCD UART1_IRQHandler
  65. DCD EthernetMAC_IRQHandler
  66. DCD DMA_IRQHandler
  67. DCD Timer1_IRQHandler
  68. DCD Timer2_IRQHandler
  69. DCD CAN_IRQHandler
  70. DCD ENVM0_IRQHandler
  71. DCD ENVM1_IRQHandler
  72. DCD ComBlk_IRQHandler
  73. DCD USB_IRQHandler
  74. DCD USB_DMA_IRQHandler
  75. DCD PLL_Lock_IRQHandler
  76. DCD PLL_LockLost_IRQHandler
  77. DCD CommSwitchError_IRQHandler
  78. DCD CacheError_IRQHandler
  79. DCD DDR_IRQHandler
  80. DCD HPDMA_Complete_IRQHandler
  81. DCD HPDMA_Error_IRQHandler
  82. DCD ECC_Error_IRQHandler
  83. DCD MDDR_IOCalib_IRQHandler
  84. DCD FAB_PLL_Lock_IRQHandler
  85. DCD FAB_PLL_LockLost_IRQHandler
  86. DCD FIC64_IRQHandler
  87. DCD FabricIrq0_IRQHandler
  88. DCD FabricIrq1_IRQHandler
  89. DCD FabricIrq2_IRQHandler
  90. DCD FabricIrq3_IRQHandler
  91. DCD FabricIrq4_IRQHandler
  92. DCD FabricIrq5_IRQHandler
  93. DCD FabricIrq6_IRQHandler
  94. DCD FabricIrq7_IRQHandler
  95. DCD FabricIrq8_IRQHandler
  96. DCD FabricIrq9_IRQHandler
  97. DCD FabricIrq10_IRQHandler
  98. DCD FabricIrq11_IRQHandler
  99. DCD FabricIrq12_IRQHandler
  100. DCD FabricIrq13_IRQHandler
  101. DCD FabricIrq14_IRQHandler
  102. DCD FabricIrq15_IRQHandler
  103. DCD GPIO0_IRQHandler
  104. DCD GPIO1_IRQHandler
  105. DCD GPIO2_IRQHandler
  106. DCD GPIO3_IRQHandler
  107. DCD GPIO4_IRQHandler
  108. DCD GPIO5_IRQHandler
  109. DCD GPIO6_IRQHandler
  110. DCD GPIO7_IRQHandler
  111. DCD GPIO8_IRQHandler
  112. DCD GPIO9_IRQHandler
  113. DCD GPIO10_IRQHandler
  114. DCD GPIO11_IRQHandler
  115. DCD GPIO12_IRQHandler
  116. DCD GPIO13_IRQHandler
  117. DCD GPIO14_IRQHandler
  118. DCD GPIO15_IRQHandler
  119. DCD GPIO16_IRQHandler
  120. DCD GPIO17_IRQHandler
  121. DCD GPIO18_IRQHandler
  122. DCD GPIO19_IRQHandler
  123. DCD GPIO20_IRQHandler
  124. DCD GPIO21_IRQHandler
  125. DCD GPIO22_IRQHandler
  126. DCD GPIO23_IRQHandler
  127. DCD GPIO24_IRQHandler
  128. DCD GPIO25_IRQHandler
  129. DCD GPIO26_IRQHandler
  130. DCD GPIO27_IRQHandler
  131. DCD GPIO28_IRQHandler
  132. DCD GPIO29_IRQHandler
  133. DCD GPIO30_IRQHandler
  134. DCD GPIO31_IRQHandler
  135. __Vectors_End
  136. __Vectors_Size EQU __Vectors_End - __Vectors
  137. ;===============================================================================
  138. ; Reset Handler
  139. ;
  140. AREA |.text|, CODE, READONLY
  141. Reset_Handler PROC
  142. EXPORT Reset_Handler [WEAK]
  143. IMPORT SystemInit
  144. ; IMPORT low_level_init
  145. IMPORT __main
  146. ;---------------------------------------------------------------
  147. ; Initialize stack RAM content to initialize the error detection
  148. ; and correction (EDAC). This is done if EDAC is enabled for the
  149. ; eSRAM blocks or the ECC/SECDED is enabled for the MDDR.
  150. ; Register R11 is used to keep track of the RAM intialization
  151. ; decision outcome for later use for heap RAM initialization at
  152. ; the end of the startup code.
  153. ; Please note that the stack has to be located in eSRAM at this
  154. ; point and cannot be located in MDDR since MDDR is not available
  155. ; at this point.
  156. ; The bits of the content of register R11 have the foolwing
  157. ; meaning:
  158. ; reg11[0]: eSRAM EDAC enabled
  159. ; reg11[1]: MDDR ECC/SECDED enabled
  160. ;
  161. MOV R11, #0
  162. LDR R0, SF2_MDDR_MODE_CR
  163. LDR R0, [R0]
  164. LDR R1, SF2_EDAC_CR
  165. LDR R1, [R1]
  166. AND R1, R1, #3
  167. AND R0, R0, #0x1C
  168. CMP R0, #0x14
  169. BNE check_esram_edac
  170. ORR R11, R11, #2
  171. check_esram_edac
  172. CMP R1, #0
  173. BEQ check_stack_init
  174. ORR R11, R11, #1
  175. check_stack_init
  176. CMP R11, #0
  177. BEQ call_system_init
  178. clear_stack
  179. LDR R0, =stack_start
  180. LDR R1, =stack_end
  181. LDR R2, RAM_INIT_PATTERN
  182. BL fill_memory ; fill_memory takes r0 - r2 as arguments uses r4, r5, r6, r7, r8, r9, and does not preserve contents */
  183. ;---------------------------------------------------------------
  184. ; Call SystemInit() to perform Libero specified configuration.
  185. ;
  186. call_system_init
  187. LDR R0, =SystemInit
  188. BLX R0
  189. ; LDR R0, =low_level_init
  190. ; BLX R0
  191. ;---------------------------------------------------------------
  192. ; Modify MDDR configuration if ECC/SECDED is enabled for MDDR.
  193. ; Enable write combining on MDDR bridge, disable non-bufferable
  194. ; regions.
  195. ;
  196. adjust_mddr_cfg
  197. AND R10, R11, #0x2
  198. CMP R10, #0
  199. BEQ branch_to_main
  200. LDR R0, SF2_DDRB_NB_SIZE
  201. LDR R1, SF2_DDRB_CR
  202. LDR R2, [R0]
  203. LDR R3, [R1]
  204. push {R0, R1, R2, R3}
  205. MOV R2, #0
  206. MOV R3, #0xFF
  207. STR R2, [R0]
  208. STR R3, [R1]
  209. ; --------------------------------------------------------------
  210. ; Initialize heap RAM content to initialize the error detection
  211. ; and correction (EDAC). We use the decision made earlier in the
  212. ; startup code of whether or not the stack RAM should be
  213. ; initialized. This decision is held in register R11. A non-zero
  214. ; value indicates that the RAM content should be initialized.
  215. ;
  216. clear_heap
  217. CMP R11, #0
  218. BEQ branch_to_main
  219. LDR R0, =__heap_base
  220. LDR R1, =__heap_limit
  221. LDR R2, HEAP_INIT_PATTERN
  222. BL fill_memory ; fill_memory takes r0 - r2 as arguments uses r4, r5, r6, r7, r8, r9, and does not preserve contents */
  223. ;---------------------------------------------------------------
  224. ; Branch to __main
  225. ;
  226. branch_to_main
  227. LDR R0, =__main
  228. BX R0
  229. ENDP
  230. SF2_EDAC_CR DCD 0x40038038
  231. SF2_DDRB_NB_SIZE DCD 0x40038030
  232. SF2_DDRB_CR DCD 0x40038034
  233. SF2_MDDR_MODE_CR DCD 0x40020818
  234. RAM_INIT_PATTERN DCD 0x00000000
  235. HEAP_INIT_PATTERN DCD 0x00000000
  236. ;------------------------------------------------------------------------------
  237. ; * fill_memory.
  238. ; * @brief Fills memory with Pattern contained in r2
  239. ; * This routine uses the stmne instruction to copy 4 words at a time which is very efficient
  240. ; * The instruction can only write to word aligned memory, hence the code at the start and end of this routine
  241. ; * to handle possible unaligned bytes at start and end.
  242. ; *
  243. ; * @param param1 r0: start address
  244. ; * @param param2 r1: end address
  245. ; * @param param3 r2: FILL PATTETN
  246. ; *
  247. ; * @note note: Most efficient if memory aligned. Linker ALIGN(4) command
  248. ; * should be used as per example linker scripts
  249. ; * Stack is not used in this routine
  250. ; * register contents r4, r5, r6, r7, r8, r9, will are used and will be returned undefined
  251. ; * @return none - Used Registers are not preserved
  252. ; */
  253. fill_memory PROC
  254. ;push {r4, r5, r6, r7, r8, r9, lr} We will not use stack as may be not available */
  255. cmp r0, r1
  256. beq fill_memory_exit ; Exit early if source and destination the same */
  257. ; copy non-aligned bytes at the start */
  258. and.w r6, r0, #3 ; see if non-alaigned bytes at the start */
  259. cmp r6, #0
  260. beq fill_memory_end_start ; no spare bytes at start, continue */
  261. mov r5, #4
  262. sub.w r4, r5, r6 ; now have number of non-aligned bytes in r4 */
  263. mov r7, #8
  264. mul r8, r7, r6 ; calculate number of shifts required to initalise pattern for non-aligned bytes */
  265. mov r9, r2 ; copy pattern */
  266. ror r9, r9, r8 ; Rotate right to keep pattern consistent */
  267. fill_memory_spare_bytes_start ; From above, R0 contains source address, R1 contains destination address */
  268. cmp r4, #0 ; no spare bytes at end- end now */
  269. beq fill_memory_end_start
  270. strb r9, [r0] ; fill byte */
  271. ror.w r9, r9, r7 ; Rotate right by one byte for the next time, to keep pattern consistent */
  272. add r0, r0, #1 ; add one to address */
  273. subs r4, r4, #1 ; subtract one from byte count 1 */
  274. b fill_memory_spare_bytes_start
  275. fill_memory_end_start
  276. mov r6, #0
  277. mov r7, r1 ; save end address */
  278. subs r1, r1, r0 ; Calculate number of bytes to fill */
  279. mov r8,r1 ; Save copy of byte count */
  280. asrs r1,r1, #4 ; Div by 16 to get number of chunks to move */
  281. mov r9, r2 ; copy pattern */
  282. mov r4, r2 ; copy pattern */
  283. mov r5, r2 ; copy pattern */
  284. cmp r1, r6 ; compare to see if all chunks copied */
  285. beq fill_memory_spare_bytes_end
  286. fill_memory_loop
  287. it ne
  288. stmne r0!, {r2, r4, r5, r9} ; copy pattern- note: stmne instruction must me word aligned (address in r0) */
  289. add.w r6, r6, #1 ; use Thumb2- make sure condition code reg. not updated */
  290. cmp r1, r6 ; compare to see if all chunks copied */
  291. bne fill_memory_loop
  292. fill_memory_spare_bytes_end ; copy spare bytes at the end if any */
  293. and.w r8, r8, #15 ; get spare bytes --check can you do an ands? */
  294. fill_memory_spare_end_loop ; From above, R0 contains source address, R1 contains destination address */
  295. cmp r8, #0 ; no spare bytes at end- end now */
  296. beq fill_memory_exit
  297. strb r2, [r0]
  298. ror.w r2, r2, #8 ; Rotate right by one byte for the next time, to keep pattern consistent */
  299. add r0, r0, #1 ; add one to address */
  300. subs r8, r8, #1 ; subtract one from byte count 1 */
  301. b fill_memory_spare_end_loop
  302. fill_memory_exit
  303. bx lr ; We will not use pop as stack may be not available */
  304. ENDP
  305. ;===============================================================================
  306. ; Dummy Exception Handlers (infinite loops which can be modified)
  307. NMI_Handler PROC
  308. EXPORT NMI_Handler [WEAK]
  309. B .
  310. ENDP
  311. HardFault_Handler\
  312. PROC
  313. EXPORT HardFault_Handler [WEAK]
  314. B .
  315. ENDP
  316. MemManage_Handler\
  317. PROC
  318. EXPORT MemManage_Handler [WEAK]
  319. B .
  320. ENDP
  321. BusFault_Handler\
  322. PROC
  323. EXPORT BusFault_Handler [WEAK]
  324. B .
  325. ENDP
  326. UsageFault_Handler\
  327. PROC
  328. EXPORT UsageFault_Handler [WEAK]
  329. B .
  330. ENDP
  331. SVC_Handler PROC
  332. EXPORT SVC_Handler [WEAK]
  333. B .
  334. ENDP
  335. DebugMon_Handler\
  336. PROC
  337. EXPORT DebugMon_Handler [WEAK]
  338. B .
  339. ENDP
  340. PendSV_Handler PROC
  341. EXPORT PendSV_Handler [WEAK]
  342. B .
  343. ENDP
  344. SysTick_Handler PROC
  345. EXPORT SysTick_Handler [WEAK]
  346. B .
  347. ENDP
  348. Default_Handler PROC
  349. EXPORT WdogWakeup_IRQHandler [WEAK]
  350. EXPORT RTC_Wakeup_IRQHandler [WEAK]
  351. EXPORT SPI0_IRQHandler [WEAK]
  352. EXPORT SPI1_IRQHandler [WEAK]
  353. EXPORT I2C0_IRQHandler [WEAK]
  354. EXPORT I2C0_SMBAlert_IRQHandler [WEAK]
  355. EXPORT I2C0_SMBus_IRQHandler [WEAK]
  356. EXPORT I2C1_IRQHandler [WEAK]
  357. EXPORT I2C1_SMBAlert_IRQHandler [WEAK]
  358. EXPORT I2C1_SMBus_IRQHandler [WEAK]
  359. EXPORT UART0_IRQHandler [WEAK]
  360. EXPORT UART1_IRQHandler [WEAK]
  361. EXPORT EthernetMAC_IRQHandler [WEAK]
  362. EXPORT DMA_IRQHandler [WEAK]
  363. EXPORT Timer1_IRQHandler [WEAK]
  364. EXPORT Timer2_IRQHandler [WEAK]
  365. EXPORT CAN_IRQHandler [WEAK]
  366. EXPORT ENVM0_IRQHandler [WEAK]
  367. EXPORT ENVM1_IRQHandler [WEAK]
  368. EXPORT ComBlk_IRQHandler [WEAK]
  369. EXPORT USB_IRQHandler [WEAK]
  370. EXPORT USB_DMA_IRQHandler [WEAK]
  371. EXPORT PLL_Lock_IRQHandler [WEAK]
  372. EXPORT PLL_LockLost_IRQHandler [WEAK]
  373. EXPORT CommSwitchError_IRQHandler [WEAK]
  374. EXPORT CacheError_IRQHandler [WEAK]
  375. EXPORT DDR_IRQHandler [WEAK]
  376. EXPORT HPDMA_Complete_IRQHandler [WEAK]
  377. EXPORT HPDMA_Error_IRQHandler [WEAK]
  378. EXPORT ECC_Error_IRQHandler [WEAK]
  379. EXPORT MDDR_IOCalib_IRQHandler [WEAK]
  380. EXPORT FAB_PLL_Lock_IRQHandler [WEAK]
  381. EXPORT FAB_PLL_LockLost_IRQHandler [WEAK]
  382. EXPORT FIC64_IRQHandler [WEAK]
  383. EXPORT FabricIrq0_IRQHandler [WEAK]
  384. EXPORT FabricIrq1_IRQHandler [WEAK]
  385. EXPORT FabricIrq2_IRQHandler [WEAK]
  386. EXPORT FabricIrq3_IRQHandler [WEAK]
  387. EXPORT FabricIrq4_IRQHandler [WEAK]
  388. EXPORT FabricIrq5_IRQHandler [WEAK]
  389. EXPORT FabricIrq6_IRQHandler [WEAK]
  390. EXPORT FabricIrq7_IRQHandler [WEAK]
  391. EXPORT FabricIrq8_IRQHandler [WEAK]
  392. EXPORT FabricIrq9_IRQHandler [WEAK]
  393. EXPORT FabricIrq10_IRQHandler [WEAK]
  394. EXPORT FabricIrq11_IRQHandler [WEAK]
  395. EXPORT FabricIrq12_IRQHandler [WEAK]
  396. EXPORT FabricIrq13_IRQHandler [WEAK]
  397. EXPORT FabricIrq14_IRQHandler [WEAK]
  398. EXPORT FabricIrq15_IRQHandler [WEAK]
  399. EXPORT GPIO0_IRQHandler [WEAK]
  400. EXPORT GPIO1_IRQHandler [WEAK]
  401. EXPORT GPIO2_IRQHandler [WEAK]
  402. EXPORT GPIO3_IRQHandler [WEAK]
  403. EXPORT GPIO4_IRQHandler [WEAK]
  404. EXPORT GPIO5_IRQHandler [WEAK]
  405. EXPORT GPIO6_IRQHandler [WEAK]
  406. EXPORT GPIO7_IRQHandler [WEAK]
  407. EXPORT GPIO8_IRQHandler [WEAK]
  408. EXPORT GPIO9_IRQHandler [WEAK]
  409. EXPORT GPIO10_IRQHandler [WEAK]
  410. EXPORT GPIO11_IRQHandler [WEAK]
  411. EXPORT GPIO12_IRQHandler [WEAK]
  412. EXPORT GPIO13_IRQHandler [WEAK]
  413. EXPORT GPIO14_IRQHandler [WEAK]
  414. EXPORT GPIO15_IRQHandler [WEAK]
  415. EXPORT GPIO16_IRQHandler [WEAK]
  416. EXPORT GPIO17_IRQHandler [WEAK]
  417. EXPORT GPIO18_IRQHandler [WEAK]
  418. EXPORT GPIO19_IRQHandler [WEAK]
  419. EXPORT GPIO20_IRQHandler [WEAK]
  420. EXPORT GPIO21_IRQHandler [WEAK]
  421. EXPORT GPIO22_IRQHandler [WEAK]
  422. EXPORT GPIO23_IRQHandler [WEAK]
  423. EXPORT GPIO24_IRQHandler [WEAK]
  424. EXPORT GPIO25_IRQHandler [WEAK]
  425. EXPORT GPIO26_IRQHandler [WEAK]
  426. EXPORT GPIO27_IRQHandler [WEAK]
  427. EXPORT GPIO28_IRQHandler [WEAK]
  428. EXPORT GPIO29_IRQHandler [WEAK]
  429. EXPORT GPIO30_IRQHandler [WEAK]
  430. EXPORT GPIO31_IRQHandler [WEAK]
  431. WdogWakeup_IRQHandler
  432. RTC_Wakeup_IRQHandler
  433. SPI0_IRQHandler
  434. SPI1_IRQHandler
  435. I2C0_IRQHandler
  436. I2C0_SMBAlert_IRQHandler
  437. I2C0_SMBus_IRQHandler
  438. I2C1_IRQHandler
  439. I2C1_SMBAlert_IRQHandler
  440. I2C1_SMBus_IRQHandler
  441. UART0_IRQHandler
  442. UART1_IRQHandler
  443. EthernetMAC_IRQHandler
  444. DMA_IRQHandler
  445. Timer1_IRQHandler
  446. Timer2_IRQHandler
  447. CAN_IRQHandler
  448. ENVM0_IRQHandler
  449. ENVM1_IRQHandler
  450. ComBlk_IRQHandler
  451. USB_IRQHandler
  452. USB_DMA_IRQHandler
  453. PLL_Lock_IRQHandler
  454. PLL_LockLost_IRQHandler
  455. CommSwitchError_IRQHandler
  456. CacheError_IRQHandler
  457. DDR_IRQHandler
  458. HPDMA_Complete_IRQHandler
  459. HPDMA_Error_IRQHandler
  460. ECC_Error_IRQHandler
  461. MDDR_IOCalib_IRQHandler
  462. FAB_PLL_Lock_IRQHandler
  463. FAB_PLL_LockLost_IRQHandler
  464. FIC64_IRQHandler
  465. FabricIrq0_IRQHandler
  466. FabricIrq1_IRQHandler
  467. FabricIrq2_IRQHandler
  468. FabricIrq3_IRQHandler
  469. FabricIrq4_IRQHandler
  470. FabricIrq5_IRQHandler
  471. FabricIrq6_IRQHandler
  472. FabricIrq7_IRQHandler
  473. FabricIrq8_IRQHandler
  474. FabricIrq9_IRQHandler
  475. FabricIrq10_IRQHandler
  476. FabricIrq11_IRQHandler
  477. FabricIrq12_IRQHandler
  478. FabricIrq13_IRQHandler
  479. FabricIrq14_IRQHandler
  480. FabricIrq15_IRQHandler
  481. GPIO0_IRQHandler
  482. GPIO1_IRQHandler
  483. GPIO2_IRQHandler
  484. GPIO3_IRQHandler
  485. GPIO4_IRQHandler
  486. GPIO5_IRQHandler
  487. GPIO6_IRQHandler
  488. GPIO7_IRQHandler
  489. GPIO8_IRQHandler
  490. GPIO9_IRQHandler
  491. GPIO10_IRQHandler
  492. GPIO11_IRQHandler
  493. GPIO12_IRQHandler
  494. GPIO13_IRQHandler
  495. GPIO14_IRQHandler
  496. GPIO15_IRQHandler
  497. GPIO16_IRQHandler
  498. GPIO17_IRQHandler
  499. GPIO18_IRQHandler
  500. GPIO19_IRQHandler
  501. GPIO20_IRQHandler
  502. GPIO21_IRQHandler
  503. GPIO22_IRQHandler
  504. GPIO23_IRQHandler
  505. GPIO24_IRQHandler
  506. GPIO25_IRQHandler
  507. GPIO26_IRQHandler
  508. GPIO27_IRQHandler
  509. GPIO28_IRQHandler
  510. GPIO29_IRQHandler
  511. GPIO30_IRQHandler
  512. GPIO31_IRQHandler
  513. B .
  514. ENDP
  515. mscc_post_hw_cfg_init PROC
  516. EXPORT mscc_post_hw_cfg_init [WEAK]
  517. BX LR
  518. ENDP
  519. ALIGN
  520. ;===============================================================================
  521. ; User Initial Stack & Heap
  522. IF :DEF:__MICROLIB
  523. EXPORT __initial_sp
  524. EXPORT __heap_base
  525. EXPORT __heap_limit
  526. ELSE
  527. IMPORT __use_two_region_memory
  528. EXPORT __user_initial_stackheap
  529. __user_initial_stackheap
  530. LDR R0, = Heap_Mem
  531. LDR R1, =(Stack_Mem + Stack_Size)
  532. LDR R2, = (Heap_Mem + Heap_Size)
  533. LDR R3, = Stack_Mem
  534. BX LR
  535. ALIGN
  536. ENDIF
  537. END