46 #include "debug/RubyCache.hh" 47 #include "debug/RubyStats.hh" 55 :
SimObject(p), addrRanges(p->addr_ranges.begin(), p->addr_ranges.end())
89 if (
r.contains(address)) {
101 if (
r.contains(address)) {
102 ret +=
r.getOffset(address);
114 DPRINTF(RubyCache,
"Looking up address: %#x\n", address);
126 DPRINTF(RubyCache,
"Looking up address: %#x\n", address);
143 DPRINTF(RubyStats,
"Recorded statistic: %s\n",
144 DirectoryRequestType_to_string(requestType));
148 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.
std::enable_if< std::is_integral< T >::value, int >::type floorLog2(T x)
bool isPresent(Addr address)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
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.