diff options
-rw-r--r-- | dev/io_device.hh | 9 | ||||
-rw-r--r-- | mem/bus.hh | 3 | ||||
-rw-r--r-- | mem/port.hh | 19 |
3 files changed, 18 insertions, 13 deletions
diff --git a/dev/io_device.hh b/dev/io_device.hh index 88dd32733..a79c3f20a 100644 --- a/dev/io_device.hh +++ b/dev/io_device.hh @@ -50,8 +50,7 @@ class PioPort : public Port virtual void recvFunctional(Packet &pkt) { device->recvAtomic(pkt) }; - virtual void recvAddressRangeQuery(std::list<Range<Addr> > &range_list, - bool &owner) + virtual void getDeviceAddressRanges(AddrRangeList &range_list, bool &owner) { device->addressRanges(range_list, owner); } void sendTiming(Packet &pkt, Tick time) @@ -101,8 +100,7 @@ class DmaPort : public Port virtual Packet *recvRetry() { return transmitList.pop_front(); } - virtual void recvAddressRangeQuery(std::list<Range<Addr> > &range_list, - bool &owner) + virtual void getDeviceAddressRanges(AddrRangeList &range_list, bool &owner) { range_list.clear(); owner = true; } void dmaAction(Memory::Command cmd, DmaPort port, Addr addr, int size, @@ -146,8 +144,7 @@ class PioDevice : public SimObject PioPort *pioPort; - virtual void addressRanges(std::list<Range<Addr> > &range_list, - bool &owner) = 0; + virtual void addressRanges(AddrRangeList &range_list, bool &owner) = 0; virtual read(Packet &pkt) = 0; diff --git a/mem/bus.hh b/mem/bus.hh index e1b29bac6..e26065295 100644 --- a/mem/bus.hh +++ b/mem/bus.hh @@ -103,8 +103,7 @@ class Bus : public MemObject // downstream from this bus, yes? That is, the union of all // the 'owned' address ranges of all the other interfaces on // this bus... - virtual void addressRanges(std::list<Range<Addr> > &range_list, - bool &owner); + virtual void addressRanges(AddrRangeList &range_list, bool &owner); }; /** A count of the number of interfaces connected to this bus. */ diff --git a/mem/port.hh b/mem/port.hh index 3098b663c..c6dcb5d81 100644 --- a/mem/port.hh +++ b/mem/port.hh @@ -46,6 +46,15 @@ #include "mem/packet.hh" #include "mem/request.hh" +/** This typedef is used to clean up the parameter list of + * getDeviceAddressRanges() and getPeerAddressRanges(). It's declared + * outside the Port object since it's also used by some mem objects. + * Eventually we should move this typedef to wherever Addr is + * defined. + */ + +typedef std::list<Range<Addr> > AddrRangeList; + /** * Ports are used to interface memory objects to * each other. They will always come in pairs, and we refer to the other @@ -123,8 +132,9 @@ class Port an object wants to own some ranges and snoop on others, it will need to use two different ports. */ - virtual void recvAddressRangesQuery(std::list<Range<Addr> > &range_list, - bool &owner) { panic("??"); } + virtual void getDeviceAddressRanges(AddrRangeList &range_list, + bool &owner) + { panic("??"); } public: @@ -172,9 +182,8 @@ class Port /** Called by the associated device if it wishes to find out the address ranges connected to the peer ports devices. */ - void sendAddressRangesQuery(std::list<Range<Addr> > &range_list, - bool &owner) - { peer->recvAddressRangesQuery(range_list, owner); } + void getPeerAddressRanges(AddrRangeList &range_list, bool &owner) + { peer->getDeviceAddressRanges(range_list, owner); } // Do we need similar wrappers for sendAtomic()? If not, should // we drop the "Functional" from the names? |