From a8d781f083c6dd8eeea4069b278bb48dd196500b Mon Sep 17 00:00:00 2001 From: Robert Norton Date: Thu, 26 Jan 2017 14:13:03 +0000 Subject: don't forget to use absolute PC as offset in epcc in case where epcc is not representable. --- cheri/cheri_prelude_common.sail | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cheri/cheri_prelude_common.sail b/cheri/cheri_prelude_common.sail index 5d88c43a..7d4a7406 100644 --- a/cheri/cheri_prelude_common.sail +++ b/cheri/cheri_prelude_common.sail @@ -177,7 +177,7 @@ function forall Type 'o . 'o SignalException ((Exception) ex) = if (success) then C31 := capStructToCapReg(epcc) else - C31 := capStructToCapReg(int_to_cap(pc)); + C31 := capStructToCapReg(int_to_cap(getCapBase(pcc) + pc)); (* XXX what if not success? *) nextPCC := C29; (* KCC *) delayedPCC := C29; (* always write delayedPCC together whether PCC so -- cgit v1.2.3