summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Dreslinski <rdreslin@umich.edu>2006-10-11 00:31:40 -0400
committerRon Dreslinski <rdreslin@umich.edu>2006-10-11 00:31:40 -0400
commit07dad71f6f09afd9ac6d3dca89f635ef509e4e0e (patch)
tree0792579fd7ed71f714d648057b2866412c3025cd
parent04f71f1226d0eb20694806b2a3b2546238eb4f5b (diff)
parenta139e4394d473ce1927d8f800640cf9688c70652 (diff)
downloadgem5-07dad71f6f09afd9ac6d3dca89f635ef509e4e0e.tar.xz
Merge zizzer:/n/wexford/x/gblack/m5/newmem_bus
into zazzer.eecs.umich.edu:/z/rdreslin/m5bk/newmemcleanest --HG-- extra : convert_revision : d2d19b27533f35c6570ee84c6c83b2919f27b97f
-rw-r--r--src/mem/bus.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/mem/bus.cc b/src/mem/bus.cc
index 03c1a4209..6065ee1f1 100644
--- a/src/mem/bus.cc
+++ b/src/mem/bus.cc
@@ -214,9 +214,24 @@ Bus::recvRetry(int id)
retryList.front()->sendRetry();
// If inRetry is still true, sendTiming wasn't called
if (inRetry)
- panic("Port %s didn't call sendTiming in it's recvRetry\n",\
- retryList.front()->getPeer()->name());
- //assert(!inRetry);
+ {
+ retryList.front()->onRetryList(false);
+ retryList.pop_front();
+ inRetry = false;
+
+ //Bring tickNextIdle up to the present
+ while (tickNextIdle < curTick)
+ tickNextIdle += clock;
+
+ //Burn a cycle for the missed grant.
+ tickNextIdle += clock;
+
+ if (!busIdle.scheduled()) {
+ busIdle.schedule(tickNextIdle);
+ } else {
+ busIdle.reschedule(tickNextIdle);
+ }
+ }
}
}