summaryrefslogtreecommitdiff
path: root/src/sim/Root.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/Root.py')
-rw-r--r--src/sim/Root.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/sim/Root.py b/src/sim/Root.py
index fff998e0d..c7404a11f 100644
--- a/src/sim/Root.py
+++ b/src/sim/Root.py
@@ -28,7 +28,32 @@
from m5.SimObject import SimObject
from m5.params import *
+from m5.util import fatal
class Root(SimObject):
+
+ _the_instance = None
+
+ def __new__(cls, **kwargs):
+ if Root._the_instance:
+ fatal("Attempt to allocate multiple instances of Root.")
+ return None
+
+ # first call: allocate the unique instance
+ #
+ # If SimObject ever implements __new__, we may want to pass
+ # kwargs here, but for now this goes straight to
+ # object.__new__ which prints an ugly warning if you pass it
+ # args. Seems like a bad design but that's the way it is.
+ Root._the_instance = SimObject.__new__(cls)
+ return Root._the_instance
+
+ @classmethod
+ def getInstance(cls):
+ return Root._the_instance
+
+ def path(self):
+ return 'root'
+
type = 'Root'
dummy = Param.Int(0, "We don't support objects without params")