sim: Reuse the code to change memory mode.
authorAndreas Sandberg <Andreas.Sandberg@arm.com>
Fri, 2 Nov 2012 16:32:02 +0000 (11:32 -0500)
committerAndreas Sandberg <Andreas.Sandberg@arm.com>
Fri, 2 Nov 2012 16:32:02 +0000 (11:32 -0500)
changeToAtomic and changeToTiming both do essentially the same thing,
they check the type of their input argument, drain the system, and
switch to the desired memory mode. This patch moves all of that code
to a separate method (changeMemoryMode) and calls that from both
changeToAtomic and changeToTiming.

src/python/m5/simulate.py

index df30f654ab8bda2d6f48932a4cf9911548b0d938..4c60765813f950d683033285f97b64b5a0edab4f 100644 (file)
@@ -192,24 +192,23 @@ def checkpoint(dir):
     internal.core.serializeAll(dir)
     resume(root)
 
-def changeToAtomic(system):
+def changeMemoryMode(system, mode):
     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)
-    if system.getMemoryMode() != objects.params.atomic:
+    if system.getMemoryMode() != mode:
         doDrain(system)
-        print "Changing memory mode to atomic"
-        system.setMemoryMode(objects.params.atomic)
+        system.setMemoryMode(mode)
+    else:
+        print "System already in target mode. Memory mode unchanged."
 
-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)
+def changeToAtomic(system, **kwargs):
+    print "Changing memory mode to atomic"
+    changeMemoryMode(system, objects.params.atomic, **kwargs)
 
-    if system.getMemoryMode() != objects.params.timing:
-        doDrain(system)
-        print "Changing memory mode to timing"
-        system.setMemoryMode(objects.params.timing)
+def changeToTiming(system, **kwargs):
+    print "Changing memory mode to timing"
+    changeMemoryMode(system, objects.params.timing, **kwargs)
 
 def switchCpus(cpuList):
     print "switching cpus"