#include "mem/tport.hh"
-void
+bool
SimpleTimingPort::checkFunctional(PacketPtr pkt)
{
DeferredPacketIterator i = transmitList.begin();
// If the target contains data, and it overlaps the
// probed request, need to update data
if (pkt->checkFunctional(target)) {
- return;
+ return true;
}
}
+
+ return false;
}
void
SimpleTimingPort::recvFunctional(PacketPtr pkt)
{
- checkFunctional(pkt);
-
- // Just do an atomic access and throw away the returned latency
- if (!pkt->isResponse())
+ if (!checkFunctional(pkt)) {
+ // Just do an atomic access and throw away the returned latency
recvAtomic(pkt);
+ }
}
bool
SimpleTimingPort::schedSendTiming(PacketPtr pkt, Tick when)
{
assert(when > curTick);
+ assert(when < curTick + Clock::Int::ms);
// Nothing is on the list: add it and schedule an event
if (transmitList.empty() || when < transmitList.front().tick) {