Implement getHardPerms on CapMem
This commit is contained in:
@@ -893,7 +893,23 @@ instance CHERICap #(CapMem, OTypeW, FlagsW, CapAddressW, CapW, TSub#(MW, 3));
|
|||||||
capMem.flags = f;
|
capMem.flags = f;
|
||||||
return pack(capMem);
|
return pack(capMem);
|
||||||
endfunction
|
endfunction
|
||||||
function getHardPerms = error("getHardPerms not implemented for CapMem");
|
function getHardPerms (x);
|
||||||
|
CapabilityInMemory cap = unpack(x);
|
||||||
|
return HardPerms {
|
||||||
|
permitSetCID: cap.perms.hard.permit_set_CID,
|
||||||
|
accessSysRegs: cap.perms.hard.access_sys_regs,
|
||||||
|
permitUnseal: cap.perms.hard.permit_unseal,
|
||||||
|
permitCCall: cap.perms.hard.permit_ccall,
|
||||||
|
permitSeal: cap.perms.hard.permit_seal,
|
||||||
|
permitStoreLocalCap: cap.perms.hard.permit_store_ephemeral_cap,
|
||||||
|
permitStoreCap: cap.perms.hard.permit_store_cap,
|
||||||
|
permitLoadCap: cap.perms.hard.permit_load_cap,
|
||||||
|
permitStore: cap.perms.hard.permit_store,
|
||||||
|
permitLoad: cap.perms.hard.permit_load,
|
||||||
|
permitExecute: cap.perms.hard.permit_execute,
|
||||||
|
global: cap.perms.hard.non_ephemeral
|
||||||
|
};
|
||||||
|
endfunction
|
||||||
function setHardPerms = error("setHardPerms not implemented for CapMem");
|
function setHardPerms = error("setHardPerms not implemented for CapMem");
|
||||||
function getSoftPerms = error("getSoftPerms not implemented for CapMem");
|
function getSoftPerms = error("getSoftPerms not implemented for CapMem");
|
||||||
function setSoftPerms = error("setSoftPerms not implemented for CapMem");
|
function setSoftPerms = error("setSoftPerms not implemented for CapMem");
|
||||||
|
|||||||
Reference in New Issue
Block a user