133 lines
2.9 KiB
ArmAsm
133 lines
2.9 KiB
ArmAsm
/*
|
|
* 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 Default_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
|
|
|
|
/* External interrupts */
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
.long Default_IRQHandler
|
|
|
|
.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:
|