diff options
Diffstat (limited to 'src/sim/Root.py')
-rw-r--r-- | src/sim/Root.py | 25 |
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") |