startup_SWM320.s 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. .syntax unified
  2. .arch armv7-m
  3. .thumb
  4. /* Memory Model
  5. The HEAP starts at the end of the DATA section and grows upward.
  6. The STACK starts at the end of the RAM and grows downward */
  7. .section .stack
  8. .align 3
  9. .globl __StackTop
  10. .globl __StackLimit
  11. __StackLimit:
  12. .space 0x4000
  13. __StackTop:
  14. .section .heap
  15. .align 3
  16. .globl __HeapBase
  17. .globl __HeapLimit
  18. __HeapBase:
  19. .space 0x4000
  20. __HeapLimit:
  21. .section .isr_vector
  22. .align 2
  23. .globl __isr_vector
  24. __isr_vector:
  25. .long __StackTop
  26. .long Reset_Handler
  27. .long NMI_Handler
  28. .long HardFault_Handler
  29. .long MemManage_Handler
  30. .long BusFault_Handler
  31. .long UsageFault_Handler
  32. .long 0
  33. .long 0
  34. .long 0
  35. .long 0
  36. .long SVC_Handler
  37. .long DebugMon_Handler
  38. .long 0
  39. .long PendSV_Handler
  40. .long SysTick_Handler
  41. /* External interrupts */
  42. .long GPIOA0_Handler
  43. .long GPIOA1_Handler
  44. .long GPIOA2_Handler
  45. .long GPIOA3_Handler
  46. .long GPIOA4_Handler
  47. .long GPIOA5_Handler
  48. .long GPIOA6_Handler
  49. .long GPIOA7_Handler
  50. .long GPIOB0_Handler
  51. .long GPIOB1_Handler
  52. .long GPIOB2_Handler
  53. .long GPIOB3_Handler
  54. .long GPIOB4_Handler
  55. .long GPIOB5_Handler
  56. .long GPIOB6_Handler
  57. .long GPIOB7_Handler
  58. .long GPIOC0_Handler
  59. .long GPIOC1_Handler
  60. .long GPIOC2_Handler
  61. .long GPIOC3_Handler
  62. .long GPIOC4_Handler
  63. .long GPIOC5_Handler
  64. .long GPIOC6_Handler
  65. .long GPIOC7_Handler
  66. .long GPIOM0_Handler
  67. .long GPIOM1_Handler
  68. .long GPIOM2_Handler
  69. .long GPIOM3_Handler
  70. .long GPIOM4_Handler
  71. .long GPIOM5_Handler
  72. .long GPIOM6_Handler
  73. .long GPIOM7_Handler
  74. .long DMA_Handler
  75. .long LCD_Handler
  76. .long NORFLC_Handler
  77. .long CAN_Handler
  78. .long PULSE_Handler
  79. .long WDT_Handler
  80. .long PWM_Handler
  81. .long UART0_Handler
  82. .long UART1_Handler
  83. .long UART2_Handler
  84. .long UART3_Handler
  85. .long Default_Handler
  86. .long I2C0_Handler
  87. .long I2C1_Handler
  88. .long SPI0_Handler
  89. .long ADC0_Handler
  90. .long RTC_Handler
  91. .long BOD_Handler
  92. .long SDIO_Handler
  93. .long GPIOA_Handler
  94. .long GPIOB_Handler
  95. .long GPIOC_Handler
  96. .long GPIOM_Handler
  97. .long GPION_Handler
  98. .long GPIOP_Handler
  99. .long ADC1_Handler
  100. .long FPU_Handler
  101. .long SPI1_Handler
  102. .long TIMR0_Handler
  103. .long TIMR1_Handler
  104. .long TIMR2_Handler
  105. .long TIMR3_Handler
  106. .long TIMR4_Handler
  107. .long TIMR5_Handler
  108. .section .text.Reset_Handler
  109. .align 2
  110. .globl Reset_Handler
  111. .type Reset_Handler, %function
  112. Reset_Handler:
  113. /* Loop to copy data from read only memory to RAM. The ranges
  114. * of copy from/to are specified by symbols evaluated in linker script. */
  115. ldr sp, =__StackTop /* set stack pointer */
  116. ldr r1, =__data_load__
  117. ldr r2, =__data_start__
  118. ldr r3, =__data_end__
  119. .Lflash_to_ram_loop:
  120. cmp r2, r3
  121. ittt lo
  122. ldrlo r0, [r1], #4
  123. strlo r0, [r2], #4
  124. blo .Lflash_to_ram_loop
  125. ldr r2, =__bss_start__
  126. ldr r3, =__bss_end__
  127. .Lbss_to_ram_loop:
  128. cmp r2, r3
  129. ittt lo
  130. movlo r0, #0
  131. strlo r0, [r2], #4
  132. blo .Lbss_to_ram_loop
  133. ldr r0, =main
  134. bx r0
  135. .pool
  136. .text
  137. /* Macro to define default handlers.
  138. Default handler will be weak symbol and just dead loops. */
  139. .macro def_default_handler handler_name
  140. .align 1
  141. .thumb_func
  142. .weak \handler_name
  143. .type \handler_name, %function
  144. \handler_name :
  145. b .
  146. .endm
  147. def_default_handler NMI_Handler
  148. def_default_handler HardFault_Handler
  149. def_default_handler MemManage_Handler
  150. def_default_handler BusFault_Handler
  151. def_default_handler UsageFault_Handler
  152. def_default_handler SVC_Handler
  153. def_default_handler DebugMon_Handler
  154. def_default_handler PendSV_Handler
  155. def_default_handler SysTick_Handler
  156. def_default_handler GPIOA0_Handler
  157. def_default_handler GPIOA1_Handler
  158. def_default_handler GPIOA2_Handler
  159. def_default_handler GPIOA3_Handler
  160. def_default_handler GPIOA4_Handler
  161. def_default_handler GPIOA5_Handler
  162. def_default_handler GPIOA6_Handler
  163. def_default_handler GPIOA7_Handler
  164. def_default_handler GPIOB0_Handler
  165. def_default_handler GPIOB1_Handler
  166. def_default_handler GPIOB2_Handler
  167. def_default_handler GPIOB3_Handler
  168. def_default_handler GPIOB4_Handler
  169. def_default_handler GPIOB5_Handler
  170. def_default_handler GPIOB6_Handler
  171. def_default_handler GPIOB7_Handler
  172. def_default_handler GPIOC0_Handler
  173. def_default_handler GPIOC1_Handler
  174. def_default_handler GPIOC2_Handler
  175. def_default_handler GPIOC3_Handler
  176. def_default_handler GPIOC4_Handler
  177. def_default_handler GPIOC5_Handler
  178. def_default_handler GPIOC6_Handler
  179. def_default_handler GPIOC7_Handler
  180. def_default_handler GPIOM0_Handler
  181. def_default_handler GPIOM1_Handler
  182. def_default_handler GPIOM2_Handler
  183. def_default_handler GPIOM3_Handler
  184. def_default_handler GPIOM4_Handler
  185. def_default_handler GPIOM5_Handler
  186. def_default_handler GPIOM6_Handler
  187. def_default_handler GPIOM7_Handler
  188. def_default_handler DMA_Handler
  189. def_default_handler LCD_Handler
  190. def_default_handler NORFLC_Handler
  191. def_default_handler CAN_Handler
  192. def_default_handler PULSE_Handler
  193. def_default_handler WDT_Handler
  194. def_default_handler PWM_Handler
  195. def_default_handler UART0_Handler
  196. def_default_handler UART1_Handler
  197. def_default_handler UART2_Handler
  198. def_default_handler UART3_Handler
  199. def_default_handler I2C0_Handler
  200. def_default_handler I2C1_Handler
  201. def_default_handler SPI0_Handler
  202. def_default_handler ADC0_Handler
  203. def_default_handler RTC_Handler
  204. def_default_handler BOD_Handler
  205. def_default_handler SDIO_Handler
  206. def_default_handler GPIOA_Handler
  207. def_default_handler GPIOB_Handler
  208. def_default_handler GPIOC_Handler
  209. def_default_handler GPIOM_Handler
  210. def_default_handler GPION_Handler
  211. def_default_handler GPIOP_Handler
  212. def_default_handler ADC1_Handler
  213. def_default_handler FPU_Handler
  214. def_default_handler SPI1_Handler
  215. def_default_handler TIMR0_Handler
  216. def_default_handler TIMR1_Handler
  217. def_default_handler TIMR2_Handler
  218. def_default_handler TIMR3_Handler
  219. def_default_handler TIMR4_Handler
  220. def_default_handler TIMR5_Handler
  221. def_default_handler Default_Handler
  222. .end