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?