summaryrefslogtreecommitdiff
path: root/src/mem/bus.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/bus.hh')
-rw-r--r--src/mem/bus.hh33
1 files changed, 11 insertions, 22 deletions
diff --git a/src/mem/bus.hh b/src/mem/bus.hh
index 5b8b373a5..3117bf4e1 100644
--- a/src/mem/bus.hh
+++ b/src/mem/bus.hh
@@ -71,8 +71,6 @@ class Bus : public MemObject
of the interfaces connecting to the bus. */
class BusPort : public Port
{
- bool _onRetryList;
-
/** A pointer to the bus to which this port belongs. */
Bus *bus;
@@ -83,15 +81,9 @@ class Bus : public MemObject
/** Constructor for the BusPort.*/
BusPort(const std::string &_name, Bus *_bus, int _id)
- : Port(_name, _bus), _onRetryList(false), bus(_bus), id(_id)
+ : Port(_name, _bus), bus(_bus), id(_id)
{ }
- bool onRetryList()
- { return _onRetryList; }
-
- void onRetryList(bool newVal)
- { _onRetryList = newVal; }
-
int getId() const { return id; }
/**
@@ -301,25 +293,22 @@ class Bus : public MemObject
/** An array of pointers to ports that retry should be called on because the
* original send failed for whatever reason.*/
- std::list<BusPort*> retryList;
+ std::list<Port*> retryList;
- void addToRetryList(BusPort * port)
+ void addToRetryList(Port* port)
{
if (!inRetry) {
- // The device wasn't retrying a packet, or wasn't at an appropriate
- // time.
- assert(!port->onRetryList());
- port->onRetryList(true);
+ // The device wasn't retrying a packet, or wasn't at an
+ // appropriate time.
retryList.push_back(port);
} else {
- if (port->onRetryList()) {
- // The device was retrying a packet. It didn't work, so we'll leave
- // it at the head of the retry list.
- assert(port == retryList.front());
+ if (!retryList.empty() && port == retryList.front()) {
+ // The device was retrying a packet. It didn't work,
+ // so we'll leave it at the head of the retry list.
inRetry = false;
- }
- else {
- port->onRetryList(true);
+ } else {
+ // We are in retry, but not for this port, put it at
+ // the end.
retryList.push_back(port);
}
}