mshr.cc (12791:8f27b3c23a91) mshr.cc (12792:9af3470e24e7)
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

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

561 // response anyway. Since we got the writable copy there's no
562 // need to defer the targets, so move them up to the regular
563 // target list.
564 assert(!targets.needsWritable);
565 targets.needsWritable = true;
566 // if any of the deferred targets were upper-level cache
567 // requests marked downstreamPending, need to clear that
568 assert(!downstreamPending); // not pending here anymore
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

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

561 // response anyway. Since we got the writable copy there's no
562 // need to defer the targets, so move them up to the regular
563 // target list.
564 assert(!targets.needsWritable);
565 targets.needsWritable = true;
566 // if any of the deferred targets were upper-level cache
567 // requests marked downstreamPending, need to clear that
568 assert(!downstreamPending); // not pending here anymore
569 deferredTargets.clearDownstreamPending();
570 // this clears out deferredTargets too
571 targets.splice(targets.end(), deferredTargets);
572 deferredTargets.resetFlags();
569
570 auto last_it = std::find_if(
571 deferredTargets.begin(), deferredTargets.end(),
572 [](MSHR::Target &t) {
573 assert(t.source == Target::FromCPU);
574 return t.pkt->req->isCacheInvalidate();
575 });
576 deferredTargets.clearDownstreamPending(deferredTargets.begin(),
577 last_it);
578 targets.splice(targets.end(), deferredTargets,
579 deferredTargets.begin(), last_it);
580 // We need to update the flags for the target lists after the
581 // modifications
582 deferredTargets.populateFlags();
573 }
574}
575
576
577bool
578MSHR::checkFunctional(PacketPtr pkt)
579{
580 // For printing, we treat the MSHR as a whole as single entity.

--- 50 unchanged lines hidden ---
583 }
584}
585
586
587bool
588MSHR::checkFunctional(PacketPtr pkt)
589{
590 // For printing, we treat the MSHR as a whole as single entity.

--- 50 unchanged lines hidden ---