From c65e89f6c14b17bcfb16063e3e302b6194aff6a6 Mon Sep 17 00:00:00 2001 From: Peter Rugg Date: Tue, 12 May 2020 13:28:30 +0100 Subject: [PATCH] Also enforce privilege checks for SCR reads --- src_Core/RISCY_OOO/procs/lib/Exec.bsv | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src_Core/RISCY_OOO/procs/lib/Exec.bsv b/src_Core/RISCY_OOO/procs/lib/Exec.bsv index 328c7e1..097d0db 100755 --- a/src_Core/RISCY_OOO/procs/lib/Exec.bsv +++ b/src_Core/RISCY_OOO/procs/lib/Exec.bsv @@ -429,10 +429,9 @@ function Maybe#(Trap) checkForException( exception = Valid (IllegalInst); end end - else if(dInst.iType == Scr) begin - let scr = pack(fromMaybe(SCR_None, dInst.scr)); - Bool scr_has_priv = (prv >= scr[4:3]); - Bool unimplemented = (scr == pack(SCR_None)); // Added by Bluespec + else if(dInst.scr matches tagged Valid .scr) begin + Bool scr_has_priv = (prv >= pack(scr)[4:3]); + Bool unimplemented = (scr == SCR_None); if(!scr_has_priv || unimplemented) begin // Writes to PCC checked in capChecks exception = Valid (IllegalInst); end