From f5393fa31c39f936fa43fcf443220bbc8de1cc4a Mon Sep 17 00:00:00 2001 From: Peter Rugg Date: Thu, 13 Feb 2020 17:36:14 +0000 Subject: [PATCH 1/2] Support setAddrUnsafe on CapRegs --- CHERICC_Fat.bsv | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CHERICC_Fat.bsv b/CHERICC_Fat.bsv index 26658e6..827e319 100644 --- a/CHERICC_Fat.bsv +++ b/CHERICC_Fat.bsv @@ -984,7 +984,10 @@ instance CHERICap #(CapReg, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3)); function getAddr (cap) = truncate(getAddress(cap)); function setAddr = error("feature not implemented for this cap type"); - function setAddrUnsafe = error("feature not implemented for this cap type"); + + function CapReg setAddrUnsafe (CapReg cap, Bit#(CapAddressW) address); + return setCapPointer(cap, zeroExtend(address)); + endfunction function getOffset = error("feature not implemented for this cap type"); function modifyOffset = error("feature not implemented for this cap type"); @@ -1114,8 +1117,7 @@ instance CHERICap #(CapPipe, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3)); endfunction function CapPipe setAddrUnsafe (CapPipe cap, Bit#(CapAddressW) address); - let result = setCapPointer(cap.capFat, zeroExtend(address)); - cap.capFat = result; + cap.capFat = setAddrUnsafe(cap.capFat, address); cap.tempFields = getTempFields(cap.capFat); return cap; endfunction From e958fb685e79708782b395ec698571a479549228 Mon Sep 17 00:00:00 2001 From: Peter Rugg Date: Tue, 3 Mar 2020 18:41:25 +0000 Subject: [PATCH 2/2] Remove default slow implementation of CRRL --- CHERICap.bsv | 3 --- 1 file changed, 3 deletions(-) diff --git a/CHERICap.bsv b/CHERICap.bsv index 5fcf36e..1e6c887 100644 --- a/CHERICap.bsv +++ b/CHERICap.bsv @@ -186,9 +186,6 @@ typeclass CHERICap#(type t, numeric type ot, numeric type flg, numeric type n, n // Get representable length function Bit#(n) getRepresentableLength (t dummy, Bit#(n) length_request); - let mask = getRepresentableAlignmentMask(dummy, length_request); - return (length_request + ~mask) & mask; - endfunction endtypeclass