diff options
Diffstat (limited to 'cheri')
| -rw-r--r-- | cheri/cheri_prelude.sail | 11 |
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) { |
