diff --git a/tb/sw/src/mstStartup.S b/tb/sw/src/mstStartup.S index c9781b0..eaf2035 100644 --- a/tb/sw/src/mstStartup.S +++ b/tb/sw/src/mstStartup.S @@ -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) diff --git a/tb/sw/src/mstSvr.S b/tb/sw/src/mstSvr.S index 850dd38..73a0d4d 100644 --- a/tb/sw/src/mstSvr.S +++ b/tb/sw/src/mstSvr.S @@ -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