183,187d182
< // In FS mode, ruby memory will receive pio responses from devices
< // and it must forward these responses back to the particular CPU.
< DPRINTF(RubyPort, "Pio response for address %#x, going to %d\n",
< pkt->getAddr(), pkt->getDest());
<
194a190,194
> // In FS mode, ruby memory will receive pio responses from devices
> // and it must forward these responses back to the particular CPU.
> DPRINTF(RubyPort, "Pio response for address %#x, going to %s\n",
> pkt->getAddr(), port->name());
>
249,251d248
< // Save the port id to be used later to route the response
< pkt->setSrc(id);
<
261a259,262
> // Save the port in the sender state object to be used later to
> // route the response
> pkt->pushSenderState(new SenderState(this));
>
346,348c347,352
< // As it has not yet been turned around, the source field tells us
< // which port it came from.
< assert(pkt->getSrc() < slave_ports.size());
---
> // First we must retrieve the request port from the sender State
> RubyPort::SenderState *senderState =
> safe_cast<RubyPort::SenderState *>(pkt->popSenderState());
> MemSlavePort *port = senderState->port;
> assert(port != NULL);
> delete senderState;
350c354
< slave_ports[pkt->getSrc()]->hitCallback(pkt);
---
> port->hitCallback(pkt);