Merge [shm]call into ecall, [shm]ret into eret
[riscv-isa-sim.git] / riscv / insns / sret.h
index 34fdb0d3a2a541fa19f2123e80f66e44c68a88a7..8c4bb8ef1f4d72ba87d5c8a431063f33f62fad60 100644 (file)
@@ -1,3 +1,8 @@
 require_privilege(PRV_S);
+switch (get_field(STATE.mstatus, MSTATUS_PRV))
+{
+  case PRV_S: set_pc(p->get_state()->sepc); break;
+  case PRV_M: set_pc(p->get_state()->mepc); break;
+  default: abort();
+}
 p->pop_privilege_stack();
-set_pc(p->get_state()->sepc);