summaryrefslogtreecommitdiff
path: root/src/mem/bus.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2006-10-08 18:44:49 -0400
committerGabe Black <gblack@eecs.umich.edu>2006-10-08 18:44:49 -0400
commita82f017591ecb78cb098e38314d87d64fcaaa37f (patch)
tree3937e3900126dc2052de8e4bb2afcce9da180628 /src/mem/bus.cc
parent63023ba4c21e293e93d799815b94f41024da0f97 (diff)
downloadgem5-a82f017591ecb78cb098e38314d87d64fcaaa37f.tar.xz
bus changes
src/mem/bus.cc: src/mem/bus.hh: minor fix and some formatting changes src/python/m5/objects/Bus.py: changed bits to bytes --HG-- extra : convert_revision : dcd22205604b7a2727eaf2094084c4858f3589c5
Diffstat (limited to 'src/mem/bus.cc')
-rw-r--r--src/mem/bus.cc18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/mem/bus.cc b/src/mem/bus.cc
index 2a38cb635..4cd4dd71a 100644
--- a/src/mem/bus.cc
+++ b/src/mem/bus.cc
@@ -68,7 +68,9 @@ Bus::init()
}
Bus::BusFreeEvent::BusFreeEvent(Bus *_bus) : Event(&mainEventQueue), bus(_bus)
-{}
+{
+ assert(!scheduled());
+}
void Bus::BusFreeEvent::process()
{
@@ -104,6 +106,7 @@ Bus::occupyBus(int numCycles)
} else {
busIdle.reschedule(tickNextIdle);
}
+ DPRINTF(Bus, "The bus is now occupied from tick %d to %d\n", curTick, tickNextIdle);
}
/** Function called by the port when the bus is receiving a Timing
@@ -155,6 +158,11 @@ Bus::recvTiming(Packet *pkt)
if (port->sendTiming(pkt)) {
// Packet was successfully sent. Return true.
+ // Also take care of retries
+ if (retryingPort) {
+ retryList.pop_front();
+ retryingPort = NULL;
+ }
return true;
}
@@ -166,15 +174,15 @@ Bus::recvTiming(Packet *pkt)
void
Bus::recvRetry(int id)
{
- //If there's anything waiting...
+ // If there's anything waiting...
if (retryList.size()) {
retryingPort = retryList.front();
retryingPort->sendRetry();
- //If the retryingPort pointer isn't null, either sendTiming wasn't
- //called, or it was and the packet was successfully sent.
+ // If the retryingPort pointer isn't null, sendTiming wasn't called
if (retryingPort) {
+ warn("sendRetry didn't call sendTiming\n");
retryList.pop_front();
- retryingPort = 0;
+ retryingPort = NULL;
}
}
}