48 #include "debug/RubyCache.hh" 49 #include "debug/RubyStats.hh" 57 :
SimObject(p), addrRanges(p->addr_ranges.begin(), p->addr_ranges.end())
91 if (
r.contains(address)) {
103 if (
r.contains(address)) {
104 ret +=
r.getOffset(address);
116 DPRINTF(RubyCache,
"Looking up address: %#x\n", address);
128 DPRINTF(RubyCache,
"Looking up address: %#x\n", address);
145 DPRINTF(RubyStats,
"Recorded statistic: %s\n",
146 DirectoryRequestType_to_string(requestType));
150 RubyDirectoryMemoryParams::create()
void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
RubyDirectoryMemoryParams Params
void print(std::ostream &out) const
void changePermission(AccessPermission new_perm)
Overload hash function for BasicBlockRange type.
void recordRequestType(DirectoryRequestType requestType)
uint64_t mapAddressToLocalIdx(Addr address)
Return the index in the directory based on an address.
bool isPresent(Addr address)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int floorLog2(unsigned x)
AbstractCacheEntry ** m_entries
DirectoryMemory(const Params *p)
AbstractCacheEntry * allocate(Addr address, AbstractCacheEntry *new_entry)
const AddrRangeList addrRanges
The address range for which the directory responds.
AbstractCacheEntry * lookup(Addr address)
static uint32_t getBlockSizeBits()
static uint32_t getBlockSizeBytes()
Abstract superclass for simulation objects.