diff --git a/firmware/fw_base.S b/firmware/fw_base.S index ceef44f2..9f5a22f8 100644 --- a/firmware/fw_base.S +++ b/firmware/fw_base.S @@ -757,6 +757,8 @@ memcmp: .globl _trap_handler .globl _trap_exit _trap_handler: + sfence.vma + TRAP_SAVE_AND_SETUP_SP_T0 TRAP_SAVE_MEPC_MSTATUS 0 diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index f77d49df..025cf614 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -268,10 +268,6 @@ struct sbi_trap_regs *sbi_trap_handler(struct sbi_trap_regs *regs) ulong mtval = csr_read(CSR_MTVAL), mtval2 = 0, mtinst = 0; struct sbi_trap_info trap; - if (misa_extension('S')) { - __asm__ __volatile__("sfence.vma"); - } - if (misa_extension('H')) { mtval2 = csr_read(CSR_MTVAL2); mtinst = csr_read(CSR_MTINST);