mshr.cc (12793:dda6af979353) mshr.cc (12823:ba630bc7a36d)
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

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

202void
203MSHR::TargetList::clearDownstreamPending()
204{
205 clearDownstreamPending(begin(), end());
206}
207
208
209bool
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

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

202void
203MSHR::TargetList::clearDownstreamPending()
204{
205 clearDownstreamPending(begin(), end());
206}
207
208
209bool
210MSHR::TargetList::checkFunctional(PacketPtr pkt)
210MSHR::TargetList::trySatisfyFunctional(PacketPtr pkt)
211{
212 for (auto& t : *this) {
211{
212 for (auto& t : *this) {
213 if (pkt->checkFunctional(t.pkt)) {
213 if (pkt->trySatisfyFunctional(t.pkt)) {
214 return true;
215 }
216 }
217
218 return false;
219}
220
221

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

613 };
614
615 promoteIf(pred);
616 }
617}
618
619
620bool
214 return true;
215 }
216 }
217
218 return false;
219}
220
221

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

613 };
614
615 promoteIf(pred);
616 }
617}
618
619
620bool
621MSHR::checkFunctional(PacketPtr pkt)
621MSHR::trySatisfyFunctional(PacketPtr pkt)
622{
623 // For printing, we treat the MSHR as a whole as single entity.
624 // For other requests, we iterate over the individual targets
625 // since that's where the actual data lies.
626 if (pkt->isPrint()) {
622{
623 // For printing, we treat the MSHR as a whole as single entity.
624 // For other requests, we iterate over the individual targets
625 // since that's where the actual data lies.
626 if (pkt->isPrint()) {
627 pkt->checkFunctional(this, blkAddr, isSecure, blkSize, nullptr);
627 pkt->trySatisfyFunctional(this, blkAddr, isSecure, blkSize, nullptr);
628 return false;
629 } else {
628 return false;
629 } else {
630 return (targets.checkFunctional(pkt) ||
631 deferredTargets.checkFunctional(pkt));
630 return (targets.trySatisfyFunctional(pkt) ||
631 deferredTargets.trySatisfyFunctional(pkt));
632 }
633}
634
635bool
636MSHR::sendPacket(BaseCache &cache)
637{
638 return cache.sendMSHRQueuePacket(this);
639}

--- 34 unchanged lines hidden ---
632 }
633}
634
635bool
636MSHR::sendPacket(BaseCache &cache)
637{
638 return cache.sendMSHRQueuePacket(this);
639}

--- 34 unchanged lines hidden ---