This commit is contained in:
@@ -1451,10 +1451,18 @@ instance CHERICap #(CapPipe, OTypeW, FlagsW, CapAddrW, CapW, TSub#(MW, 3), Delta
|
|||||||
return CapPipe { capFat: res, tempFields: getTempFields(res) };
|
return CapPipe { capFat: res, tempFields: getTempFields(res) };
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Bit#(39) trueAddr;
|
||||||
|
Bit#(25) delta;
|
||||||
|
} MyAddr deriving (Bits);
|
||||||
|
|
||||||
//Functions that require TempFields
|
//Functions that require TempFields
|
||||||
|
|
||||||
function setAddr (cap, address);
|
function setAddr (cap, address);
|
||||||
let result = setAddress(cap.capFat, address, cap.tempFields);
|
// todo
|
||||||
|
MyAddr myAddr = unpack(pack(addr));
|
||||||
|
myAddr.delta = 42;
|
||||||
|
let result = setAddress(cap.capFat, pack(myAddr), cap.tempFields);
|
||||||
cap.capFat = result.d;
|
cap.capFat = result.d;
|
||||||
cap.tempFields = getTempFields(cap.capFat);
|
cap.tempFields = getTempFields(cap.capFat);
|
||||||
return Exact { exact: result.v, value: cap };
|
return Exact { exact: result.v, value: cap };
|
||||||
|
|||||||
Reference in New Issue
Block a user