misc: Move AddrRangeList from port.hh to addr_range.hh

The new location seems like a better fit. The iterator typedefs are
removed in favour of using C++11 auto.
This commit is contained in:
Andreas Hansson 2014-10-16 05:49:59 -04:00
parent e6ad39adac
commit edc77fc03c
4 changed files with 10 additions and 18 deletions

View file

@ -45,6 +45,7 @@
#ifndef __BASE_ADDR_RANGE_HH__
#define __BASE_ADDR_RANGE_HH__
#include <list>
#include <vector>
#include "base/bitfield.hh"
@ -293,6 +294,11 @@ class AddrRange
#endif // SWIG
};
/**
* Convenience typedef for a collection of address ranges
*/
typedef std::list<AddrRange> AddrRangeList;
inline AddrRange
RangeEx(Addr start, Addr end)
{ return AddrRange(start, end - 1); }

View file

@ -57,15 +57,14 @@ BadAddrEvent::process(ThreadContext *tc)
uint64_t a0 = tc->readIntReg(16);
AddrRangeIter iter;
bool found = false;
MasterPort &dataPort = tc->getCpuPtr()->getDataPort();
// get the address ranges of the connected slave port
AddrRangeList resp = dataPort.getAddrRanges();
for (iter = resp.begin(); iter != resp.end(); iter++) {
if (iter->contains(K0Seg2Phys(a0) & PAddrImplMask))
for (const auto &iter : resp) {
if (iter.contains(K0Seg2Phys(a0) & PAddrImplMask))
found = true;
}

View file

@ -50,22 +50,9 @@
#ifndef __MEM_PORT_HH__
#define __MEM_PORT_HH__
#include <list>
#include "base/addr_range.hh"
#include "mem/packet.hh"
/**
* This typedef is used to clean up getAddrRanges(). 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<AddrRange> AddrRangeList;
typedef std::list<AddrRange>::iterator AddrRangeIter;
typedef std::list<AddrRange>::const_iterator AddrRangeConstIter;
class MemObject;
/**

View file

@ -526,8 +526,8 @@ RubyPort::PioSlavePort::getAddrRanges() const
ranges.splice(ranges.begin(),
ruby_port->master_ports[i]->getAddrRanges());
}
for (AddrRangeConstIter r = ranges.begin(); r != ranges.end(); ++r)
DPRINTF(RubyPort, "%s\n", r->to_string());
for (const auto M5_VAR_USED &r : ranges)
DPRINTF(RubyPort, "%s\n", r.to_string());
return ranges;
}