From 7d91bda6bfba1bd0cf49ff7ff20373b5d44df87a Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Wed, 9 Mar 2005 14:42:30 -0500 Subject: Add support for using the variables that m5 was compiled with for determining which parameters belong to a class. This allows us to remove the disable flag since it is not the correct model for variable checking anyway. objects/BaseCPU.mpy: Use the FULL_SYSTEM environment variable to enable or disable parameters. sim/pyconfig/m5config.py: remove the disable flag since it is not the correct model for variable checking. --HG-- extra : convert_revision : a8ccb78ba16d23006225df282a09187d32557608 --- objects/BaseCPU.mpy | 28 +++++++--------------------- sim/pyconfig/m5config.py | 35 ++++++----------------------------- 2 files changed, 13 insertions(+), 50 deletions(-) diff --git a/objects/BaseCPU.mpy b/objects/BaseCPU.mpy index f6e6ff96c..484fcccd6 100644 --- a/objects/BaseCPU.mpy +++ b/objects/BaseCPU.mpy @@ -4,11 +4,13 @@ simobj BaseCPU(SimObject): icache = Param.BaseMem(NULL, "L1 instruction cache object") dcache = Param.BaseMem(NULL, "L1 data cache object") - dtb = Param.AlphaDTB("Data TLB") - itb = Param.AlphaITB("Instruction TLB") - mem = Param.FunctionalMemory("memory") - system = Param.BaseSystem(Super, "system object") - workload = VectorParam.Process("processes to run") + if Bool._convert(env.get('FULL_SYSTEM', 'False')): + dtb = Param.AlphaDTB("Data TLB") + itb = Param.AlphaITB("Instruction TLB") + mem = Param.FunctionalMemory("memory") + system = Param.BaseSystem(Super, "system object") + else: + workload = VectorParam.Process("processes to run") max_insts_all_threads = Param.Counter(0, "terminate when all threads have reached this inst count") @@ -21,19 +23,3 @@ simobj BaseCPU(SimObject): defer_registration = Param.Bool(False, "defer registration with system (for sampling)") - - def check(self): - has_workload = self._hasvalue('workload') - has_dtb = self._hasvalue('dtb') - has_itb = self._hasvalue('itb') - has_mem = self._hasvalue('mem') - has_system = self._hasvalue('system') - - if has_workload: - self.dtb.disable = True - self.itb.disable = True - self.mem.disable = True - self.system.disable = True - - if has_dtb or has_itb or has_mem or has_system: - self.workload.disable = True diff --git a/sim/pyconfig/m5config.py b/sim/pyconfig/m5config.py index b5617c8ae..e6201b3ad 100644 --- a/sim/pyconfig/m5config.py +++ b/sim/pyconfig/m5config.py @@ -246,7 +246,6 @@ class MetaConfigNode(type): cls._params = {} cls._values = {} cls._enums = {} - cls._disable = {} cls._bases = [c for c in cls.__mro__ if isConfigNode(c)] cls._anon_subclass_counter = 0 @@ -382,15 +381,6 @@ class MetaConfigNode(type): def _setvalue(cls, name, value): cls._values[name] = value - def _getdisable(cls, name): - for c in cls._bases: - if c._disable.has_key(name): - return c._disable[name] - return False - - def _setdisable(cls, name, value): - cls._disable[name] = value - def __getattr__(cls, attr): if cls._isvalue(attr): return Value(cls, attr) @@ -465,9 +455,6 @@ class MetaConfigNode(type): cls.check() for key,value in cls._getvalues().iteritems(): - if cls._getdisable(key): - continue - if isConfigNode(value): cls.add_child(instance, key, value) if issequence(value): @@ -477,15 +464,11 @@ class MetaConfigNode(type): for pname,param in cls._getparams().iteritems(): try: - if cls._getdisable(pname): - continue - - try: - value = cls._getvalue(pname) - except: - print 'Error getting %s' % pname - raise + value = cls._getvalue(pname) + except: + panic('Error getting %s' % pname) + try: if isConfigNode(value): value = instance.child_objects[value] elif issequence(value): @@ -814,16 +797,10 @@ class Value(object): return self.obj._getvalue(self.attr) def __setattr__(self, attr, value): - if attr == 'disable': - self.obj._setdisable(self.attr, value) - else: - setattr(self._getattr(), attr, value) + setattr(self._getattr(), attr, value) def __getattr__(self, attr): - if attr == 'disable': - return self.obj._getdisable(self.attr) - else: - return getattr(self._getattr(), attr) + return getattr(self._getattr(), attr) def __getitem__(self, index): return self._getattr().__getitem__(index) -- cgit v1.2.3