diff options
Diffstat (limited to 'cheri')
| -rw-r--r-- | cheri/cheri_prelude_128.sail | 6 |
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 *) |
