diff --git a/riscv/processor.cc b/riscv/processor.cc index 36452aac..7139069b 100644 --- a/riscv/processor.cc +++ b/riscv/processor.cc @@ -832,6 +832,7 @@ void processor_t::take_trap(trap_t& t, reg_t epc) s = set_field(s, MSTATUS_SPP, state.prv); s = set_field(s, MSTATUS_SIE, 0); state.sstatus->write(s); + set_virt(true); set_privilege(PRV_S); } else if (state.prv <= PRV_S && bit < max_xlen && ((hsdeleg >> bit) & 1)) { // Handle the trap in HS-mode