startup_gcc.S 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*
  2. * Copyright (C) 2017-2019 Alibaba Group Holding Limited
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2020-08-20 zx.chen startup file. Should use with
  9. * GCC for T-HEAD Embedded Processors
  10. */
  11. #include <csi_config.h>
  12. .section .vectors, "aw", @progbits
  13. .align 6
  14. .globl __Vectors
  15. .type __Vectors, @object
  16. __Vectors:
  17. .long Default_Handler
  18. .long Default_Handler
  19. .long Default_Handler
  20. .long PendSV_Handler
  21. .long Default_Handler
  22. .long Default_Handler
  23. .long Default_Handler
  24. .long SysTick_Handler
  25. .long Default_Handler
  26. .long Default_Handler
  27. .long Default_Handler
  28. .long Default_Handler
  29. .long Default_Handler
  30. .long Default_Handler
  31. .long Default_Handler
  32. .long Default_Handler
  33. /* External interrupts */
  34. .long USART_IRQHandler
  35. .long Default_Handler
  36. .long TIM0_IRQHandler
  37. .long Default_Handler
  38. .long Default_Handler
  39. .long Default_Handler
  40. .long Default_Handler
  41. .long Default_Handler
  42. .long Default_Handler
  43. .long Default_Handler
  44. .long Default_Handler
  45. .long Default_Handler
  46. .long Default_Handler
  47. .long Default_Handler
  48. .long Default_Handler
  49. .long Default_Handler
  50. .long Default_Handler
  51. .long Default_Handler
  52. .long Default_Handler
  53. .long Default_Handler
  54. .long Default_Handler
  55. .long Default_Handler
  56. .long Default_Handler
  57. .long Default_Handler
  58. .long Default_Handler
  59. .long Default_Handler
  60. .long Default_Handler
  61. .long Default_Handler
  62. .long Default_Handler
  63. .long Default_Handler
  64. .long Default_Handler
  65. .long Default_Handler
  66. .size __Vectors,.-__Vectors
  67. .text
  68. .align 2
  69. _start:
  70. .text
  71. .align 2
  72. .globl Reset_Handler
  73. .type Reset_Handler, %function
  74. Reset_Handler:
  75. .option push
  76. .option norelax
  77. la gp, __global_pointer$
  78. .option pop
  79. la a0, Default_Handler
  80. ori a0, a0, 3
  81. csrw mtvec, a0
  82. la a0, __Vectors
  83. csrw mtvt, a0
  84. la sp, __StackTop
  85. csrw mscratch, sp
  86. /* Load data section */
  87. la a0, __erodata
  88. la a1, __data_start__
  89. la a2, __data_end__
  90. bgeu a1, a2, 2f
  91. 1:
  92. lw t0, (a0)
  93. sw t0, (a1)
  94. addi a0, a0, 4
  95. addi a1, a1, 4
  96. bltu a1, a2, 1b
  97. 2:
  98. /* Clear bss section */
  99. la a0, __bss_start__
  100. la a1, __bss_end__
  101. bgeu a0, a1, 2f
  102. 1:
  103. sw zero, (a0)
  104. addi a0, a0, 4
  105. bltu a0, a1, 1b
  106. 2:
  107. #ifndef __NO_SYSTEM_INIT
  108. jal SystemInit
  109. #endif
  110. jal entry
  111. .size Reset_Handler, . - Reset_Handler
  112. __exit:
  113. j __exit
  114. .section .bss
  115. .align 3
  116. .global g_base_irqstack
  117. .global g_top_irqstack
  118. g_base_irqstack:
  119. .space CONFIG_ARCH_INTERRUPTSTACK
  120. g_top_irqstack: