mshr.cc (12749:223c83ed9979) mshr.cc (12791:8f27b3c23a91)
1/*
2 * Copyright (c) 2012-2013, 2015-2018 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

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

174 replaceUpgrade(t.pkt);
175 }
176
177 hasUpgrade = false;
178}
179
180
181void
1/*
2 * Copyright (c) 2012-2013, 2015-2018 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

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

174 replaceUpgrade(t.pkt);
175 }
176
177 hasUpgrade = false;
178}
179
180
181void
182MSHR::TargetList::clearDownstreamPending()
182MSHR::TargetList::clearDownstreamPending(MSHR::TargetList::iterator begin,
183 MSHR::TargetList::iterator end)
183{
184{
184 for (auto& t : *this) {
185 if (t.markedPending) {
185 for (auto t = begin; t != end; t++) {
186 if (t->markedPending) {
186 // Iterate over the SenderState stack and see if we find
187 // an MSHR entry. If we find one, clear the
188 // downstreamPending flag by calling
189 // clearDownstreamPending(). This recursively clears the
190 // downstreamPending flag in all caches this packet has
191 // passed through.
187 // Iterate over the SenderState stack and see if we find
188 // an MSHR entry. If we find one, clear the
189 // downstreamPending flag by calling
190 // clearDownstreamPending(). This recursively clears the
191 // downstreamPending flag in all caches this packet has
192 // passed through.
192 MSHR *mshr = t.pkt->findNextSenderState<MSHR>();
193 MSHR *mshr = t->pkt->findNextSenderState<MSHR>();
193 if (mshr != nullptr) {
194 mshr->clearDownstreamPending();
195 }
194 if (mshr != nullptr) {
195 mshr->clearDownstreamPending();
196 }
196 t.markedPending = false;
197 t->markedPending = false;
197 }
198 }
199}
200
198 }
199 }
200}
201
202void
203MSHR::TargetList::clearDownstreamPending()
204{
205 clearDownstreamPending(begin(), end());
206}
201
207
208
202bool
203MSHR::TargetList::checkFunctional(PacketPtr pkt)
204{
205 for (auto& t : *this) {
206 if (pkt->checkFunctional(t.pkt)) {
207 return true;
208 }
209 }

--- 414 unchanged lines hidden ---
209bool
210MSHR::TargetList::checkFunctional(PacketPtr pkt)
211{
212 for (auto& t : *this) {
213 if (pkt->checkFunctional(t.pkt)) {
214 return true;
215 }
216 }

--- 414 unchanged lines hidden ---