summaryrefslogtreecommitdiff
path: root/cheri
diff options
context:
space:
mode:
Diffstat (limited to 'cheri')
-rw-r--r--cheri/cheri_prelude.sail11
1 files changed, 7 insertions, 4 deletions
diff --git a/cheri/cheri_prelude.sail b/cheri/cheri_prelude.sail
index 527cf2c5..78bf019f 100644
--- a/cheri/cheri_prelude.sail
+++ b/cheri/cheri_prelude.sail
@@ -278,15 +278,18 @@ typedef CapCauseReg = register bits [15:0] {
register CapCauseReg CapCause
-function unit raise_c2_exception((CapEx) capEx, (bit[8]) regnum) =
+function unit raise_c2_exception8((CapEx) capEx, (bit[8]) regnum) =
{
(CapCause.ExcCode) := CapExCode(capEx);
(CapCause.RegNum) := regnum;
SignalException(C2E);
}
-function unit raise_c2_exception_v((bit[8]) regnum) =
- switch(regnum[4..0]) {
+function unit raise_c2_exception((CapEx) capEx, (regno) regnum) =
+ raise_c2_exception8(capEx, 0b000 : regnum)
+
+function unit raise_c2_exception_v((regno) regnum) =
+ switch(regnum) {
case 0b11011 -> raise_c2_exception(CapEx_AccessKR1CViolation, regnum)
case 0b11100 -> raise_c2_exception(CapEx_AccessKR2CViolation, regnum)
case 0b11101 -> raise_c2_exception(CapEx_AccessKCCViolation, regnum)
@@ -296,7 +299,7 @@ function unit raise_c2_exception_v((bit[8]) regnum) =
}
function unit raise_c2_exception_noreg((CapEx) capEx) =
- raise_c2_exception(capEx, 0xff)
+ raise_c2_exception8(capEx, 0xff)
function bool register_inaccessible((regno) r) =
~(switch(r) {