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->popSenderState());
155 M5Port *port = senderState->port;
156 assert(port != NULL);
157 delete senderState;
158
159 port->sendTimingResp(pkt);
160
161 return true;
162}
163
164bool

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

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

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

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

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

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

--- 197 unchanged lines hidden ---