diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2012-07-09 12:35:36 -0400 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2012-07-09 12:35:36 -0400 |
commit | 995e6e4670f52c52f798320055d74994e6539cda (patch) | |
tree | bd758d4a220f06412abe4a7484369b18ae1ea0be /src/mem/noncoherent_bus.hh | |
parent | 14f9c77dd36fef8ab509bc17ecbe422555daa9c6 (diff) | |
download | gem5-995e6e4670f52c52f798320055d74994e6539cda.tar.xz |
Bus: Add a notion of layers to the buses
This patch moves all flow control, arbitration and state information
into a bus layer. The layer is thus responsible for all the state
transitions, and for keeping hold of the retry list. Consequently the
layer is also responsible for the draining.
With this change, the non-coherent and coherent bus are given a single
layer to avoid changing any temporal behaviour, but the patch opens up
for adding more layers.
Diffstat (limited to 'src/mem/noncoherent_bus.hh')
-rw-r--r-- | src/mem/noncoherent_bus.hh | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mem/noncoherent_bus.hh b/src/mem/noncoherent_bus.hh index 46fc65fad..dd43d8c19 100644 --- a/src/mem/noncoherent_bus.hh +++ b/src/mem/noncoherent_bus.hh @@ -73,6 +73,11 @@ class NoncoherentBus : public BaseBus protected: /** + * Declare the single layer of this bus. + */ + Layer layer; + + /** * Declaration of the non-coherent bus slave port type, one will * be instantiated for each of the master ports connecting to the * bus. @@ -184,6 +189,10 @@ class NoncoherentBus : public BaseBus response packet.*/ virtual bool recvTimingResp(PacketPtr pkt, PortID master_port_id); + /** Timing function called by port when it is once again able to process + * requests. */ + void recvRetry(); + /** Function called by the port when the bus is recieving a Atomic transaction.*/ Tick recvAtomic(PacketPtr pkt, PortID slave_port_id); @@ -196,6 +205,8 @@ class NoncoherentBus : public BaseBus NoncoherentBus(const NoncoherentBusParams *p); + unsigned int drain(Event *de); + }; #endif //__MEM_NONCOHERENT_BUS_HH__ |