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