Who calls this and what is the input?
Where does this go?
mkConnection(theMemMerge.merged, l2Cache.cache)
file: cheri/trunk/Merge.bsv
module mkMergeFast(MergeIfc#(numIfc));
numIfc = 2 in Memory.bsv
// Memory.bsv
mkConnection(iCache.memory, theMemMerge.slave[0]);
mkConnection(dCache.memory, theMemMerge.slave[1]);
FIFOF#(CheriMemRequest) nextReq <- mkBypassFIFOF; FIFOF#(CheriMemResponse) rsp_fifo <- mkBypassFIFOF; Vector#(numIfc, Wire#(Bool)) fired <- replicateM(mkDWire(False)); Vector#(numIfc, Bool) block;
Vector#(numIfc, Slave#(CheriMemRequest, CheriMemResponse)) slaves;
interface slave = slaves;
Response: check rsp_fifo.first.masterID
, only return response when masterID matches icache (0) or dcache(1).
Request: put req to nextReq
: nextReq.enq(req)
. Set fired[i] to true,
interface CheckedGet request = toCheckedGet(nextReq);
interface CheckedPut response = toCheckedPut(rsp_fifo);
print time and rsp_fifp
status .notFull
Reference 1
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?