Go to the documentation of this file.
29 #ifndef __CPU_DECODE_CACHE_HH__
30 #define __CPU_DECODE_CACHE_HH__
32 #include <unordered_map>
41 template <
typename EMI>
42 using InstMap = std::unordered_map<EMI, StaticInstPtr>;
45 template<
class Value, Addr CacheChunkShift = 12>
69 typedef typename std::unordered_map<Addr, CacheChunk *>
ChunkMap;
70 typedef typename ChunkMap::iterator
ChunkIt;
95 if (
recent[0]->first == chunk_addr)
98 recent[1]->first == chunk_addr) {
113 CacheChunk *newChunk =
new CacheChunk;
114 typename ChunkMap::value_type to_insert(chunk_addr, newChunk);
136 #endif // __CPU_DECODE_CACHE_HH__
static constexpr Addr chunkStart(Addr addr)
Value items[CacheChunkBytes]
A sparse map from an Addr to a Value, stored in page chunks.
ChunkMap::iterator ChunkIt
Value & lookup(Addr addr)
CacheChunk * getChunk(Addr addr)
Attempt to find the CacheChunk which goes with a particular address.
std::unordered_map< EMI, StaticInstPtr > InstMap
Hash for decoded instructions.
static constexpr Addr chunkOffset(Addr addr)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void update(ChunkIt recentest)
Update the mini cache of recent lookups.
std::unordered_map< Addr, CacheChunk * > ChunkMap
static constexpr Addr CacheChunkBytes
#define ULL(N)
uint64_t constant
Generated on Wed Sep 30 2020 14:02:07 for gem5 by doxygen 1.8.17