diff options
Diffstat (limited to 'mem/physical.cc')
-rw-r--r-- | mem/physical.cc | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/mem/physical.cc b/mem/physical.cc index c1e83fb9e..603f8f63e 100644 --- a/mem/physical.cc +++ b/mem/physical.cc @@ -70,7 +70,7 @@ PhysicalMemory::MemResponseEvent::description() } PhysicalMemory::PhysicalMemory(const string &n) - : MemObject(n), base_addr(0), pmem_addr(NULL) + : MemObject(n), base_addr(0), pmem_addr(NULL), port(NULL) { // Hardcoded to 128 MB for now. pmem_size = 1 << 27; @@ -152,9 +152,15 @@ PhysicalMemory::doFunctionalAccess(Packet &pkt) } Port * -PhysicalMemory::getPort(const char *if_name) +PhysicalMemory::getPort(const std::string &if_name) { - if (if_name == NULL) { + if (if_name == "") { + if (port != NULL) + panic("PhysicalMemory::getPort: additional port requested to memory!"); + port = new MemoryPort(this); + return port; + } else if (if_name == "functional") { + /* special port for functional writes at startup. */ return new MemoryPort(this); } else { panic("PhysicalMemory::getPort: unknown port %s requested", if_name); @@ -178,10 +184,18 @@ PhysicalMemory::MemoryPort::recvStatusChange(Port::Status status) } void -PhysicalMemory::MemoryPort::getDeviceAddressRanges(AddrRangeList &range_list, - bool &owner) +PhysicalMemory::MemoryPort::getDeviceAddressRanges(AddrRangeList &resp, + AddrRangeList &snoop) { - panic("??"); + memory->getAddressRanges(resp, snoop); +} + +void +PhysicalMemory::getAddressRanges(AddrRangeList &resp, AddrRangeList &snoop) +{ + snoop.clear(); + resp.clear(); + resp.push_back(RangeSize(base_addr, pmem_size)); } int @@ -321,9 +335,6 @@ PhysicalMemory::unserialize(Checkpoint *cp, const string §ion) BEGIN_DECLARE_SIM_OBJECT_PARAMS(PhysicalMemory) Param<string> file; -#if FULL_SYSTEM - SimObjectParam<MemoryController *> mmu; -#endif Param<Range<Addr> > range; END_DECLARE_SIM_OBJECT_PARAMS(PhysicalMemory) @@ -331,20 +342,12 @@ END_DECLARE_SIM_OBJECT_PARAMS(PhysicalMemory) BEGIN_INIT_SIM_OBJECT_PARAMS(PhysicalMemory) INIT_PARAM_DFLT(file, "memory mapped file", ""), -#if FULL_SYSTEM - INIT_PARAM(mmu, "Memory Controller"), -#endif INIT_PARAM(range, "Device Address Range") END_INIT_SIM_OBJECT_PARAMS(PhysicalMemory) CREATE_SIM_OBJECT(PhysicalMemory) { -#if FULL_SYSTEM - if (mmu) { - return new PhysicalMemory(getInstanceName(), range, mmu, file); - } -#endif return new PhysicalMemory(getInstanceName()); } |