From 2d69ec069e6e771eaf59b419b2bfd89d5298c53c Mon Sep 17 00:00:00 2001 From: Canberk Topal Date: Tue, 26 Jul 2022 16:26:39 +0100 Subject: WFI condition fix Before this commit Spike was requiring S mode privilege even without S mode implemented. This commit fixes it. Signed-off-by: Canberk Topal --- riscv/insns/wfi.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/riscv/insns/wfi.h b/riscv/insns/wfi.h index 299cb01..3411da0 100644 --- a/riscv/insns/wfi.h +++ b/riscv/insns/wfi.h @@ -5,7 +5,9 @@ if (STATE.v && STATE.prv == PRV_U) { } else if (STATE.v) { // VS-mode if (get_field(STATE.hstatus->read(), HSTATUS_VTW)) require_novirt(); -} else { +} else if (p->extension_enabled('S')) { + // When S-mode is implemented, then executing WFI in + // U-mode causes an illegal instruction exception. require_privilege(PRV_S); } wfi(); -- cgit v1.1