summaryrefslogtreecommitdiff
path: root/src/mem/bus.hh
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2013-03-26 14:46:46 -0400
committerAndreas Hansson <andreas.hansson@arm.com>2013-03-26 14:46:46 -0400
commit362f6f1a16a68a99c962628bcda00c7c576f935c (patch)
treea3df8a6d05340a65d190fcf166091b3f1aed4ae6 /src/mem/bus.hh
parent2123176684e3967912126125c65319dffdfa7467 (diff)
downloadgem5-362f6f1a16a68a99c962628bcda00c7c576f935c.tar.xz
mem: Introduce a variable for the retrying port
This patch introduces a variable to keep track of the retrying port instead of relying on it being the front of the retryList. Besides the improvement in readability, this patch is a step towards separating out the two cases where a port is waiting for the bus to be free, and where the forwarding did not succeed and the bus is waiting for a retry to pass on to the original initiator of the transaction. The changes made are currently such that the regressions are not affected. This is ensured by always prioritizing the currently retrying port and putting it back at the front of the retry list.
Diffstat (limited to 'src/mem/bus.hh')
-rw-r--r--src/mem/bus.hh8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mem/bus.hh b/src/mem/bus.hh
index 705a3a999..2cd21ff85 100644
--- a/src/mem/bus.hh
+++ b/src/mem/bus.hh
@@ -212,6 +212,14 @@ class BaseBus : public MemObject
std::deque<PortClass*> retryList;
/**
+ * Port that we are currently in the process of telling to
+ * retry a previously failed attempt to perform a timing
+ * transaction. This is a valid port when in the retry state,
+ * and NULL when in busy or idle.
+ */
+ PortClass* retryingPort;
+
+ /**
* Release the bus layer after being occupied and return to an
* idle state where we proceed to send a retry to any
* potential waiting port, or drain if asked to do so.