128 lines
2.3 KiB
ArmAsm
128 lines
2.3 KiB
ArmAsm
.global Ecall_M_Mode_Handler
|
|
.global Ecall_U_Mode_Handler
|
|
.global LLE_IRQHandler
|
|
|
|
.extern g_LLE_IRQLibHandlerLocation
|
|
|
|
.section .highcode,"ax",@progbits
|
|
.align 2
|
|
.func
|
|
Ecall_M_Mode_Handler:
|
|
Ecall_U_Mode_Handler:
|
|
|
|
addi a1, x0, 0x20
|
|
csrs 0x804, a1
|
|
|
|
lw a1, 0 * 4( sp )
|
|
csrw mepc, a1
|
|
|
|
lw x1, 1 * 4( sp )
|
|
lw x4, 2 * 4( sp )
|
|
lw x5, 3 * 4( sp )
|
|
lw x6, 4 * 4( sp )
|
|
lw x7, 5 * 4( sp )
|
|
lw x8, 6 * 4( sp )
|
|
lw x9, 7 * 4( sp )
|
|
lw x10, 8 * 4( sp )
|
|
lw x11, 9 * 4( sp )
|
|
lw x12, 10 * 4( sp )
|
|
lw x13, 11 * 4( sp )
|
|
lw x14, 12 * 4( sp )
|
|
lw x15, 13 * 4( sp )
|
|
lw x16, 14 * 4( sp )
|
|
lw x17, 15 * 4( sp )
|
|
lw x18, 16 * 4( sp )
|
|
lw x19, 17 * 4( sp )
|
|
lw x20, 18 * 4( sp )
|
|
lw x21, 19 * 4( sp )
|
|
lw x22, 20 * 4( sp )
|
|
lw x23, 21 * 4( sp )
|
|
lw x24, 22 * 4( sp )
|
|
lw x25, 23 * 4( sp )
|
|
lw x26, 24 * 4( sp )
|
|
lw x27, 25 * 4( sp )
|
|
lw x28, 26 * 4( sp )
|
|
lw x29, 27 * 4( sp )
|
|
lw x30, 28 * 4( sp )
|
|
lw x31, 29 * 4( sp )
|
|
|
|
addi sp, sp, 32*4
|
|
|
|
mret
|
|
.endfunc
|
|
|
|
.section .highcode.LLE_IRQHandler,"ax",@progbits
|
|
.align 2
|
|
.func
|
|
LLE_IRQHandler:
|
|
addi sp, sp, -32*4
|
|
|
|
sw x1, 1 * 4( sp )
|
|
sw x4, 2 * 4( sp )
|
|
sw x5, 3 * 4( sp )
|
|
sw x6, 4 * 4( sp )
|
|
sw x7, 5 * 4( sp )
|
|
sw x8, 6 * 4( sp )
|
|
sw x9, 7 * 4( sp )
|
|
sw x10, 8 * 4( sp )
|
|
sw x11, 9 * 4( sp )
|
|
sw x12, 10 * 4( sp )
|
|
sw x13, 11 * 4( sp )
|
|
sw x14, 12 * 4( sp )
|
|
sw x15, 13 * 4( sp )
|
|
sw x16, 14 * 4( sp )
|
|
sw x17, 15 * 4( sp )
|
|
sw x18, 16 * 4( sp )
|
|
sw x19, 17 * 4( sp )
|
|
sw x20, 18 * 4( sp )
|
|
sw x21, 19 * 4( sp )
|
|
sw x22, 20 * 4( sp )
|
|
sw x23, 21 * 4( sp )
|
|
sw x24, 22 * 4( sp )
|
|
sw x25, 23 * 4( sp )
|
|
sw x26, 24 * 4( sp )
|
|
sw x27, 25 * 4( sp )
|
|
sw x28, 26 * 4( sp )
|
|
sw x29, 27 * 4( sp )
|
|
sw x30, 28 * 4( sp )
|
|
sw x31, 29 * 4( sp )
|
|
|
|
la a1, g_LLE_IRQLibHandlerLocation
|
|
lw a0, 0(a1)
|
|
jalr x1, 0(a0)
|
|
|
|
lw x1, 1 * 4( sp )
|
|
lw x4, 2 * 4( sp )
|
|
lw x5, 3 * 4( sp )
|
|
lw x6, 4 * 4( sp )
|
|
lw x7, 5 * 4( sp )
|
|
lw x8, 6 * 4( sp )
|
|
lw x9, 7 * 4( sp )
|
|
lw x10, 8 * 4( sp )
|
|
lw x11, 9 * 4( sp )
|
|
lw x12, 10 * 4( sp )
|
|
lw x13, 11 * 4( sp )
|
|
lw x14, 12 * 4( sp )
|
|
lw x15, 13 * 4( sp )
|
|
lw x16, 14 * 4( sp )
|
|
lw x17, 15 * 4( sp )
|
|
lw x18, 16 * 4( sp )
|
|
lw x19, 17 * 4( sp )
|
|
lw x20, 18 * 4( sp )
|
|
lw x21, 19 * 4( sp )
|
|
lw x22, 20 * 4( sp )
|
|
lw x23, 21 * 4( sp )
|
|
lw x24, 22 * 4( sp )
|
|
lw x25, 23 * 4( sp )
|
|
lw x26, 24 * 4( sp )
|
|
lw x27, 25 * 4( sp )
|
|
lw x28, 26 * 4( sp )
|
|
lw x29, 27 * 4( sp )
|
|
lw x30, 28 * 4( sp )
|
|
lw x31, 29 * 4( sp )
|
|
|
|
addi sp, sp, 32*4
|
|
|
|
mret
|
|
.endfunc
|