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?