diff --git a/configs/test/fs.py b/configs/test/fs.py index 05b38991c..55e7003a4 100644 --- a/configs/test/fs.py +++ b/configs/test/fs.py @@ -197,6 +197,8 @@ class LinuxAlphaSystem(LinuxAlphaSystem): else: cpu = AtomicSimpleCPU() cpu.mem = Parent.magicbus2 + cpu.itb = AlphaITB() + cpu.dtb = AlphaDTB() sim_console = SimConsole(listener=ConsoleListener(port=3456)) kernel = binary('vmlinux') pal = binary('ts_osfpal') @@ -205,18 +207,15 @@ class LinuxAlphaSystem(LinuxAlphaSystem): # readfile = os.path.join(test_base, 'halt.sh') -BaseCPU.itb = AlphaITB() -BaseCPU.dtb = AlphaDTB() -BaseCPU.system = Parent.any class TsunamiRoot(System): pass -def DualRoot(ClientSystem, ServerSystem): +def DualRoot(clientSystem, serverSystem): self = Root() - self.client = ClientSystem() - self.server = ServerSystem() + self.client = clientSystem + self.server = serverSystem self.etherdump = EtherDump(file='ethertrace') self.etherlink = EtherLink(int1 = Parent.client.tsunami.etherint[0], @@ -225,8 +224,8 @@ def DualRoot(ClientSystem, ServerSystem): self.clock = '5GHz' return self -root = DualRoot(ClientSystem = LinuxAlphaSystem(readfile=script('netperf-stream-nt-client.rcS')), - ServerSystem = LinuxAlphaSystem(readfile=script('netperf-server.rcS'))) +root = DualRoot(LinuxAlphaSystem(readfile=script('netperf-stream-nt-client.rcS')), + LinuxAlphaSystem(readfile=script('netperf-server.rcS'))) m5.instantiate(root) diff --git a/src/python/m5/config.py b/src/python/m5/config.py index 9de768d18..3eb99972f 100644 --- a/src/python/m5/config.py +++ b/src/python/m5/config.py @@ -211,6 +211,7 @@ class MetaSimObject(type): # initialize required attributes cls._params = multidict() cls._values = multidict() + cls._instantiated = False # really instantiated or subclassed cls._anon_subclass_counter = 0 # We don't support multiple inheritance. If you want to, you @@ -225,6 +226,7 @@ class MetaSimObject(type): if isinstance(base, MetaSimObject): cls._params.parent = base._params cls._values.parent = base._values + base._instantiated = True # now process the _init_dict items for key,val in cls._init_dict.items(): @@ -299,6 +301,12 @@ class MetaSimObject(type): param = cls._params.get(attr, None) if param: # It's ok: set attribute by delegating to 'object' class. + if (isSimObject(value) or isSimObjSequence(value)) \ + and cls._instantiated: + raise AttributeError, \ + "Cannot set SimObject parameter '%s' after\n" \ + " class %s has been instantiated or subclassed" \ + % (attr, cls.__name__) try: cls._values[attr] = param.convert(value) except Exception, e: @@ -386,6 +394,8 @@ class SimObject(object): # instantiated objects. _memo = {} + self.__class__._instantiated = True + self._children = {} # Inherit parameter values from class using multidict so # individual value settings can be overridden.