进入中断,硬件自动禁用中断,出中断,自动开启中断,无需手动操作,删除对应的代码
This commit is contained in:
@@ -128,15 +128,19 @@ trap_entry:
|
||||
sw t6,124(sp)
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
csrr t0, mstatus # 读取 mstatus 寄存器
|
||||
andi t0, t0, ~(1 << 3) # 清除 MIE 位 (全局中断禁用)
|
||||
csrw mstatus, t0 # 写回 mstatus 寄存器
|
||||
#endif
|
||||
|
||||
call plic_handle
|
||||
|
||||
#if 0
|
||||
csrr t0, mstatus
|
||||
ori t0, t0, 1<<3
|
||||
csrw mstatus, t0
|
||||
#endif
|
||||
|
||||
lw ra,4(sp)
|
||||
lw sp,8(sp)
|
||||
@@ -219,9 +223,11 @@ opt_trap_entry:
|
||||
#sw t5,120(sp)
|
||||
#sw t6,124(sp)
|
||||
|
||||
#if 0
|
||||
csrr t0, mstatus # 读取 mstatus 寄存器
|
||||
andi t0, t0, ~(1 << 3) # 清除 MIE 位 (全局中断禁用)
|
||||
csrw mstatus, t0 # 写回 mstatus 寄存器
|
||||
#endif
|
||||
|
||||
lui t1, %hi(plic_claim)
|
||||
lw t0, %lo(plic_claim)(t1) # t0 = &plic_claim
|
||||
@@ -264,9 +270,11 @@ opt_trap_entry:
|
||||
sw s1,%lo(flag_intRxEnd)(s0)
|
||||
|
||||
4:
|
||||
#if 0
|
||||
csrr t0, mstatus
|
||||
ori t0, t0, 1<<3
|
||||
csrw mstatus, t0
|
||||
#endif
|
||||
|
||||
#lw ra,4(sp)
|
||||
#lw sp,8(sp)
|
||||
|
||||
@@ -42,15 +42,17 @@ _prog_start:
|
||||
|
||||
.balign 32
|
||||
_rv32i_plic_handle:
|
||||
#if 0 /*RV32的核心自动禁用中断,无需手动禁用*/
|
||||
csrr x16, mstatus # 读取 mstatus 寄存器
|
||||
andi x16, x16, ~(1 << 3) # 清除 MIE 位 (全局中断禁用)
|
||||
csrw mstatus, x16 # 写回 mstatus 寄存器
|
||||
#endif
|
||||
|
||||
lw x23, 0(x17) # x23 = *plic_claim
|
||||
sw x23, 0(x17) # *plic_claim = x23
|
||||
|
||||
#li x25, 1
|
||||
|
||||
#if 0
|
||||
li x24, CDR_INT_TXEND
|
||||
bne x23, x24, 1f #_if (x23 != x24) goto 1f
|
||||
sw x25, 0(x18) #_else
|
||||
@@ -72,9 +74,29 @@ _rv32i_plic_handle:
|
||||
li x24, CDR_INT_RXEND
|
||||
bne x23, x24, 4f #_if (x23 != x24) goto 4f
|
||||
sw x25, 0(x21) #_else
|
||||
#else
|
||||
bne x23, x28, 1f #_if (x23 != x24) goto 1f
|
||||
sw x25, 0(x18) #_else
|
||||
j 4f
|
||||
|
||||
1:
|
||||
bne x23, x29, 2f #_if (x23 != x24) goto 2f
|
||||
sw x25, 0(x19) #_else
|
||||
j 4f
|
||||
|
||||
2:
|
||||
bne x23, x30, 3f #_if (x23 != x24) goto 3f
|
||||
sw x25, 0(x20) #_else
|
||||
j 4f
|
||||
|
||||
3:
|
||||
bne x23, x31, 4f #_if (x23 != x24) goto 4f
|
||||
sw x25, 0(x21) #_else
|
||||
#endif
|
||||
4:
|
||||
#if 0 /*RV32的核心自动启动中断,无需手动启用*/
|
||||
csrr x16, mstatus
|
||||
ori x16, x16, 1<<3
|
||||
csrw mstatus, x16
|
||||
#endif
|
||||
mret
|
||||
|
||||
Reference in New Issue
Block a user