base.cc (12820:5d66b60a2c47) | base.cc (12823:ba630bc7a36d) |
---|---|
1/* 2 * Copyright (c) 2012-2013, 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 --- 650 unchanged lines hidden (view full) --- 659 660 // Note that just because an L2/L3 has valid data doesn't mean an 661 // L1 doesn't have a more up-to-date modified copy that still 662 // needs to be found. As a result we always update the request if 663 // we have it, but only declare it satisfied if we are the owner. 664 665 // see if we have data at all (owned or otherwise) 666 bool have_data = blk && blk->isValid() | 1/* 2 * Copyright (c) 2012-2013, 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 --- 650 unchanged lines hidden (view full) --- 659 660 // Note that just because an L2/L3 has valid data doesn't mean an 661 // L1 doesn't have a more up-to-date modified copy that still 662 // needs to be found. As a result we always update the request if 663 // we have it, but only declare it satisfied if we are the owner. 664 665 // see if we have data at all (owned or otherwise) 666 bool have_data = blk && blk->isValid() |
667 && pkt->checkFunctional(&cbpw, blk_addr, is_secure, blkSize, 668 blk->data); | 667 && pkt->trySatisfyFunctional(&cbpw, blk_addr, is_secure, blkSize, 668 blk->data); |
669 670 // data we have is dirty if marked as such or if we have an 671 // in-service MSHR that is pending a modified line 672 bool have_dirty = 673 have_data && (blk->isDirty() || 674 (mshr && mshr->inService && mshr->isPendingModified())); 675 676 bool done = have_dirty || | 669 670 // data we have is dirty if marked as such or if we have an 671 // in-service MSHR that is pending a modified line 672 bool have_dirty = 673 have_data && (blk->isDirty() || 674 (mshr && mshr->inService && mshr->isPendingModified())); 675 676 bool done = have_dirty || |
677 cpuSidePort.checkFunctional(pkt) || 678 mshrQueue.checkFunctional(pkt, blk_addr) || 679 writeBuffer.checkFunctional(pkt, blk_addr) || 680 memSidePort.checkFunctional(pkt); | 677 cpuSidePort.trySatisfyFunctional(pkt) || 678 mshrQueue.trySatisfyFunctional(pkt, blk_addr) || 679 writeBuffer.trySatisfyFunctional(pkt, blk_addr) || 680 memSidePort.trySatisfyFunctional(pkt); |
681 682 DPRINTF(CacheVerbose, "%s: %s %s%s%s\n", __func__, pkt->print(), 683 (blk && blk->isValid()) ? "valid " : "", 684 have_data ? "data " : "", done ? "done " : ""); 685 686 // We're leaving the cache, so pop cache->name() label 687 pkt->popLabel(); 688 --- 1667 unchanged lines hidden --- | 681 682 DPRINTF(CacheVerbose, "%s: %s %s%s%s\n", __func__, pkt->print(), 683 (blk && blk->isValid()) ? "valid " : "", 684 have_data ? "data " : "", done ? "done " : ""); 685 686 // We're leaving the cache, so pop cache->name() label 687 pkt->popLabel(); 688 --- 1667 unchanged lines hidden --- |