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:
Ron Dreslinski 2006-11-12 09:30:12 -05:00
parent a200bccc20
commit 5edfaefc78

View file

@ -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.