cache.cc (11276:3561d002d8c7) cache.cc (11277:4f8703832608)
1/*
2 * Copyright (c) 2010-2015 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

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

2347 tgt_pkt->getAddr(), tgt_pkt->isSecure()? "s": "ns");
2348 return NULL;
2349 }
2350
2351 if (snoop_pkt.isBlockCached() || blk != NULL) {
2352 DPRINTF(Cache, "Block present, prefetch squashed by cache. "
2353 "Deallocating mshr target %#x.\n",
2354 mshr->blkAddr);
1/*
2 * Copyright (c) 2010-2015 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

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

2347 tgt_pkt->getAddr(), tgt_pkt->isSecure()? "s": "ns");
2348 return NULL;
2349 }
2350
2351 if (snoop_pkt.isBlockCached() || blk != NULL) {
2352 DPRINTF(Cache, "Block present, prefetch squashed by cache. "
2353 "Deallocating mshr target %#x.\n",
2354 mshr->blkAddr);
2355
2356 // Deallocate the mshr target
2355 // Deallocate the mshr target
2357 if (!tgt_pkt->isWriteback()) {
2358 if (mshr->queue->forceDeallocateTarget(mshr)) {
2359 // Clear block if this deallocation resulted freed an
2360 // mshr when all had previously been utilized
2361 clearBlocked((BlockedCause)(mshr->queue->index));
2362 }
2363 return NULL;
2364 } else {
2365 // If this is a Writeback, and the snoops indicate that the blk
2366 // is cached above, set the BLOCK_CACHED flag in the Writeback
2367 // packet, so that it does not reset the bits corresponding to
2368 // this block in the snoop filter below.
2369 tgt_pkt->setBlockCached();
2356 if (mshr->queue->forceDeallocateTarget(mshr)) {
2357 // Clear block if this deallocation resulted freed an
2358 // mshr when all had previously been utilized
2359 clearBlocked((BlockedCause)(mshr->queue->index));
2370 }
2360 }
2361 return NULL;
2371 }
2372 }
2373
2374 if (mshr->isForwardNoResponse()) {
2375 // no response expected, just forward packet as it is
2376 assert(tags->findBlock(mshr->blkAddr, mshr->isSecure) == NULL);
2377 pkt = tgt_pkt;
2378 } else {

--- 265 unchanged lines hidden ---
2362 }
2363 }
2364
2365 if (mshr->isForwardNoResponse()) {
2366 // no response expected, just forward packet as it is
2367 assert(tags->findBlock(mshr->blkAddr, mshr->isSecure) == NULL);
2368 pkt = tgt_pkt;
2369 } else {

--- 265 unchanged lines hidden ---