97 lines
1.5 KiB
ArmAsm
97 lines
1.5 KiB
ArmAsm
.section .text
|
|
|
|
.global Reset_Handler
|
|
|
|
Reset_Handler:
|
|
mv x1, x0
|
|
mv x2, x1
|
|
mv x3, x1
|
|
mv x4, x1
|
|
mv x5, x1
|
|
mv x6, x1
|
|
mv x7, x1
|
|
mv x8, x1
|
|
mv x9, x1
|
|
mv x10, x1
|
|
mv x11, x1
|
|
mv x12, x1
|
|
mv x13, x1
|
|
mv x14, x1
|
|
mv x15, x1
|
|
mv x16, x1
|
|
mv x17, x1
|
|
mv x18, x1
|
|
mv x19, x1
|
|
mv x20, x1
|
|
mv x21, x1
|
|
mv x22, x1
|
|
mv x23, x1
|
|
mv x24, x1
|
|
mv x25, x1
|
|
mv x26, x1
|
|
mv x27, x1
|
|
mv x28, x1
|
|
mv x29, x1
|
|
mv x30, x1
|
|
mv x31, x1
|
|
|
|
.option push
|
|
.option norelax
|
|
la gp, __global_pointer$
|
|
.option pop
|
|
|
|
la sp, _estack
|
|
|
|
la x25, _sidata
|
|
la x26, _sdata
|
|
la x27, _edata
|
|
|
|
bge x26, x27, copy_data_end
|
|
|
|
copy_data:
|
|
ld x24, 0(x25)
|
|
sd x24, 0(x26)
|
|
addi x25, x25, 8
|
|
addi x26, x26, 8
|
|
|
|
blt x26, x27, copy_data
|
|
|
|
copy_data_end:
|
|
|
|
/* Zero .bss section */
|
|
la x26, _sbss
|
|
la x27, _ebss
|
|
|
|
bge x26, x27, zero_bss_end
|
|
|
|
zero_bss:
|
|
sd x0, 0(x26)
|
|
addi x26, x26, 8
|
|
blt x26, x27, zero_bss
|
|
|
|
zero_bss_end:
|
|
jal x1, System_Init
|
|
|
|
addi x10, x0, 0
|
|
addi x11, x0, 0
|
|
jal x1, main
|
|
|
|
inf_loop:
|
|
jal x0, inf_loop
|
|
|
|
/* ISR vector table */
|
|
.section .isr_vectors, "ax"
|
|
.option norvc;
|
|
|
|
.org 0x00
|
|
jal x0, Default_IRQHandler // USI
|
|
jal x0, Default_IRQHandler // SSI
|
|
jal x0, Default_IRQHandler // RFU
|
|
jal x0, Default_IRQHandler // MSI
|
|
jal x0, Default_IRQHandler // UTI
|
|
jal x0, Default_IRQHandler // STI
|
|
jal x0, Default_IRQHandler // RFU
|
|
jal x0, Timer_IRQHandler // MTI
|
|
.org 0x1000
|
|
jal x0, Reset_Handler
|