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 --- |