From 142636173e0bd15aa86c7372c7da2d16b431c6f0 Mon Sep 17 00:00:00 2001 From: David Harris Date: Sun, 24 Apr 2022 20:00:02 +0000 Subject: [PATCH] Added MTINST hardwired to 0, and added timeout of U-mode WFI --- pipelined/src/privileged/csrm.sv | 2 ++ pipelined/src/privileged/privileged.sv | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pipelined/src/privileged/csrm.sv b/pipelined/src/privileged/csrm.sv index 86171100c..2d306e4fe 100644 --- a/pipelined/src/privileged/csrm.sv +++ b/pipelined/src/privileged/csrm.sv @@ -52,6 +52,7 @@ module csrm #(parameter MCAUSE = 12'h342, MTVAL = 12'h343, MIP = 12'h344, + MTINST = 12'h34A, PMPCFG0 = 12'h3A0, // .. up to 15 more at consecutive addresses PMPADDR0 = 12'h3B0, @@ -196,6 +197,7 @@ module csrm #(parameter MEPC: CSRMReadValM = MEPC_REGW; MCAUSE: CSRMReadValM = MCAUSE_REGW; MTVAL: CSRMReadValM = MTVAL_REGW; + MTINST: CSRMReadValM = 0; // implemented as trivial zero MCOUNTEREN:CSRMReadValM = {{(`XLEN-32){1'b0}}, MCOUNTEREN_REGW}; MCOUNTINHIBIT:CSRMReadValM = {{(`XLEN-32){1'b0}}, MCOUNTINHIBIT_REGW}; diff --git a/pipelined/src/privileged/privileged.sv b/pipelined/src/privileged/privileged.sv index 4aa9bf7c6..f75b21e67 100644 --- a/pipelined/src/privileged/privileged.sv +++ b/pipelined/src/privileged/privileged.sv @@ -139,7 +139,7 @@ module privileged ( logic [`WFI_TIMEOUT_BIT:0] WFICount, WFICountPlus1; assign WFICountPlus1 = WFICount + 1; floprc #(`WFI_TIMEOUT_BIT+1) wficountreg(clk, reset, ~wfiM, WFICountPlus1, WFICount); // count while in WFI - assign WFITimeoutM = STATUS_TW & PrivilegeModeW != `M_MODE & WFICount[`WFI_TIMEOUT_BIT]; + assign WFITimeoutM = ((STATUS_TW & PrivilegeModeW != `M_MODE) | (`S_SUPPORTED & PrivilegeModeW == `U_MODE)) & WFICount[`WFI_TIMEOUT_BIT]; end else assign WFITimeoutM = 0; ///////////////////////////////////////////