Lines Matching refs:mshr
52 #include "mem/cache/mshr.hh"
65 MSHR *mshr = freeList.front();
66 assert(mshr->getNumTargets() == 0);
69 mshr->allocate(blk_addr, blk_size, pkt, when_ready, order, alloc_on_fill);
70 mshr->allocIter = allocatedList.insert(allocatedList.end(), mshr);
71 mshr->readyIter = addToReadyList(mshr);
74 return mshr;
78 MSHRQueue::moveToFront(MSHR *mshr)
80 if (!mshr->inService) {
81 assert(mshr == *(mshr->readyIter));
82 readyList.erase(mshr->readyIter);
83 mshr->readyIter = readyList.insert(readyList.begin(), mshr);
88 MSHRQueue::delay(MSHR *mshr, Tick delay_ticks)
90 mshr->delay(delay_ticks);
91 auto it = std::find_if(mshr->readyIter, readyList.end(),
92 [mshr] (const MSHR* _mshr) {
93 return mshr->readyTime >= _mshr->readyTime;
95 readyList.splice(it, readyList, mshr->readyIter);
99 MSHRQueue::markInService(MSHR *mshr, bool pending_modified_resp)
101 mshr->markInService(pending_modified_resp);
102 readyList.erase(mshr->readyIter);
107 MSHRQueue::markPending(MSHR *mshr)
109 assert(mshr->inService);
110 mshr->inService = false;
116 mshr->readyIter = addToReadyList(mshr);
120 MSHRQueue::forceDeallocateTarget(MSHR *mshr)
123 assert(mshr->hasTargets());
125 mshr->popTarget();
126 // Delete mshr if no remaining targets
127 if (!mshr->hasTargets() && !mshr->promoteDeferredTargets()) {
128 deallocate(mshr);