SimpleTimingPort::SimpleTimingPort(const std::string& _name,
MemObject* _owner) :
QueuedSlavePort(_name, _owner, queueImpl), queueImpl(*_owner, *this)
SimpleTimingPort::SimpleTimingPort(const std::string& _name,
MemObject* _owner) :
QueuedSlavePort(_name, _owner, queueImpl), queueImpl(*_owner, *this)
- // a need to deal with inhibited packets
- if (pkt->memInhibitAsserted())
- panic("SimpleTimingPort should never see an inhibited request\n");
+ // a need to deal with snoop responses and their flow control
+ // requirements
+ if (pkt->cacheResponding())
+ panic("SimpleTimingPort should never see packets with the "
+ "cacheResponding flag set\n");
assert(pkt->isResponse());
schedTimingResp(pkt, curTick() + latency);
} else {
assert(pkt->isResponse());
schedTimingResp(pkt, curTick() + latency);
} else {
- /// @todo nominally we should just delete the packet here.
- /// Until 4-phase stuff we can't because the sending
- /// cache is still relying on it
- pendingDelete.push_back(pkt);
+ // queue the packet for deletion
+ pendingDelete.reset(pkt);