summaryrefslogtreecommitdiff
path: root/src/mem/bus.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2006-11-14 15:23:23 -0500
committerGabe Black <gblack@eecs.umich.edu>2006-11-14 15:23:23 -0500
commitac2c7967f69e3ffd29a1ed04a15838073dc060de (patch)
treed24dc27dcb11414775d2971b645ef4a6fbb922d9 /src/mem/bus.cc
parentbc4d15ddd199420d2201fd0e8bde399e51ea0d3d (diff)
parent2f6a9454d13e44faba55b14d958f20a04bc36246 (diff)
downloadgem5-ac2c7967f69e3ffd29a1ed04a15838073dc060de.tar.xz
Merge zizzer.eecs.umich.edu:/bk/newmem/
into zeep.eecs.umich.edu:/home/gblack/m5/newmemmemops --HG-- extra : convert_revision : 966246877ac1f1e6c2675d413b0b405cccfecbeb
Diffstat (limited to 'src/mem/bus.cc')
-rw-r--r--src/mem/bus.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mem/bus.cc b/src/mem/bus.cc
index 7b65d252b..8ea67a0e4 100644
--- a/src/mem/bus.cc
+++ b/src/mem/bus.cc
@@ -242,8 +242,11 @@ Bus::recvRetry(int id)
}
}
//If we weren't able to drain before, we might be able to now.
- if (drainEvent && retryList.size() == 0 && curTick >= tickNextIdle)
+ if (drainEvent && retryList.size() == 0 && curTick >= tickNextIdle) {
drainEvent->process();
+ // Clear the drain event once we're done with it.
+ drainEvent = NULL;
+ }
}
Port *
@@ -367,6 +370,10 @@ Bus::recvAtomic(PacketPtr pkt)
DPRINTF(Bus, "recvAtomic: packet src %d dest %d addr 0x%x cmd %s\n",
pkt->getSrc(), pkt->getDest(), pkt->getAddr(), pkt->cmdString());
assert(pkt->getDest() == Packet::Broadcast);
+
+ // Assume one bus cycle in order to get through. This may have
+ // some clock skew issues yet again...
+ pkt->finishTime = curTick + clock;
Tick snoopTime = atomicSnoop(pkt);
if (snoopTime)
return snoopTime; //Snoop satisfies it