Flute_Hello_World/startup/startup.S

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