Added a parameter to set memory to zero. This is to support Legion, and once we can make our own hypervisor binary, we probably won't need it.
--HG-- extra : convert_revision : 168883e4a5d3760962cd9759a6f41c66f5a6402a
This commit is contained in:
parent
0a99750ebf
commit
f85082e0a0
4 changed files with 11 additions and 2 deletions
|
@ -89,7 +89,7 @@ def makeSparcSystem(mem_mode, mdesc = None):
|
|||
self.bridge = Bridge()
|
||||
self.t1000 = T1000()
|
||||
self.t1000.attachIO(self.iobus)
|
||||
self.physmem = PhysicalMemory(range = AddrRange(mdesc.mem()))
|
||||
self.physmem = PhysicalMemory(range = AddrRange(mdesc.mem()), zero = True)
|
||||
self.bridge.side_a = self.iobus.port
|
||||
self.bridge.side_b = self.membus.port
|
||||
self.physmem.port = self.membus.port
|
||||
|
|
|
@ -65,6 +65,10 @@ PhysicalMemory::PhysicalMemory(Params *p)
|
|||
fatal("Could not mmap!\n");
|
||||
}
|
||||
|
||||
//If requested, initialize all the memory to 0
|
||||
if(params()->zero)
|
||||
memset(pmemAddr, 0, params()->addrRange.size());
|
||||
|
||||
pagePtr = 0;
|
||||
}
|
||||
|
||||
|
@ -432,6 +436,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(PhysicalMemory)
|
|||
Param<string> file;
|
||||
Param<Range<Addr> > range;
|
||||
Param<Tick> latency;
|
||||
Param<bool> zero;
|
||||
|
||||
END_DECLARE_SIM_OBJECT_PARAMS(PhysicalMemory)
|
||||
|
||||
|
@ -439,7 +444,8 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(PhysicalMemory)
|
|||
|
||||
INIT_PARAM_DFLT(file, "memory mapped file", ""),
|
||||
INIT_PARAM(range, "Device Address Range"),
|
||||
INIT_PARAM(latency, "Memory access latency")
|
||||
INIT_PARAM(latency, "Memory access latency"),
|
||||
INIT_PARAM(zero, "Zero initialize memory")
|
||||
|
||||
END_INIT_SIM_OBJECT_PARAMS(PhysicalMemory)
|
||||
|
||||
|
@ -449,6 +455,7 @@ CREATE_SIM_OBJECT(PhysicalMemory)
|
|||
p->name = getInstanceName();
|
||||
p->addrRange = range;
|
||||
p->latency = latency;
|
||||
p->zero = zero;
|
||||
return new PhysicalMemory(p);
|
||||
}
|
||||
|
||||
|
|
|
@ -154,6 +154,7 @@ class PhysicalMemory : public MemObject
|
|||
std::string name;
|
||||
Range<Addr> addrRange;
|
||||
Tick latency;
|
||||
bool zero;
|
||||
};
|
||||
|
||||
protected:
|
||||
|
|
|
@ -9,6 +9,7 @@ class PhysicalMemory(MemObject):
|
|||
range = Param.AddrRange(AddrRange('128MB'), "Device Address")
|
||||
file = Param.String('', "memory mapped file")
|
||||
latency = Param.Latency(Parent.clock, "latency of an access")
|
||||
zero = Param.Bool(False, "zero initialize memory")
|
||||
|
||||
class DRAMMemory(PhysicalMemory):
|
||||
type = 'DRAMMemory'
|
||||
|
|
Loading…
Reference in a new issue