123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /*
- * Copyright (C) 2017-2019 Alibaba Group Holding Limited
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2020-08-20 zx.chen startup file. Should use with
- * GCC for T-HEAD Embedded Processors
- */
- #include <csi_config.h>
- .section .vectors, "aw", @progbits
- .align 6
- .globl __Vectors
- .type __Vectors, @object
- __Vectors:
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long PendSV_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long SysTick_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- /* External interrupts */
- .long USART_IRQHandler
- .long Default_Handler
- .long TIM0_IRQHandler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .long Default_Handler
- .size __Vectors,.-__Vectors
- .text
- .align 2
- _start:
- .text
- .align 2
- .globl Reset_Handler
- .type Reset_Handler, %function
- Reset_Handler:
- .option push
- .option norelax
- la gp, __global_pointer$
- .option pop
- la a0, Default_Handler
- ori a0, a0, 3
- csrw mtvec, a0
- la a0, __Vectors
- csrw mtvt, a0
- la sp, __StackTop
- csrw mscratch, sp
- /* Load data section */
- la a0, __erodata
- la a1, __data_start__
- la a2, __data_end__
- bgeu a1, a2, 2f
- 1:
- lw t0, (a0)
- sw t0, (a1)
- addi a0, a0, 4
- addi a1, a1, 4
- bltu a1, a2, 1b
- 2:
- /* Clear bss section */
- la a0, __bss_start__
- la a1, __bss_end__
- bgeu a0, a1, 2f
- 1:
- sw zero, (a0)
- addi a0, a0, 4
- bltu a0, a1, 1b
- 2:
- #ifndef __NO_SYSTEM_INIT
- jal SystemInit
- #endif
- jal entry
- .size Reset_Handler, . - Reset_Handler
- __exit:
- j __exit
- .section .bss
- .align 3
- .global g_base_irqstack
- .global g_top_irqstack
- g_base_irqstack:
- .space CONFIG_ARCH_INTERRUPTSTACK
- g_top_irqstack:
|