修正未能正确获取C语言全局变量地址的bug,代码正确运行
This commit is contained in:
@@ -37,6 +37,6 @@ SECTIONS
|
|||||||
_RODATA_END_ = .;
|
_RODATA_END_ = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
. = 0x40000800;
|
/*. = 0x40000800;*/
|
||||||
.trap_entry : { *(.trap_entry)}
|
.trap_entry : { *(.trap_entry)}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,21 +54,22 @@ _prog_start:
|
|||||||
lw a0, %lo(plic_claim)(t0)
|
lw a0, %lo(plic_claim)(t0)
|
||||||
#la a0, plic_claim
|
#la a0, plic_claim
|
||||||
|
|
||||||
lui t0, %hi(flag_intTxEnd)
|
#lui t0, %hi(flag_intTxEnd)
|
||||||
lw a1, %lo(flag_intTxEnd)(t0)
|
#lw a1, %lo(flag_intTxEnd)(t0)
|
||||||
#la a1, flag_intTxEnd
|
|
||||||
|
la a1, flag_intTxEnd
|
||||||
|
|
||||||
lui t0, %hi(flag_intRxError)
|
#lui t0, %hi(flag_intRxError)
|
||||||
lw a2, %lo(flag_intRxError)(t0)
|
#lw a2, %lo(flag_intRxError)(t0)
|
||||||
#la a2, flag_intRxError
|
la a2, flag_intRxError
|
||||||
|
|
||||||
lui t0, %hi(flag_intRxStart)
|
#lui t0, %hi(flag_intRxStart)
|
||||||
lw a3, %lo(flag_intRxStart)(t0)
|
#lw a3, %lo(flag_intRxStart)(t0)
|
||||||
#la a3, flag_intRxStart
|
la a3, flag_intRxStart
|
||||||
|
|
||||||
lui t0, %hi(flag_intRxEnd)
|
#lui t0, %hi(flag_intRxEnd)
|
||||||
lw a4, %lo(flag_intRxEnd)(t0)
|
#lw a4, %lo(flag_intRxEnd)(t0)
|
||||||
#la a4, flag_intRxEnd
|
la a4, flag_intRxEnd
|
||||||
|
|
||||||
call mst_svr_code
|
call mst_svr_code
|
||||||
mv t0, a0 #这里选择不同的trap_entry服务函数,这个是RV32I的代码
|
mv t0, a0 #这里选择不同的trap_entry服务函数,这个是RV32I的代码
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ _rv32i_plic_handle:
|
|||||||
sw x23, 0(x17) # *plic_claim = x23
|
sw x23, 0(x17) # *plic_claim = x23
|
||||||
|
|
||||||
#li x25, 1
|
#li x25, 1
|
||||||
|
|
||||||
li x24, CDR_INT_TXEND
|
li x24, CDR_INT_TXEND
|
||||||
bne x23, x24, 1f #_if (x23 != x24) goto 1f
|
bne x23, x24, 1f #_if (x23 != x24) goto 1f
|
||||||
sw x25, 0(x18) #_else
|
sw x25, 0(x18) #_else
|
||||||
|
|||||||
Reference in New Issue
Block a user