cache.cc (12346:9b1144d046ca) | cache.cc (12348:bef2d9d3c353) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2010-2016 ARM Limited | 2 * Copyright (c) 2010-2017 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 1320 unchanged lines hidden (view full) --- 1331 } 1332 1333 bool wasFull = mshrQueue.isFull(); 1334 1335 PacketList writebacks; 1336 1337 Tick forward_time = clockEdge(forwardLatency) + pkt->headerDelay; 1338 | 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 1320 unchanged lines hidden (view full) --- 1331 } 1332 1333 bool wasFull = mshrQueue.isFull(); 1334 1335 PacketList writebacks; 1336 1337 Tick forward_time = clockEdge(forwardLatency) + pkt->headerDelay; 1338 |
1339 // upgrade deferred targets if the response has no sharers, and is 1340 // thus passing writable 1341 if (!pkt->hasSharers()) { 1342 mshr->promoteWritable(); 1343 } 1344 | |
1345 bool is_fill = !mshr->isForward && 1346 (pkt->isRead() || pkt->cmd == MemCmd::UpgradeResp); 1347 1348 CacheBlk *blk = tags->findBlock(pkt->getAddr(), pkt->isSecure()); | 1339 bool is_fill = !mshr->isForward && 1340 (pkt->isRead() || pkt->cmd == MemCmd::UpgradeResp); 1341 1342 CacheBlk *blk = tags->findBlock(pkt->getAddr(), pkt->isSecure()); |
1343 const bool valid_blk = blk && blk->isValid(); 1344 // If the response indicates that there are no sharers and we 1345 // either had the block already or the response is filling we can 1346 // promote our copy to writable 1347 if (!pkt->hasSharers() && (is_fill || valid_blk)) { 1348 mshr->promoteWritable(); 1349 } |
|
1349 1350 if (is_fill && !is_error) { 1351 DPRINTF(Cache, "Block for addr %#llx being updated in Cache\n", 1352 pkt->getAddr()); 1353 1354 blk = handleFill(pkt, blk, writebacks, mshr->allocOnFill()); 1355 assert(blk != nullptr); 1356 } --- 1407 unchanged lines hidden --- | 1350 1351 if (is_fill && !is_error) { 1352 DPRINTF(Cache, "Block for addr %#llx being updated in Cache\n", 1353 pkt->getAddr()); 1354 1355 blk = handleFill(pkt, blk, writebacks, mshr->allocOnFill()); 1356 assert(blk != nullptr); 1357 } --- 1407 unchanged lines hidden --- |