bridge.cc (11192:4c28abcf8249) bridge.cc (11193:564e2e7e86f4)
1/*
2 * Copyright (c) 2011-2013, 2015 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

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

131{
132 // all checks are done when the request is accepted on the slave
133 // side, so we are guaranteed to have space for the response
134 DPRINTF(Bridge, "recvTimingResp: %s addr 0x%x\n",
135 pkt->cmdString(), pkt->getAddr());
136
137 DPRINTF(Bridge, "Request queue size: %d\n", transmitList.size());
138
1/*
2 * Copyright (c) 2011-2013, 2015 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

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

131{
132 // all checks are done when the request is accepted on the slave
133 // side, so we are guaranteed to have space for the response
134 DPRINTF(Bridge, "recvTimingResp: %s addr 0x%x\n",
135 pkt->cmdString(), pkt->getAddr());
136
137 DPRINTF(Bridge, "Request queue size: %d\n", transmitList.size());
138
139 // @todo: We need to pay for this and not just zero it out
139 // technically the packet only reaches us after the header delay,
140 // and typically we also need to deserialise any payload (unless
141 // the two sides of the bridge are synchronous)
142 Tick receive_delay = pkt->headerDelay + pkt->payloadDelay;
140 pkt->headerDelay = pkt->payloadDelay = 0;
141
143 pkt->headerDelay = pkt->payloadDelay = 0;
144
142 slavePort.schedTimingResp(pkt, bridge.clockEdge(delay));
145 slavePort.schedTimingResp(pkt, bridge.clockEdge(delay) +
146 receive_delay);
143
144 return true;
145}
146
147bool
148Bridge::BridgeSlavePort::recvTimingReq(PacketPtr pkt)
149{
150 DPRINTF(Bridge, "recvTimingReq: %s addr 0x%x\n",

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

186 ++outstandingResponses;
187
188 // no need to set retryReq to false as this is already the
189 // case
190 }
191 }
192
193 if (!retryReq) {
147
148 return true;
149}
150
151bool
152Bridge::BridgeSlavePort::recvTimingReq(PacketPtr pkt)
153{
154 DPRINTF(Bridge, "recvTimingReq: %s addr 0x%x\n",

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

190 ++outstandingResponses;
191
192 // no need to set retryReq to false as this is already the
193 // case
194 }
195 }
196
197 if (!retryReq) {
194 // @todo: We need to pay for this and not just zero it out
198 // technically the packet only reaches us after the header
199 // delay, and typically we also need to deserialise any
200 // payload (unless the two sides of the bridge are
201 // synchronous)
202 Tick receive_delay = pkt->headerDelay + pkt->payloadDelay;
195 pkt->headerDelay = pkt->payloadDelay = 0;
196
203 pkt->headerDelay = pkt->payloadDelay = 0;
204
197 masterPort.schedTimingReq(pkt, bridge.clockEdge(delay));
205 masterPort.schedTimingReq(pkt, bridge.clockEdge(delay) +
206 receive_delay);
198 }
199 }
200
201 // remember that we are now stalling a packet and that we have to
202 // tell the sending master to retry once space becomes available,
203 // we make no distinction whether the stalling is due to the
204 // request queue or response queue being full
205 return !retryReq;

--- 195 unchanged lines hidden ---
207 }
208 }
209
210 // remember that we are now stalling a packet and that we have to
211 // tell the sending master to retry once space becomes available,
212 // we make no distinction whether the stalling is due to the
213 // request queue or response queue being full
214 return !retryReq;

--- 195 unchanged lines hidden ---