From 59dd317cb5251c8cff714a94b5d772af201febbe Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Tue, 10 Oct 2006 22:10:08 -0400 Subject: Put in an accounting mechanism and an assert to make sure something doesn't try to send another packet while it's still waiting for the bus. --HG-- extra : convert_revision : 4a2b83111e49f71ca27e05c98b55bc3bac8d9f53 --- src/mem/bus.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/mem/bus.cc') diff --git a/src/mem/bus.cc b/src/mem/bus.cc index 3efaa93ac..3b8a079ca 100644 --- a/src/mem/bus.cc +++ b/src/mem/bus.cc @@ -61,7 +61,7 @@ Bus::getPort(const std::string &if_name, int idx) void Bus::init() { - std::vector::iterator intIter; + std::vector::iterator intIter; for (intIter = interfaces.begin(); intIter != interfaces.end(); intIter++) (*intIter)->sendStatusChange(Port::RangeChange); @@ -89,7 +89,7 @@ Bus::recvTiming(Packet *pkt) DPRINTF(Bus, "recvTiming: packet src %d dest %d addr 0x%x cmd %s\n", pkt->getSrc(), pkt->getDest(), pkt->getAddr(), pkt->cmdString()); - Port *pktPort = interfaces[pkt->getSrc()]; + BusPort *pktPort = interfaces[pkt->getSrc()]; // If the bus is busy, or other devices are in line ahead of the current // one, put this device on the retry list. @@ -108,6 +108,7 @@ Bus::recvTiming(Packet *pkt) if (pkt->flags & SATISFIED) { //Cache-Cache transfer occuring if (inRetry) { + retryList.front()->onRetryList(false); retryList.pop_front(); inRetry = false; } @@ -181,6 +182,7 @@ Bus::recvTiming(Packet *pkt) // Packet was successfully sent. Return true. // Also take care of retries if (inRetry) { + retryList.front()->onRetryList(false); retryList.pop_front(); inRetry = false; } -- cgit v1.2.3