base.cc (12766:1c347e60c7fd) | base.cc (12794:ba78a382b0f6) |
---|---|
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 --- 477 unchanged lines hidden (view full) --- 486 blk = handleFill(pkt, blk, writebacks, mshr->allocOnFill()); 487 assert(blk != nullptr); 488 } 489 490 if (blk && blk->isValid() && pkt->isClean() && !pkt->isInvalidate()) { 491 // The block was marked not readable while there was a pending 492 // cache maintenance operation, restore its flag. 493 blk->status |= BlkReadable; | 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 --- 477 unchanged lines hidden (view full) --- 486 blk = handleFill(pkt, blk, writebacks, mshr->allocOnFill()); 487 assert(blk != nullptr); 488 } 489 490 if (blk && blk->isValid() && pkt->isClean() && !pkt->isInvalidate()) { 491 // The block was marked not readable while there was a pending 492 // cache maintenance operation, restore its flag. 493 blk->status |= BlkReadable; |
494 495 // This was a cache clean operation (without invalidate) 496 // and we have a copy of the block already. Since there 497 // is no invalidation, we can promote targets that don't 498 // require a writable copy 499 mshr->promoteReadable(); |
|
494 } 495 496 if (blk && blk->isWritable() && !pkt->req->isCacheInvalidate()) { 497 // If at this point the referenced block is writable and the 498 // response is not a cache invalidate, we promote targets that 499 // were deferred as we couldn't guarrantee a writable copy 500 mshr->promoteWritable(); 501 } --- 380 unchanged lines hidden (view full) --- 882 883 if (blk->isDirty()) { 884 // we were in the Owned state, and a cache above us that 885 // has the line in Shared state needs to be made aware 886 // that the data it already has is in fact dirty 887 pkt->setCacheResponding(); 888 blk->status &= ~BlkDirty; 889 } | 500 } 501 502 if (blk && blk->isWritable() && !pkt->req->isCacheInvalidate()) { 503 // If at this point the referenced block is writable and the 504 // response is not a cache invalidate, we promote targets that 505 // were deferred as we couldn't guarrantee a writable copy 506 mshr->promoteWritable(); 507 } --- 380 unchanged lines hidden (view full) --- 888 889 if (blk->isDirty()) { 890 // we were in the Owned state, and a cache above us that 891 // has the line in Shared state needs to be made aware 892 // that the data it already has is in fact dirty 893 pkt->setCacheResponding(); 894 blk->status &= ~BlkDirty; 895 } |
896 } else if (pkt->isClean()) { 897 blk->status &= ~BlkDirty; |
|
890 } else { 891 assert(pkt->isInvalidate()); 892 invalidateBlock(blk); 893 DPRINTF(CacheVerbose, "%s for %s (invalidation)\n", __func__, 894 pkt->print()); 895 } 896} 897 --- 1450 unchanged lines hidden --- | 898 } else { 899 assert(pkt->isInvalidate()); 900 invalidateBlock(blk); 901 DPRINTF(CacheVerbose, "%s for %s (invalidation)\n", __func__, 902 pkt->print()); 903 } 904} 905 --- 1450 unchanged lines hidden --- |