Deleted Added
sdiff udiff text old ( 9508:dde110931867 ) new ( 9542:683991c46ac8 )
full compact
1/*
2 * Copyright (c) 2012 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 137 unchanged lines hidden (view full) ---

146RubyPort::PioPort::recvTimingResp(PacketPtr pkt)
147{
148 // In FS mode, ruby memory will receive pio responses from devices
149 // and it must forward these responses back to the particular CPU.
150 DPRINTF(RubyPort, "Pio response for address %#x\n", pkt->getAddr());
151
152 // First we must retrieve the request port from the sender State
153 RubyPort::SenderState *senderState =
154 safe_cast<RubyPort::SenderState *>(pkt->senderState);
155 M5Port *port = senderState->port;
156 assert(port != NULL);
157
158 // pop the sender state from the packet
159 pkt->senderState = senderState->saved;
160 delete senderState;
161
162 port->sendTimingResp(pkt);
163
164 return true;
165}
166
167bool

--- 14 unchanged lines hidden (view full) ---

182 // snooper will supply based on copy of packet
183 // still target's responsibility to delete packet
184 delete pkt;
185 return true;
186 }
187
188 // Save the port in the sender state object to be used later to
189 // route the response
190 pkt->senderState = new SenderState(this, pkt->senderState);
191
192 // Check for pio requests and directly send them to the dedicated
193 // pio port.
194 if (!isPhysMemAddress(pkt->getAddr())) {
195 assert(ruby_port->pio_port.isConnected());
196 DPRINTF(RubyPort,
197 "Request for address 0x%#x is assumed to be a pio request\n",
198 pkt->getAddr());

--- 26 unchanged lines hidden (view full) ---

225 ruby_port->addToRetryList(this);
226 }
227
228 DPRINTF(RubyPort,
229 "Request for address %#x did not issue because %s\n",
230 pkt->getAddr(), RequestStatus_to_string(requestStatus));
231
232 SenderState* senderState = safe_cast<SenderState*>(pkt->senderState);
233 pkt->senderState = senderState->saved;
234 delete senderState;
235 return false;
236}
237
238void
239RubyPort::M5Port::recvFunctional(PacketPtr pkt)
240{
241 DPRINTF(RubyPort, "Functional access caught for address %#x\n",

--- 58 unchanged lines hidden (view full) ---

300{
301 // Retrieve the request port from the sender State
302 RubyPort::SenderState *senderState =
303 safe_cast<RubyPort::SenderState *>(pkt->senderState);
304 M5Port *port = senderState->port;
305 assert(port != NULL);
306
307 // pop the sender state from the packet
308 pkt->senderState = senderState->saved;
309 delete senderState;
310
311 port->hitCallback(pkt);
312
313 //
314 // If we had to stall the M5Ports, wake them up because the sequencer
315 // likely has free resources now.
316 //

--- 197 unchanged lines hidden ---