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() <=