diff options
author | Ron Dreslinski <rdreslin@umich.edu> | 2006-10-11 00:31:40 -0400 |
---|---|---|
committer | Ron Dreslinski <rdreslin@umich.edu> | 2006-10-11 00:31:40 -0400 |
commit | 07dad71f6f09afd9ac6d3dca89f635ef509e4e0e (patch) | |
tree | 0792579fd7ed71f714d648057b2866412c3025cd | |
parent | 04f71f1226d0eb20694806b2a3b2546238eb4f5b (diff) | |
parent | a139e4394d473ce1927d8f800640cf9688c70652 (diff) | |
download | gem5-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.cc | 21 |
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); + } + } } } |