summaryrefslogtreecommitdiff
path: root/cheri
diff options
context:
space:
mode:
Diffstat (limited to 'cheri')
-rw-r--r--cheri/cheri_prelude_128.sail6
1 files changed, 4 insertions, 2 deletions
diff --git a/cheri/cheri_prelude_128.sail b/cheri/cheri_prelude_128.sail
index 323682b7..83056b3f 100644
--- a/cheri/cheri_prelude_128.sail
+++ b/cheri/cheri_prelude_128.sail
@@ -404,8 +404,10 @@ register CapCauseReg CapCause
function forall Type 'o . 'o SignalException ((Exception) ex) =
{
- C31 := PCC;
- (*C31.offset := PC; XXX fix this *)
+ let pcc = capRegToCapStruct(PCC) in
+ let (success, epcc) = setCapOffset(pcc, PC) in
+ C31 := capStructToCapReg(epcc);
+ (* XXX what if not success? *)
nextPCC := C29; (* KCC *)
delayedPCC := C29; (* always write delayedPCC together whether PCC so
that non-capability branches don't override PCC *)