主站的代码使用最新的策略进行工作,可以编译,仿真有错误,尚未验证
This commit is contained in:
@@ -1,13 +1,9 @@
|
||||
#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
|
||||
@@ -50,32 +46,14 @@ _prog_start:
|
||||
|
||||
li sp, 0x40011000
|
||||
|
||||
li a0, 0
|
||||
|
||||
lui t0, %hi(plic_claim)
|
||||
lw a0, %lo(plic_claim)(t0)
|
||||
#la a0, plic_claim
|
||||
|
||||
#lui t0, %hi(flag_intTxEnd)
|
||||
#lw a1, %lo(flag_intTxEnd)(t0)
|
||||
lw a1, %lo(plic_claim)(t0)
|
||||
|
||||
la a1, flag_intTxEnd
|
||||
|
||||
#lui t0, %hi(flag_intRxError)
|
||||
#lw a2, %lo(flag_intRxError)(t0)
|
||||
la a2, flag_intRxError
|
||||
|
||||
#lui t0, %hi(flag_intRxStart)
|
||||
#lw a3, %lo(flag_intRxStart)(t0)
|
||||
la a3, flag_intRxStart
|
||||
|
||||
#lui t0, %hi(flag_intRxEnd)
|
||||
#lw a4, %lo(flag_intRxEnd)(t0)
|
||||
la a4, flag_intRxEnd
|
||||
|
||||
call int_svr_code
|
||||
mv t0, a0 #这里选择不同的trap_entry服务函数,这个是RV32I的代码
|
||||
|
||||
#la t0, trap_entry #这个是最初版的trap_entry,仅做了RV32E的改造
|
||||
#la t0, opt_trap_entry #这个是做了汇编优化的,也做了RV32E的改造
|
||||
|
||||
csrw mtvec, t0
|
||||
li t0, 1 << 11
|
||||
csrw mie, t0
|
||||
@@ -89,6 +67,8 @@ _prog_start:
|
||||
ecall
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
.balign 32
|
||||
.section .trap_entry, "ax", %progbits
|
||||
trap_entry:
|
||||
@@ -314,5 +294,5 @@ opt_trap_entry:
|
||||
|
||||
mret
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user