diff --git a/configs/common/ObjectList.py b/configs/common/ObjectList.py index aa3bda0c99..685dbc1403 100644 --- a/configs/common/ObjectList.py +++ b/configs/common/ObjectList.py @@ -35,6 +35,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import m5.objects +import m5.internal.params import inspect import sys from textwrap import TextWrapper diff --git a/src/python/m5/SimObject.py b/src/python/m5/SimObject.py index bbf291d2e4..de7752cd10 100644 --- a/src/python/m5/SimObject.py +++ b/src/python/m5/SimObject.py @@ -1716,6 +1716,9 @@ class SimObject(object, metaclass=MetaSimObject): if self._ccParams: return self._ccParams + # Ensure that m5.internal.params is available. + import m5.internal.params + cc_params_struct = getattr(m5.internal.params, '%sParams' % self.type) cc_params = cc_params_struct() cc_params.name = str(self) diff --git a/src/python/m5/objects/__init__.py b/src/python/m5/objects/__init__.py index e59f9a850a..4bec74dfaa 100644 --- a/src/python/m5/objects/__init__.py +++ b/src/python/m5/objects/__init__.py @@ -24,14 +24,6 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from m5.internal import params -from m5.SimObject import * - -try: - modules = __spec__.loader_state -except NameError: - modules = { } - -for module in modules: +for module in __spec__.loader_state: if module.startswith('m5.objects.'): exec("from %s import *" % module) diff --git a/src/python/m5/simulate.py b/src/python/m5/simulate.py index 4a0509504b..66e6a08d07 100644 --- a/src/python/m5/simulate.py +++ b/src/python/m5/simulate.py @@ -50,6 +50,7 @@ from . import stats from . import SimObject from . import ticks from . import objects +from . import params from m5.util.dot_writer import do_dot, do_dvfs_dot from m5.util.dot_writer_ruby import do_ruby_dot @@ -59,12 +60,6 @@ from .util import attrdict # define a MaxTick parameter, unsigned 64 bit MaxTick = 2**64 - 1 -_memory_modes = { - "atomic" : objects.params.atomic, - "timing" : objects.params.timing, - "atomic_noncaching" : objects.params.atomic_noncaching, - } - _drain_manager = _m5.drain.DrainManager.instance() # The final hook to generate .ini files. Called from the user script @@ -292,8 +287,9 @@ def switchCpus(system, cpuList, verbose=True): raise RuntimeError( "Old CPU (%s) does not support CPU handover." % (old_cpu,)) + MemoryMode = params.allEnums["MemoryMode"] try: - memory_mode = _memory_modes[memory_mode_name] + memory_mode = MemoryMode(memory_mode_name).getValue() except KeyError: raise RuntimeError("Invalid memory mode (%s)" % memory_mode_name) @@ -309,7 +305,7 @@ def switchCpus(system, cpuList, verbose=True): # Flush the memory system if we are switching to a memory mode # that disables caches. This typically happens when switching to a # hardware virtualized CPU. - if memory_mode == objects.params.atomic_noncaching: + if memory_mode == MemoryMode("atomic_noncaching").getValue(): memWriteback(system) memInvalidate(system)