diff -r e183cc4edbc5 -r 85173f3261a2 src/arch/x86/interrupts.hh --- a/src/arch/x86/interrupts.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/arch/x86/interrupts.hh Fri Jun 08 17:56:45 2012 +0100 @@ -236,8 +236,8 @@ return entry.periodic; } - AddrRangeList getAddrRanges(); - AddrRangeList getIntAddrRange(); + AddrRangeList getAddrRanges() const; + AddrRangeList getIntAddrRange() const; MasterPort &getMasterPort(const std::string &if_name, int idx = -1) { diff -r e183cc4edbc5 -r 85173f3261a2 src/arch/x86/interrupts.cc --- a/src/arch/x86/interrupts.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/arch/x86/interrupts.cc Fri Jun 08 17:56:45 2012 +0100 @@ -303,6 +303,7 @@ cpu = newCPU; initialApicId = cpu->cpuId(); regs[APIC_ID] = (initialApicId << 24); + pioAddr = x86LocalAPICAddress(initialApicId, 0); } @@ -367,20 +368,19 @@ AddrRangeList -X86ISA::Interrupts::getAddrRanges() +X86ISA::Interrupts::getAddrRanges() const { AddrRangeList ranges; Range range = RangeEx(x86LocalAPICAddress(initialApicId, 0), x86LocalAPICAddress(initialApicId, 0) + PageBytes); ranges.push_back(range); - pioAddr = range.start; return ranges; } AddrRangeList -X86ISA::Interrupts::getIntAddrRange() +X86ISA::Interrupts::getIntAddrRange() const { AddrRangeList ranges; ranges.push_back(RangeEx(x86InterruptAddress(initialApicId, 0), diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/arm/gic.hh --- a/src/dev/arm/gic.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/arm/gic.hh Fri Jun 08 17:56:45 2012 +0100 @@ -261,7 +261,7 @@ /** Return the address ranges used by the Gic * This is the distributor address + all cpu addresses */ - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; /** A PIO read to the device, immediately split up into * readDistributor() or readCpu() diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/arm/gic.cc --- a/src/dev/arm/gic.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/arm/gic.cc Fri Jun 08 17:56:45 2012 +0100 @@ -708,7 +708,7 @@ } AddrRangeList -Gic::getAddrRanges() +Gic::getAddrRanges() const { AddrRangeList ranges; ranges.push_back(RangeSize(distAddr, DIST_SIZE)); diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/arm/pl111.hh --- a/src/dev/arm/pl111.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/arm/pl111.hh Fri Jun 08 17:56:45 2012 +0100 @@ -328,7 +328,7 @@ * * @return a list of non-overlapping address ranges */ - AddrRangeList getAddrRanges(); + AddrRangeList getAddrRanges() const; }; #endif diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/arm/pl111.cc --- a/src/dev/arm/pl111.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/arm/pl111.cc Fri Jun 08 17:56:45 2012 +0100 @@ -741,7 +741,7 @@ } AddrRangeList -Pl111::getAddrRanges() +Pl111::getAddrRanges() const { AddrRangeList ranges; ranges.push_back(RangeSize(pioAddr, pioSize)); diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/io_device.hh --- a/src/dev/io_device.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/io_device.hh Fri Jun 08 17:56:45 2012 +0100 @@ -67,7 +67,7 @@ virtual Tick recvAtomic(PacketPtr pkt); - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; public: @@ -96,7 +96,7 @@ * * @return a list of non-overlapping address ranges */ - virtual AddrRangeList getAddrRanges() = 0; + virtual AddrRangeList getAddrRanges() const = 0; /** Pure virtual function that the device must implement. Called * when a read command is recieved by the port. @@ -160,7 +160,7 @@ * * @return a list of non-overlapping address ranges */ - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; }; diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/io_device.cc --- a/src/dev/io_device.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/io_device.cc Fri Jun 08 17:56:45 2012 +0100 @@ -58,7 +58,7 @@ } AddrRangeList -PioPort::getAddrRanges() +PioPort::getAddrRanges() const { return device->getAddrRanges(); } @@ -106,7 +106,7 @@ {} AddrRangeList -BasicPioDevice::getAddrRanges() +BasicPioDevice::getAddrRanges() const { assert(pioSize != 0); AddrRangeList ranges; diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/pciconfigall.hh --- a/src/dev/pciconfigall.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/pciconfigall.hh Fri Jun 08 17:56:45 2012 +0100 @@ -80,7 +80,7 @@ virtual Tick write(PacketPtr pkt); - AddrRangeList getAddrRanges(); + AddrRangeList getAddrRanges() const; private: Addr pioAddr; diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/pciconfigall.cc --- a/src/dev/pciconfigall.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/pciconfigall.cc Fri Jun 08 17:56:45 2012 +0100 @@ -85,7 +85,7 @@ AddrRangeList -PciConfigAll::getAddrRanges() +PciConfigAll::getAddrRanges() const { AddrRangeList ranges; ranges.push_back(RangeSize(pioAddr, params()->size)); diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/pcidev.hh --- a/src/dev/pcidev.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/pcidev.hh Fri Jun 08 17:56:45 2012 +0100 @@ -65,7 +65,7 @@ virtual Tick recvAtomic(PacketPtr pkt); - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; Platform *platform; @@ -191,7 +191,7 @@ * * @return a list of non-overlapping address ranges */ - AddrRangeList getAddrRanges(); + AddrRangeList getAddrRanges() const; /** * Constructor for PCI Dev. This function copies data from the diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/pcidev.cc --- a/src/dev/pcidev.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/pcidev.cc Fri Jun 08 17:56:45 2012 +0100 @@ -71,7 +71,7 @@ } AddrRangeList -PciDev::PciConfigPort::getAddrRanges() +PciDev::PciConfigPort::getAddrRanges() const { AddrRangeList ranges; if (configAddr != ULL(-1)) @@ -208,7 +208,7 @@ } AddrRangeList -PciDev::getAddrRanges() +PciDev::getAddrRanges() const { AddrRangeList ranges; int x = 0; diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/sparc/iob.hh --- a/src/dev/sparc/iob.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/sparc/iob.hh Fri Jun 08 17:56:45 2012 +0100 @@ -141,7 +141,7 @@ bool receiveJBusInterrupt(int cpu_id, int source, uint64_t d0, uint64_t d1); - AddrRangeList getAddrRanges(); + AddrRangeList getAddrRanges() const; virtual void serialize(std::ostream &os); virtual void unserialize(Checkpoint *cp, const std::string §ion); diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/sparc/iob.cc --- a/src/dev/sparc/iob.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/sparc/iob.cc Fri Jun 08 17:56:45 2012 +0100 @@ -324,7 +324,7 @@ } AddrRangeList -Iob::getAddrRanges() +Iob::getAddrRanges() const { AddrRangeList ranges; ranges.push_back(RangeSize(iobManAddr, iobManSize)); diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/uart8250.hh --- a/src/dev/uart8250.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/uart8250.hh Fri Jun 08 17:56:45 2012 +0100 @@ -100,7 +100,7 @@ virtual Tick read(PacketPtr pkt); virtual Tick write(PacketPtr pkt); - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; /** * Inform the uart that there is data available. diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/uart8250.cc --- a/src/dev/uart8250.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/uart8250.cc Fri Jun 08 17:56:45 2012 +0100 @@ -287,7 +287,7 @@ } AddrRangeList -Uart8250::getAddrRanges() +Uart8250::getAddrRanges() const { AddrRangeList ranges; ranges.push_back(RangeSize(pioAddr, pioSize)); diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/x86/i8042.hh --- a/src/dev/x86/i8042.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/x86/i8042.hh Fri Jun 08 17:56:45 2012 +0100 @@ -255,7 +255,7 @@ commandByte.keyboardFullInt = 1; } - AddrRangeList getAddrRanges(); + AddrRangeList getAddrRanges() const; Tick read(PacketPtr pkt); diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/x86/i8042.cc --- a/src/dev/x86/i8042.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/x86/i8042.cc Fri Jun 08 17:56:45 2012 +0100 @@ -44,9 +44,10 @@ const uint8_t BatSuccessful = 0xaa; AddrRangeList -X86ISA::I8042::getAddrRanges() +X86ISA::I8042::getAddrRanges() const { AddrRangeList ranges; + // TODO: Are these really supposed to be a single byte and not 4? ranges.push_back(RangeSize(dataPort, 1)); ranges.push_back(RangeSize(commandPort, 1)); return ranges; diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/x86/i82094aa.hh --- a/src/dev/x86/i82094aa.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/x86/i82094aa.hh Fri Jun 08 17:56:45 2012 +0100 @@ -101,7 +101,7 @@ Tick read(PacketPtr pkt); Tick write(PacketPtr pkt); - AddrRangeList getAddrRanges() + AddrRangeList getAddrRanges() const { AddrRangeList ranges; ranges.push_back(RangeEx(pioAddr, pioAddr + 4)); @@ -109,7 +109,7 @@ return ranges; } - AddrRangeList getIntAddrRange() + AddrRangeList getIntAddrRange() const { AddrRangeList ranges; ranges.push_back(RangeEx(x86InterruptAddress(initialApicId, 0), diff -r e183cc4edbc5 -r 85173f3261a2 src/dev/x86/intdev.hh --- a/src/dev/x86/intdev.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/dev/x86/intdev.hh Fri Jun 08 17:56:45 2012 +0100 @@ -74,7 +74,7 @@ { } - AddrRangeList getAddrRanges() + AddrRangeList getAddrRanges() const { return device->getIntAddrRange(); } @@ -152,7 +152,7 @@ } virtual AddrRangeList - getIntAddrRange() + getIntAddrRange() const { panic("intAddrRange not implemented.\n"); } diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/bridge.hh --- a/src/mem/bridge.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/bridge.hh Fri Jun 08 17:56:45 2012 +0100 @@ -276,7 +276,7 @@ /** When receiving a address range request the peer port, pass it to the bridge. */ - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; }; diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/bridge.cc --- a/src/mem/bridge.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/bridge.cc Fri Jun 08 17:56:45 2012 +0100 @@ -443,7 +443,7 @@ } AddrRangeList -Bridge::BridgeSlavePort::getAddrRanges() +Bridge::BridgeSlavePort::getAddrRanges() const { return ranges; } diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/bus.hh --- a/src/mem/bus.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/bus.hh Fri Jun 08 17:56:45 2012 +0100 @@ -85,7 +85,8 @@ Event * drainEvent; - typedef range_map::iterator PortIter; + typedef range_map::iterator PortMapIter; + typedef range_map::const_iterator PortMapConstIter; range_map portMap; AddrRangeList defaultRange; @@ -187,7 +188,7 @@ * * @return a list of non-overlapping address ranges */ - AddrRangeList getAddrRanges(); + AddrRangeList getAddrRanges() const; /** Calculate the timing parameters for the packet. Updates the * firstWordTime and finishTime fields of the packet object. diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/bus.cc --- a/src/mem/bus.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/bus.cc Fri Jun 08 17:56:45 2012 +0100 @@ -269,7 +269,7 @@ return dest_id; // Check normal port ranges - PortIter i = portMap.find(RangeSize(addr,1)); + PortMapConstIter i = portMap.find(RangeSize(addr,1)); if (i != portMap.end()) { dest_id = i->second; updatePortCache(dest_id, i->first.start, i->first.end); @@ -278,8 +278,8 @@ // Check if this matches the default range if (useDefaultRange) { - AddrRangeIter a_end = defaultRange.end(); - for (AddrRangeIter i = defaultRange.begin(); i != a_end; i++) { + AddrRangeConstIter a_end = defaultRange.end(); + for (AddrRangeConstIter i = defaultRange.begin(); i != a_end; i++) { if (*i == addr) { DPRINTF(BusAddrRanges, " found addr %#llx on default\n", addr); @@ -332,7 +332,7 @@ MasterPort *port = masterPorts[master_port_id]; // Clean out any previously existent ids - for (PortIter portIter = portMap.begin(); + for (PortMapIter portIter = portMap.begin(); portIter != portMap.end(); ) { if (portIter->second == master_port_id) portMap.erase(portIter++); @@ -367,22 +367,22 @@ } AddrRangeList -BaseBus::getAddrRanges() +BaseBus::getAddrRanges() const { AddrRangeList ranges; DPRINTF(BusAddrRanges, "received address range request, returning:\n"); - for (AddrRangeIter dflt_iter = defaultRange.begin(); + for (AddrRangeConstIter dflt_iter = defaultRange.begin(); dflt_iter != defaultRange.end(); dflt_iter++) { ranges.push_back(*dflt_iter); DPRINTF(BusAddrRanges, " -- Dflt: %#llx : %#llx\n",dflt_iter->start, dflt_iter->end); } - for (PortIter portIter = portMap.begin(); + for (PortMapConstIter portIter = portMap.begin(); portIter != portMap.end(); portIter++) { bool subset = false; - for (AddrRangeIter dflt_iter = defaultRange.begin(); + for (AddrRangeConstIter dflt_iter = defaultRange.begin(); dflt_iter != defaultRange.end(); dflt_iter++) { if ((portIter->first.start < dflt_iter->start && portIter->first.end >= dflt_iter->start) || diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/cache/cache.hh --- a/src/mem/cache/cache.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/cache/cache.hh Fri Jun 08 17:56:45 2012 +0100 @@ -101,7 +101,7 @@ virtual unsigned deviceBlockSize() const { return cache->getBlockSize(); } - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; public: diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/cache/cache_impl.hh --- a/src/mem/cache/cache_impl.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/cache/cache_impl.hh Fri Jun 08 17:56:45 2012 +0100 @@ -1588,7 +1588,7 @@ template AddrRangeList -Cache::CpuSidePort::getAddrRanges() +Cache::CpuSidePort::getAddrRanges() const { return cache->getAddrRanges(); } diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/coherent_bus.hh --- a/src/mem/coherent_bus.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/coherent_bus.hh Fri Jun 08 17:56:45 2012 +0100 @@ -124,7 +124,7 @@ /** * Return the union of all adress ranges seen by this bus. */ - virtual AddrRangeList getAddrRanges() + virtual AddrRangeList getAddrRanges() const { return bus.getAddrRanges(); } /** diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/comm_monitor.hh --- a/src/mem/comm_monitor.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/comm_monitor.hh Fri Jun 08 17:56:45 2012 +0100 @@ -230,7 +230,7 @@ return mon.deviceBlockSizeSlave(); } - AddrRangeList getAddrRanges() + AddrRangeList getAddrRanges() const { return mon.getAddrRanges(); } @@ -269,7 +269,7 @@ unsigned deviceBlockSizeSlave(); - AddrRangeList getAddrRanges(); + AddrRangeList getAddrRanges() const; bool isSnooping() const; diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/comm_monitor.cc --- a/src/mem/comm_monitor.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/comm_monitor.cc Fri Jun 08 17:56:45 2012 +0100 @@ -345,7 +345,7 @@ } AddrRangeList -CommMonitor::getAddrRanges() +CommMonitor::getAddrRanges() const { // get the address ranges of the connected slave port return masterPort.getAddrRanges(); diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/noncoherent_bus.hh --- a/src/mem/noncoherent_bus.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/noncoherent_bus.hh Fri Jun 08 17:56:45 2012 +0100 @@ -120,7 +120,7 @@ /** * Return the union of all adress ranges seen by this bus. */ - virtual AddrRangeList getAddrRanges() + virtual AddrRangeList getAddrRanges() const { return bus.getAddrRanges(); } /** diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/port.hh --- a/src/mem/port.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/port.hh Fri Jun 08 17:56:45 2012 +0100 @@ -64,6 +64,7 @@ typedef std::list > AddrRangeList; typedef std::list >::iterator AddrRangeIter; +typedef std::list >::const_iterator AddrRangeConstIter; class MemObject; @@ -379,7 +380,7 @@ * * @return a list of ranges responded to */ - virtual AddrRangeList getAddrRanges() = 0; + virtual AddrRangeList getAddrRanges() const = 0; protected: diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/ruby/system/RubyPort.hh --- a/src/mem/ruby/system/RubyPort.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/ruby/system/RubyPort.hh Fri Jun 08 17:56:45 2012 +0100 @@ -86,7 +86,7 @@ virtual bool recvTimingReq(PacketPtr pkt); virtual Tick recvAtomic(PacketPtr pkt); virtual void recvFunctional(PacketPtr pkt); - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; private: bool isPhysMemAddress(Addr addr); diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/ruby/system/RubyPort.cc --- a/src/mem/ruby/system/RubyPort.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/ruby/system/RubyPort.cc Fri Jun 08 17:56:45 2012 +0100 @@ -669,7 +669,7 @@ } AddrRangeList -RubyPort::M5Port::getAddrRanges() +RubyPort::M5Port::getAddrRanges() const { // at the moment the assumption is that the master does not care AddrRangeList ranges; diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/simple_mem.hh --- a/src/mem/simple_mem.hh Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/simple_mem.hh Fri Jun 08 17:56:45 2012 +0100 @@ -77,7 +77,7 @@ virtual void recvFunctional(PacketPtr pkt); - virtual AddrRangeList getAddrRanges(); + virtual AddrRangeList getAddrRanges() const; }; diff -r e183cc4edbc5 -r 85173f3261a2 src/mem/simple_mem.cc --- a/src/mem/simple_mem.cc Fri Jun 08 17:56:45 2012 +0100 +++ b/src/mem/simple_mem.cc Fri Jun 08 17:56:45 2012 +0100 @@ -132,7 +132,7 @@ { } AddrRangeList -SimpleMemory::MemoryPort::getAddrRanges() +SimpleMemory::MemoryPort::getAddrRanges() const { AddrRangeList ranges; ranges.push_back(memory.getAddrRange());