From 4c28952d632c735478c433c80b69dbf175877ed9 Mon Sep 17 00:00:00 2001 From: Robert Norton Date: Wed, 25 Jan 2017 13:54:29 +0000 Subject: set offset of pcc on exception. --- cheri/cheri_prelude_128.sail | 6 ++++-- 1 file 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 *) -- cgit v1.2.3