From 774e883a26dbca43dd9ba218842a05a40097bb97 Mon Sep 17 00:00:00 2001 From: Peter Rugg Date: Mon, 20 Jan 2020 14:30:31 +0000 Subject: [PATCH] Fix hardcoded assumption in maskAddr that MW was 8 from CAP64 --- CHERICC_Fat.bsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHERICC_Fat.bsv b/CHERICC_Fat.bsv index c05df83..77c0854 100644 --- a/CHERICC_Fat.bsv +++ b/CHERICC_Fat.bsv @@ -1018,7 +1018,7 @@ instance CHERICap #(CapReg, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3)); function CapReg maskAddr (CapReg cap, Bit#(TSub#(MW, 3)) mask); cap.address[valueOf(TSub#(MW, 4)):0] = cap.address[valueOf(TSub#(MW, 4)):0] & mask; //Update addrBits. Since exp can be up to 64, extend to 64 + 8 bits so bit-select is always in range - cap.addrBits = (({40'b0,cap.address})[cap.bounds.exp+7:cap.bounds.exp]); //TODO avoid shift? + cap.addrBits = (({40'b0,cap.address})[cap.bounds.exp+fromInteger(valueOf(TSub#(MW,1))):cap.bounds.exp]); //TODO avoid shift? return cap; endfunction