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
1 changed files with 15 additions and 0 deletions
|
@ -288,6 +288,21 @@ PhysicalMemory::MemoryPort::recvAtomic(PacketPtr pkt)
|
||||||
void
|
void
|
||||||
PhysicalMemory::MemoryPort::recvFunctional(PacketPtr pkt)
|
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()
|
// Default implementation of SimpleTimingPort::recvFunctional()
|
||||||
// calls recvAtomic() and throws away the latency; we can save a
|
// calls recvAtomic() and throws away the latency; we can save a
|
||||||
// little here by just not calculating the latency.
|
// little here by just not calculating the latency.
|
||||||
|
|
Loading…
Reference in a new issue