diff options
-rw-r--r-- | firmware/fw_base.S | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/firmware/fw_base.S b/firmware/fw_base.S index fb6ac92..ceef44f 100644 --- a/firmware/fw_base.S +++ b/firmware/fw_base.S @@ -428,9 +428,15 @@ _start_warm: li ra, 0 call _reset_regs - /* Disable and clear all interrupts */ + /* Disable all interrupts */ csrw CSR_MIE, zero - csrw CSR_MIP, zero + /* + * Only clear the MIP_SSIP and MIP_STIP. For the platform like QEMU, + * If we clear other interrupts like MIP_SEIP and the pendings of + * PLIC still exist, the QEMU may not set it back immediately. + */ + li t0, (MIP_SSIP | MIP_STIP) + csrc CSR_MIP, t0 /* Find HART count and HART stack size */ lla a4, platform |