summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/ruby/Ruby.py2
-rw-r--r--src/mem/ruby/system/RubyPort.cc5
2 files changed, 5 insertions, 2 deletions
diff --git a/configs/ruby/Ruby.py b/configs/ruby/Ruby.py
index 6d78dd89d..3ee92c2f6 100644
--- a/configs/ruby/Ruby.py
+++ b/configs/ruby/Ruby.py
@@ -194,6 +194,8 @@ def create_system(options, full_system, system, piobus = None, dma_ports = []):
# independent of the protocol and kept in the protocol-agnostic
# part (i.e. here).
sys_port_proxy = RubyPortProxy(ruby_system = ruby)
+ if piobus is not None:
+ sys_port_proxy.pio_master_port = piobus.slave
# Give the system port proxy a SimObject parent without creating a
# full-fledged controller
diff --git a/src/mem/ruby/system/RubyPort.cc b/src/mem/ruby/system/RubyPort.cc
index bf4002126..7f0e6f82d 100644
--- a/src/mem/ruby/system/RubyPort.cc
+++ b/src/mem/ruby/system/RubyPort.cc
@@ -312,9 +312,10 @@ RubyPort::MemSlavePort::recvFunctional(PacketPtr pkt)
// Check for pio requests and directly send them to the dedicated
// pio port.
if (!isPhysMemAddress(pkt->getAddr())) {
- assert(rp->memMasterPort.isConnected());
DPRINTF(RubyPort, "Pio Request for address: 0x%#x\n", pkt->getAddr());
- panic("RubyPort::PioMasterPort::recvFunctional() not implemented!\n");
+ assert(rp->pioMasterPort.isConnected());
+ rp->pioMasterPort.sendFunctional(pkt);
+ return;
}
assert(pkt->getAddr() + pkt->getSize() <=