diff options
Diffstat (limited to 'src/mem/abstract_mem.cc')
-rw-r--r-- | src/mem/abstract_mem.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mem/abstract_mem.cc b/src/mem/abstract_mem.cc index 581fc14cc..f0d626940 100644 --- a/src/mem/abstract_mem.cc +++ b/src/mem/abstract_mem.cc @@ -58,6 +58,9 @@ using namespace std; AbstractMemory::AbstractMemory(const Params *p) : MemObject(p), range(params()->range), pmemAddr(NULL), + backdoor(params()->range, nullptr, + (MemBackdoor::Flags)(MemBackdoor::Readable | + MemBackdoor::Writeable)), confTableReported(p->conf_table_reported), inAddrMap(p->in_addr_map), kvmMap(p->kvm_map), _system(NULL) { @@ -75,6 +78,13 @@ AbstractMemory::init() void AbstractMemory::setBackingStore(uint8_t* pmem_addr) { + // If there was an existing backdoor, let everybody know it's going away. + if (backdoor.ptr()) + backdoor.invalidate(); + + // The back door can't handle interleaved memory. + backdoor.ptr(range.interleaved() ? nullptr : pmem_addr); + pmemAddr = pmem_addr; } |