From 74ec7d716bb0ade5590dde773d2c5d91f9ac8361 Mon Sep 17 00:00:00 2001 From: Robert Norton Date: Tue, 11 Apr 2017 15:36:50 +0100 Subject: change to spec. of CLC instruction -- clear tag instead of exception if permit_load_cap not set. --- cheri/cheri_insts.sail | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'cheri') diff --git a/cheri/cheri_insts.sail b/cheri/cheri_insts.sail index e1c1cc00..b2801bae 100644 --- a/cheri/cheri_insts.sail +++ b/cheri/cheri_insts.sail @@ -946,8 +946,6 @@ function clause execute (CLC(cd, cb, rt, offset, linked)) = raise_c2_exception(CapEx_TagViolation, cb) else if (cb_val.sealed) then raise_c2_exception(CapEx_SealViolation, cb) - else if not (cb_val.permit_load_cap) then - raise_c2_exception(CapEx_PermitLoadCapViolation, cb) else { cursor := getCapCursor(cb_val); @@ -972,7 +970,7 @@ function clause execute (CLC(cd, cb, rt, offset, linked)) = else (MEMr_tagged(pAddr))) in - (CapRegs[cd]) := memBitsToCapBits(tag & not (suppressTag), mem); + (CapRegs[cd]) := memBitsToCapBits(tag & (cb_val.permit_load_cap) & not (suppressTag), mem); } } (* END_CLC *) -- cgit v1.2.3