|
|
@ -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_SPP, state.prv); |
|
|
s = set_field(s, MSTATUS_SIE, 0); |
|
|
s = set_field(s, MSTATUS_SIE, 0); |
|
|
state.sstatus->write(s); |
|
|
state.sstatus->write(s); |
|
|
|
|
|
set_virt(true); |
|
|
set_privilege(PRV_S); |
|
|
set_privilege(PRV_S); |
|
|
} else if (state.prv <= PRV_S && bit < max_xlen && ((hsdeleg >> bit) & 1)) { |
|
|
} else if (state.prv <= PRV_S && bit < max_xlen && ((hsdeleg >> bit) & 1)) { |
|
|
// Handle the trap in HS-mode
|
|
|
// Handle the trap in HS-mode
|
|
|
|