coherent_xbar.cc (11188:091531fa23ad) coherent_xbar.cc (11190:0964165d1857)
1/*
2 * Copyright (c) 2011-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

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

135 // its own internal representation
136 if (snoopFilter)
137 snoopFilter->setSlavePorts(slavePorts);
138}
139
140bool
141CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id)
142{
1/*
2 * Copyright (c) 2011-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

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

135 // its own internal representation
136 if (snoopFilter)
137 snoopFilter->setSlavePorts(slavePorts);
138}
139
140bool
141CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id)
142{
143 // @todo temporary hack to deal with memory corruption issue until
144 // 4-phase transactions are complete
145 for (int x = 0; x < pendingDelete.size(); x++)
146 delete pendingDelete[x];
147 pendingDelete.clear();
148
149 // determine the source port based on the id
150 SlavePort *src_port = slavePorts[slave_port_id];
151
152 // remember if the packet is an express snoop
153 bool is_express_snoop = pkt->isExpressSnoop();
154 bool is_inhibited = pkt->memInhibitAsserted();
155 // for normal requests, going downstream, the express snoop flag
156 // and the inhibited flag should always be the same

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

218 // this is a clean evict, but the packet is found in a cache, do
219 // not forward it
220 if (pkt->cmd == MemCmd::CleanEvict && pkt->isBlockCached()) {
221 DPRINTF(CoherentXBar, "recvTimingReq: Clean evict 0x%x still cached, "
222 "not forwarding\n", pkt->getAddr());
223
224 // update the layer state and schedule an idle event
225 reqLayers[master_port_id]->succeededTiming(packetFinishTime);
143 // determine the source port based on the id
144 SlavePort *src_port = slavePorts[slave_port_id];
145
146 // remember if the packet is an express snoop
147 bool is_express_snoop = pkt->isExpressSnoop();
148 bool is_inhibited = pkt->memInhibitAsserted();
149 // for normal requests, going downstream, the express snoop flag
150 // and the inhibited flag should always be the same

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

212 // this is a clean evict, but the packet is found in a cache, do
213 // not forward it
214 if (pkt->cmd == MemCmd::CleanEvict && pkt->isBlockCached()) {
215 DPRINTF(CoherentXBar, "recvTimingReq: Clean evict 0x%x still cached, "
216 "not forwarding\n", pkt->getAddr());
217
218 // update the layer state and schedule an idle event
219 reqLayers[master_port_id]->succeededTiming(packetFinishTime);
226 pendingDelete.push_back(pkt);
220
221 // queue the packet for deletion
222 pendingDelete.reset(pkt);
223
227 return true;
228 }
229
230 // remember if the packet will generate a snoop response
231 const bool expect_snoop_resp = !is_inhibited && pkt->memInhibitAsserted();
232 const bool expect_response = pkt->needsResponse() &&
233 !pkt->memInhibitAsserted();
234

--- 663 unchanged lines hidden ---
224 return true;
225 }
226
227 // remember if the packet will generate a snoop response
228 const bool expect_snoop_resp = !is_inhibited && pkt->memInhibitAsserted();
229 const bool expect_response = pkt->needsResponse() &&
230 !pkt->memInhibitAsserted();
231

--- 663 unchanged lines hidden ---