summaryrefslogtreecommitdiff
path: root/src/mem/bus.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2006-10-10 22:10:08 -0400
committerGabe Black <gblack@eecs.umich.edu>2006-10-10 22:10:08 -0400
commit59dd317cb5251c8cff714a94b5d772af201febbe (patch)
tree6401120fe89f5c3e3f2ae82b1bc42a094d9b6c62 /src/mem/bus.cc
parent404b2a951d82bde00e607296c5e7de2997df8058 (diff)
downloadgem5-59dd317cb5251c8cff714a94b5d772af201febbe.tar.xz
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
Diffstat (limited to 'src/mem/bus.cc')
-rw-r--r--src/mem/bus.cc6
1 files changed, 4 insertions, 2 deletions
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<Port*>::iterator intIter;
+ std::vector<BusPort*>::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;
}