base.cc (13216:6ae030076b29) | base.cc (13222:0dbcc7d7d66f) |
---|---|
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 --- 38 unchanged lines hidden (view full) --- 47 */ 48 49#include "mem/cache/base.hh" 50 51#include "base/compiler.hh" 52#include "base/logging.hh" 53#include "debug/Cache.hh" 54#include "debug/CachePort.hh" | 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 --- 38 unchanged lines hidden (view full) --- 47 */ 48 49#include "mem/cache/base.hh" 50 51#include "base/compiler.hh" 52#include "base/logging.hh" 53#include "debug/Cache.hh" 54#include "debug/CachePort.hh" |
55#include "debug/CacheRepl.hh" |
|
55#include "debug/CacheVerbose.hh" 56#include "mem/cache/mshr.hh" 57#include "mem/cache/prefetch/base.hh" 58#include "mem/cache/queue_entry.hh" 59#include "params/BaseCache.hh" 60#include "sim/core.hh" 61 62class BaseMasterPort; --- 1169 unchanged lines hidden (view full) --- 1232 // Find replacement victim 1233 std::vector<CacheBlk*> evict_blks; 1234 CacheBlk *victim = tags->findVictim(addr, is_secure, evict_blks); 1235 1236 // It is valid to return nullptr if there is no victim 1237 if (!victim) 1238 return nullptr; 1239 | 56#include "debug/CacheVerbose.hh" 57#include "mem/cache/mshr.hh" 58#include "mem/cache/prefetch/base.hh" 59#include "mem/cache/queue_entry.hh" 60#include "params/BaseCache.hh" 61#include "sim/core.hh" 62 63class BaseMasterPort; --- 1169 unchanged lines hidden (view full) --- 1233 // Find replacement victim 1234 std::vector<CacheBlk*> evict_blks; 1235 CacheBlk *victim = tags->findVictim(addr, is_secure, evict_blks); 1236 1237 // It is valid to return nullptr if there is no victim 1238 if (!victim) 1239 return nullptr; 1240 |
1241 // Print victim block's information 1242 DPRINTF(CacheRepl, "Replacement victim: %s\n", victim->print()); 1243 |
|
1240 // Check for transient state allocations. If any of the entries listed 1241 // for eviction has a transient state, the allocation fails 1242 for (const auto& blk : evict_blks) { 1243 if (blk->isValid()) { 1244 Addr repl_addr = regenerateBlkAddr(blk); 1245 MSHR *repl_mshr = mshrQueue.findMatch(repl_addr, blk->isSecure()); 1246 if (repl_mshr) { 1247 // must be an outstanding upgrade or clean request --- 1107 unchanged lines hidden --- | 1244 // Check for transient state allocations. If any of the entries listed 1245 // for eviction has a transient state, the allocation fails 1246 for (const auto& blk : evict_blks) { 1247 if (blk->isValid()) { 1248 Addr repl_addr = regenerateBlkAddr(blk); 1249 MSHR *repl_mshr = mshrQueue.findMatch(repl_addr, blk->isSecure()); 1250 if (repl_mshr) { 1251 // must be an outstanding upgrade or clean request --- 1107 unchanged lines hidden --- |