Reference 1
Memory access stage of the pipeline
//cheri/trunk/MemAccess.bsv
module mkMemAccess#(
DataMemory m
`ifdef USECAP
, CapCopIfc capCop
`endif
)(PipeStageIfc);Input:
Methods:
Input: ControlTokenT er Output: ControlTokenT mi. // outQ.enq(mi) // mi has the updated
Steps:
Call capCop.getAddress(), check exception. getAddress() is defined in CapCop.bsv; it will check the length violation for the capability being used.
check alignment of memory
??? L86-88, L140-156, scResult er.test er.opB[0]==1'b1 ??? what is those used for? Choose a value of mi.mem from Write/None, and set storeConditional?
m.startMem(mi.mem, addr, er.cop, er.storeData, er.memSize, er.test==LL, cap, er.id, er.epoch, er.fromDebug, storeConditional);
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?