Physical memory overrides the tport version of recvFunctional, need to do the
check here for responses that match as well --HG-- extra : convert_revision : 69c3628a381a9da885fab0272abf40c3411a5f0f
This commit is contained in:
parent
a200bccc20
commit
5edfaefc78
|
@ -288,6 +288,21 @@ PhysicalMemory::MemoryPort::recvAtomic(PacketPtr pkt)
|
|||
void
|
||||
PhysicalMemory::MemoryPort::recvFunctional(PacketPtr pkt)
|
||||
{
|
||||
//Since we are overriding the function, make sure to have the impl of the
|
||||
//check or functional accesses here.
|
||||
std::list<std::pair<Tick,PacketPtr> >::iterator i = transmitList.begin();
|
||||
std::list<std::pair<Tick,PacketPtr> >::iterator end = transmitList.end();
|
||||
bool notDone = true;
|
||||
|
||||
while (i != end && notDone) {
|
||||
PacketPtr target = i->second;
|
||||
// If the target contains data, and it overlaps the
|
||||
// probed request, need to update data
|
||||
if (target->intersect(pkt))
|
||||
notDone = fixPacket(pkt, target);
|
||||
i++;
|
||||
}
|
||||
|
||||
// Default implementation of SimpleTimingPort::recvFunctional()
|
||||
// calls recvAtomic() and throws away the latency; we can save a
|
||||
// little here by just not calculating the latency.
|
||||
|
|
Loading…
Reference in a new issue