Skip to content

Commit ebf323c

Browse files
committed
Added functionality to never set F bit via acperm
1 parent c0a112b commit ebf323c

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

CHERICap.bsv

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,8 @@ typeclass CHERICap #( type capT // type of the CHERICap capability
260260
setSoftPerms ( setHardPerms (cap, unpack ({perms[22:20],perms[9:0]})), perms[13:10]);
261261
// Set the architectural permissions in legalised form
262262
function capT setPerms (capT cap, Bit #(31) perms);
263-
HardPerms hp = unpack ({perms[22:20],perms[9:0]});
263+
// ignore the foreign bit - it can never be set by acperm
264+
HardPerms hp = unpack ({perms[22:20],perms[9:8],1'b1,perms[6:0]});
264265
let hp_cap = setHardPerms(cap, hp);
265266
let l_hp_perm = legaliseHardPerms(hp_cap);
266267
let l_m_hp_perm = setIntMode(l_hp_perm.value, getUnlegalisedIntMode(l_hp_perm.value));

0 commit comments

Comments
 (0)