Add a function to get a SimObject's memory mode and rework
the set memory mode code to only go through the change if it is necessary --HG-- extra : convert_revision : 28288227bb56b0a04d756776eaf0a4ff9e1f8c20
This commit is contained in:
parent
fc4ab050b4
commit
961f8382f6
3 changed files with 17 additions and 6 deletions
|
@ -722,6 +722,13 @@ class SimObject(object):
|
|||
for child in self._children.itervalues():
|
||||
child.resume()
|
||||
|
||||
def getMemoryMode(self):
|
||||
if not isinstance(self, m5.objects.System):
|
||||
return None
|
||||
|
||||
system_ptr = internal.sim_object.convertToSystemPtr(self._ccObject)
|
||||
return system_ptr.getMemoryMode()
|
||||
|
||||
def changeTiming(self, mode):
|
||||
if isinstance(self, m5.objects.System):
|
||||
# i don't know if there's a better way to do this - calling
|
||||
|
|
|
@ -190,17 +190,20 @@ def changeToAtomic(system):
|
|||
if not isinstance(system, (objects.Root, objects.System)):
|
||||
raise TypeError, "Parameter of type '%s'. Must be type %s or %s." % \
|
||||
(type(system), objects.Root, objects.System)
|
||||
doDrain(system)
|
||||
print "Changing memory mode to atomic"
|
||||
system.changeTiming(internal.sim_object.SimObject.Atomic)
|
||||
if system.getMemoryMode() != internal.sim_object.SimObject.Atomic:
|
||||
doDrain(system)
|
||||
print "Changing memory mode to atomic"
|
||||
system.changeTiming(internal.sim_object.SimObject.Atomic)
|
||||
|
||||
def changeToTiming(system):
|
||||
if not isinstance(system, (objects.Root, objects.System)):
|
||||
raise TypeError, "Parameter of type '%s'. Must be type %s or %s." % \
|
||||
(type(system), objects.Root, objects.System)
|
||||
doDrain(system)
|
||||
print "Changing memory mode to timing"
|
||||
system.changeTiming(internal.sim_object.SimObject.Timing)
|
||||
|
||||
if system.getMemoryMode() != internal.sim_object.SimObject.Timing:
|
||||
doDrain(system)
|
||||
print "Changing memory mode to timing"
|
||||
system.changeTiming(internal.sim_object.SimObject.Timing)
|
||||
|
||||
def switchCpus(cpuList):
|
||||
print "switching cpus"
|
||||
|
|
|
@ -66,6 +66,7 @@ class System {
|
|||
private:
|
||||
System();
|
||||
public:
|
||||
SimObject::MemoryMode getMemoryMode();
|
||||
void setMemoryMode(SimObject::MemoryMode mode);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue