Fix overly strict derivability check

This commit is contained in:
Peter Rugg
2020-04-01 12:46:55 +01:00
parent 8fbf0377f9
commit 5c138fe263

View File

@@ -1079,7 +1079,7 @@ instance CHERICap #(CapReg, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3));
function Bool isDerivable (CapReg cap); function Bool isDerivable (CapReg cap);
return cap.bounds.exp <= resetExp return cap.bounds.exp <= resetExp
&& !(cap.bounds.exp == resetExp && ((truncateLSB(cap.bounds.topBits) != 1'b0) || (truncateLSB(cap.bounds.baseBits) != 2'b0))) && !(cap.bounds.exp == resetExp && ((truncateLSB(cap.bounds.topBits) != 1'b0) || (truncateLSB(cap.bounds.baseBits) != 2'b0)))
&& !(cap.bounds.exp == resetExp-1 && (truncateLSB(cap.bounds.baseBits) != 2'b0)) && !(cap.bounds.exp == resetExp-1 && (truncateLSB(cap.bounds.baseBits) != 1'b0))
&& (cap.reserved == 0); && (cap.reserved == 0);
endfunction endfunction