129 lines
3.0 KiB
ArmAsm
129 lines
3.0 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:
|
|
lw x24, 0(x25)
|
|
sw x24, 0(x26)
|
|
addi x25, x25, 4
|
|
addi x26, x26, 4
|
|
|
|
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:
|
|
sw x0, 0(x26)
|
|
addi x26, x26, 4
|
|
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
|
|
|
|
Default_IRQHandler:
|
|
jal x0, Generic_ExceptionCallback
|
|
|
|
Timer_IRQHandler:
|
|
jal x0, Generic_TimerCallback
|
|
|
|
Trap_Handler:
|
|
jal x0, Generic_TrapCallback
|
|
|
|
/* ISR vector table */
|
|
.section .isr_vectors, "ax"
|
|
.option norvc;
|
|
|
|
.org 0x00
|
|
jal x0, Trap_Handler /* Trap IRQ (IRQ 0) */
|
|
jal x0, Default_IRQHandler /* IRQ 1 */
|
|
jal x0, Default_IRQHandler /* IRQ 2 */
|
|
jal x0, Default_IRQHandler /* IRQ 3 */
|
|
jal x0, Default_IRQHandler /* IRQ 4 */
|
|
jal x0, Default_IRQHandler /* IRQ 5 */
|
|
jal x0, Default_IRQHandler /* IRQ 6 */
|
|
jal x0, Timer_IRQHandler /* Timer IRQ (IRQ 7) */
|
|
jal x0, Default_IRQHandler /* IRQ 8 */
|
|
jal x0, Default_IRQHandler /* IRQ 9 */
|
|
jal x0, Default_IRQHandler /* IRQ 10 */
|
|
jal x0, Default_IRQHandler /* External IRQ (IRQ 11) */
|
|
jal x0, Default_IRQHandler /* IRQ 12 */
|
|
jal x0, Default_IRQHandler /* IRQ 13 */
|
|
jal x0, Default_IRQHandler /* IRQ 14 */
|
|
jal x0, Default_IRQHandler /* IRQ 15 */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 0 (IRQ 16) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 1 (IRQ 17) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 2 (IRQ 18) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 3 (IRQ 19) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 4 (IRQ 20) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 5 (IRQ 21) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 6 (IRQ 22) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 7 (IRQ 23) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 8 (IRQ 24) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 9 (IRQ 25) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 10 (IRQ 26) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 11 (IRQ 27) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 12 (IRQ 28) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 13 (IRQ 29) */
|
|
jal x0, Default_IRQHandler /* Fast IRQ 14 (IRQ 30) */
|
|
jal x0, NMI_Handler /* Non-Maskable IRQ (IRQ 31) */
|
|
jal x0, Reset_Handler
|