1/*
2 * Copyright (c) 2013,2016-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
--- 108 unchanged lines hidden (view full) ---
117 return nullptr;
118}
119
120void
121FALRU::invalidate(CacheBlk *blk)
122{
123 BaseTags::invalidate(blk);
124
125 // Move the block to the tail to make it the next victim
126 moveToTail((FALRUBlk*)blk);
127
128 // Erase block entry in the hash table
129 tagHash.erase(blk->tag);
130}
131
132CacheBlk*
--- 31 unchanged lines hidden (view full) ---
164 *in_caches_mask = mask;
165 }
166
167 cacheTracking.recordAccess(blk);
168
169 return blk;
170}
171
172
173CacheBlk*
174FALRU::findBlock(Addr addr, bool is_secure) const
175{
176 Addr tag = extractTag(addr);
177 FALRUBlk* blk = hashLookup(tag);
178
179 if (blk && blk->isValid()) {
180 assert(blk->tag == tag);
--- 29 unchanged lines hidden (view full) ---
210 FALRUBlk* falruBlk = static_cast<FALRUBlk*>(blk);
211
212 // Make sure block is not present in the cache
213 assert(falruBlk->inCachesMask == 0);
214
215 // Do common block insertion functionality
216 BaseTags::insertBlock(pkt, blk);
217
218 // New block is the MRU
219 moveToHead(falruBlk);
220
221 // Insert new block in the hash table
222 tagHash[falruBlk->tag] = falruBlk;
223}
224
225void
--- 225 unchanged lines hidden ---
2 * Copyright (c) 2013,2016-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
--- 108 unchanged lines hidden (view full) ---
117 return nullptr;
118}
119
120void
121FALRU::invalidate(CacheBlk *blk)
122{
123 BaseTags::invalidate(blk);
124
125 // Move the block to the tail to make it the next victim
126 moveToTail((FALRUBlk*)blk);
127
128 // Erase block entry in the hash table
129 tagHash.erase(blk->tag);
130}
131
132CacheBlk*
--- 31 unchanged lines hidden (view full) ---
164 *in_caches_mask = mask;
165 }
166
167 cacheTracking.recordAccess(blk);
168
169 return blk;
170}
171
172
173CacheBlk*
174FALRU::findBlock(Addr addr, bool is_secure) const
175{
176 Addr tag = extractTag(addr);
177 FALRUBlk* blk = hashLookup(tag);
178
179 if (blk && blk->isValid()) {
180 assert(blk->tag == tag);
--- 29 unchanged lines hidden (view full) ---
210 FALRUBlk* falruBlk = static_cast<FALRUBlk*>(blk);
211
212 // Make sure block is not present in the cache
213 assert(falruBlk->inCachesMask == 0);
214
215 // Do common block insertion functionality
216 BaseTags::insertBlock(pkt, blk);
217
218 // New block is the MRU
219 moveToHead(falruBlk);
220
221 // Insert new block in the hash table
222 tagHash[falruBlk->tag] = falruBlk;
223}
224
225void
--- 225 unchanged lines hidden ---