From be6e558f66d7e8fad75a242da19ce64fd71ac03a Mon Sep 17 00:00:00 2001 From: "xiaoguang.xing" Date: Tue, 4 Apr 2023 17:17:46 +0800 Subject: [PATCH] lib: sbi_trap: Workaroud for cpu still using i-utlb when into m mode --- firmware/fw_base.S | 2 ++ lib/sbi/sbi_trap.c | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) 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);