Port: Add getAddrRanges to master port (asking slave port)
This patch adds getAddrRanges to the master port, and thus avoids going through getSlavePort to be able to ask the slave. Similar to the previous patch that added isSnooping to the SlavePort, this patch aims to introduce an additional level of hierarchy in the ports (base port being protocol-agnostic) and getSlave/MasterPort will return port pointers to these base classes. The function is named getAddrRanges also on the master port, but does nothing besides asking the connected slave port. The slave port, as before, has to provide an implementation and actually produce a list of address ranges. The initial design used the name getSlaveAddrRanges for the new function, but the more verbose name was later changed.
This commit is contained in:
parent
49407d76aa
commit
830391cad9
|
@ -62,7 +62,8 @@ BadAddrEvent::process(ThreadContext *tc)
|
|||
|
||||
MasterPort &dataPort = tc->getCpuPtr()->getDataPort();
|
||||
|
||||
AddrRangeList resp = dataPort.getSlavePort().getAddrRanges();
|
||||
// get the address ranges of the connected slave port
|
||||
AddrRangeList resp = dataPort.getAddrRanges();
|
||||
for (iter = resp.begin(); iter != resp.end(); iter++) {
|
||||
if (*iter == (K0Seg2Phys(a0) & PAddrImplMask))
|
||||
found = true;
|
||||
|
|
|
@ -317,8 +317,9 @@ BaseBus::recvRangeChange(PortID master_port_id)
|
|||
defaultRange.clear();
|
||||
// Only try to update these ranges if the user set a default responder.
|
||||
if (useDefaultRange) {
|
||||
// get the address ranges of the connected slave port
|
||||
AddrRangeList ranges =
|
||||
masterPorts[master_port_id]->getSlavePort().getAddrRanges();
|
||||
masterPorts[master_port_id]->getAddrRanges();
|
||||
for(iter = ranges.begin(); iter != ranges.end(); iter++) {
|
||||
defaultRange.push_back(*iter);
|
||||
DPRINTF(BusAddrRanges, "Adding range %#llx - %#llx for default range\n",
|
||||
|
@ -339,7 +340,8 @@ BaseBus::recvRangeChange(PortID master_port_id)
|
|||
portIter++;
|
||||
}
|
||||
|
||||
ranges = port->getSlavePort().getAddrRanges();
|
||||
// get the address ranges of the connected slave port
|
||||
ranges = port->getAddrRanges();
|
||||
|
||||
for (iter = ranges.begin(); iter != ranges.end(); iter++) {
|
||||
DPRINTF(BusAddrRanges, "Adding range %#llx - %#llx for id %d\n",
|
||||
|
|
|
@ -347,7 +347,8 @@ CommMonitor::deviceBlockSizeSlave()
|
|||
AddrRangeList
|
||||
CommMonitor::getAddrRanges()
|
||||
{
|
||||
return masterPort.getSlavePort().getAddrRanges();
|
||||
// get the address ranges of the connected slave port
|
||||
return masterPort.getAddrRanges();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -103,6 +103,12 @@ MasterPort::peerBlockSize() const
|
|||
return _slavePort->deviceBlockSize();
|
||||
}
|
||||
|
||||
AddrRangeList
|
||||
MasterPort::getAddrRanges() const
|
||||
{
|
||||
return _slavePort->getAddrRanges();
|
||||
}
|
||||
|
||||
Tick
|
||||
MasterPort::sendAtomic(PacketPtr pkt)
|
||||
{
|
||||
|
|
|
@ -215,6 +215,11 @@ class MasterPort : public Port
|
|||
*/
|
||||
unsigned peerBlockSize() const;
|
||||
|
||||
/**
|
||||
* Get the address ranges of the connected slave port.
|
||||
*/
|
||||
AddrRangeList getAddrRanges() const;
|
||||
|
||||
/** Inject a PrintReq for the given address to print the state of
|
||||
* that address throughout the memory system. For debugging.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue