增加从站回环的代码,仅加了一个,但是仿真结果有错误,需要检查
This commit is contained in:
@@ -4,22 +4,12 @@
|
||||
#include "tl2cdr.h"
|
||||
|
||||
.extern main
|
||||
.extern plic_handle
|
||||
.extern int_svr_code
|
||||
.extern plic_claim
|
||||
.extern flag_intTxEnd
|
||||
.extern flag_intRxError
|
||||
.extern flag_intRxStart
|
||||
.extern flag_intRxEnd
|
||||
|
||||
.globl _prog_start
|
||||
.section .text.init
|
||||
|
||||
|
||||
_prog_start:
|
||||
|
||||
|
||||
|
||||
li x1, 0
|
||||
li x2, 0
|
||||
li x3, 0
|
||||
@@ -55,19 +45,14 @@ _prog_start:
|
||||
#endif
|
||||
li sp, 0x40011000
|
||||
|
||||
li a0, 0
|
||||
|
||||
lui t0, %hi(plic_claim)
|
||||
lw a0, %lo(plic_claim)(t0)
|
||||
lw a1, %lo(plic_claim)(t0)
|
||||
|
||||
|
||||
la a1, flag_intTxEnd
|
||||
la a2, flag_intRxError
|
||||
la a3, flag_intRxStart
|
||||
la a4, flag_intRxEnd
|
||||
|
||||
call int_svr_code
|
||||
mv t0, a0 #这里选择不同的trap_entry服务函数,这个是RV32I的代码
|
||||
|
||||
#la t0, trap_entry #这个是最初版的trap_entry,仅做了RV32E的改造
|
||||
csrw mtvec, t0
|
||||
li t0, 1 << 11
|
||||
csrw mie, t0
|
||||
@@ -80,85 +65,3 @@ _prog_start:
|
||||
|
||||
ecall
|
||||
|
||||
|
||||
|
||||
.balign 32
|
||||
.section .trap_entry, "ax", %progbits
|
||||
trap_entry:
|
||||
|
||||
addi sp,sp,-136
|
||||
sw ra,4(sp)
|
||||
sw sp,8(sp)
|
||||
sw gp,12(sp)
|
||||
sw tp,16(sp)
|
||||
sw t0,20(sp)
|
||||
sw t1,24(sp)
|
||||
sw t2,28(sp)
|
||||
sw s0,32(sp)
|
||||
sw s1,36(sp)
|
||||
sw a0,40(sp)
|
||||
sw a1,44(sp)
|
||||
sw a2,48(sp)
|
||||
sw a3,52(sp)
|
||||
sw a4,56(sp)
|
||||
sw a5,60(sp)
|
||||
#ifdef __RV32I_MARCH__
|
||||
sw a6,64(sp)
|
||||
sw a7,68(sp)
|
||||
sw s2,72(sp)
|
||||
sw s3,76(sp)
|
||||
sw s4,80(sp)
|
||||
sw s5,84(sp)
|
||||
sw s6,88(sp)
|
||||
sw s7,92(sp)
|
||||
sw s8,96(sp)
|
||||
sw s9,100(sp)
|
||||
sw s10,104(sp)
|
||||
sw s11,108(sp)
|
||||
sw t3,112(sp)
|
||||
sw t4,116(sp)
|
||||
sw t5,120(sp)
|
||||
sw t6,124(sp)
|
||||
#endif
|
||||
|
||||
call plic_handle
|
||||
|
||||
lw ra,4(sp)
|
||||
lw sp,8(sp)
|
||||
lw gp,12(sp)
|
||||
lw tp,16(sp)
|
||||
lw t0,20(sp)
|
||||
lw t1,24(sp)
|
||||
lw t2,28(sp)
|
||||
lw s0,32(sp)
|
||||
lw s1,36(sp)
|
||||
lw a0,40(sp)
|
||||
lw a1,44(sp)
|
||||
lw a2,48(sp)
|
||||
lw a3,52(sp)
|
||||
lw a4,56(sp)
|
||||
lw a5,60(sp)
|
||||
#ifdef __RV32I_MARCH__
|
||||
lw a6,64(sp)
|
||||
lw a7,68(sp)
|
||||
lw s2,72(sp)
|
||||
lw s3,76(sp)
|
||||
lw s4,80(sp)
|
||||
lw s5,84(sp)
|
||||
lw s6,88(sp)
|
||||
lw s7,92(sp)
|
||||
lw s8,96(sp)
|
||||
lw s9,100(sp)
|
||||
lw s10,104(sp)
|
||||
lw s11,108(sp)
|
||||
lw t3,112(sp)
|
||||
lw t4,116(sp)
|
||||
lw t5,120(sp)
|
||||
lw t6,124(sp)
|
||||
#endif
|
||||
addi sp,sp,136
|
||||
|
||||
|
||||
|
||||
mret
|
||||
|
||||
|
||||
Reference in New Issue
Block a user