From f7903a2014ac06450c46dd12a4906fbd1ce82153 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Mon, 25 Nov 2019 16:22:57 -0800 Subject: [PATCH] arch,sim: Promote the m5ops_base param to the System base class. This mechanism is shared between ARM and x86, even if x86 has a typical address range it choses to use. By moving this to the base class, it's now possible for anybody to find out where the m5 ops are, and no ISA specific assumptions need to be made. Because the x86 address is well known, it's set in the x86 System subclass as the default. Jira Issue: https://gem5.atlassian.net/browse/GEM5-187 Change-Id: Ifdb9f5cd1ce38b3c4dafa7566c50f245f14cf790 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23180 Reviewed-by: Gabe Black Maintainer: Gabe Black Tested-by: kokoro --- src/arch/arm/ArmSystem.py | 4 ---- src/arch/arm/system.cc | 3 --- src/arch/arm/system.hh | 6 ------ src/sim/System.py | 7 +++++++ src/sim/system.cc | 3 +++ src/sim/system.hh | 6 ++++++ 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index 5629ab511..0e642153b 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -93,10 +93,6 @@ class ArmSystem(System): semihosting = Param.ArmSemihosting(NULL, "Enable support for the Arm semihosting by settings this parameter") - m5ops_base = Param.Addr(0, - "Base of the 64KiB PA range used for memory-mapped m5ops. Set to 0 " - "to disable.") - dtb_filename = Param.String("", "File that contains the Device Tree Blob. Don't use DTB if empty.") diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc index c3c2b8d48..5c32059f4 100644 --- a/src/arch/arm/system.cc +++ b/src/arch/arm/system.cc @@ -75,9 +75,6 @@ ArmSystem::ArmSystem(Params *p) _sveVL(p->sve_vl), _haveLSE(p->have_lse), _havePAN(p->have_pan), - _m5opRange(p->m5ops_base ? - RangeSize(p->m5ops_base, 0x10000) : - AddrRange(1, 0)), // Create an empty range if disabled semihosting(p->semihosting), multiProc(p->multi_proc) { diff --git a/src/arch/arm/system.hh b/src/arch/arm/system.hh index a9048051e..90fed14a7 100644 --- a/src/arch/arm/system.hh +++ b/src/arch/arm/system.hh @@ -138,12 +138,6 @@ class ArmSystem : public System /** True if Priviledge Access Never is implemented */ const unsigned _havePAN; - /** - * Range for memory-mapped m5 pseudo ops. The range will be - * invalid/empty if disabled. - */ - const AddrRange _m5opRange; - /** * True if the Semihosting interface is enabled. */ diff --git a/src/sim/System.py b/src/sim/System.py index 619b54ed1..e49d26a07 100644 --- a/src/sim/System.py +++ b/src/sim/System.py @@ -125,5 +125,12 @@ class System(SimObject): # Provide list of domains that need to be controlled by the handler dvfs_handler = DVFSHandler() + # SE mode doesn't use the ISA System subclasses, and so we need to set an + # ISA specific value in this class directly. + m5ops_base = Param.Addr( + 0xffff0000 if buildEnv['TARGET_ISA'] == 'x86' else 0, + "Base of the 64KiB PA range used for memory-mapped m5ops. Set to 0 " + "to disable.") + if buildEnv['USE_KVM']: kvm_vm = Param.KvmVM(NULL, 'KVM VM (i.e., shared memory domain)') diff --git a/src/sim/system.cc b/src/sim/system.cc index 97ebd1d7c..0cc328c22 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -111,6 +111,9 @@ System::System(Params *p) numWorkIds(p->num_work_ids), thermalModel(p->thermal_model), _params(p), + _m5opRange(p->m5ops_base ? + RangeSize(p->m5ops_base, 0x10000) : + AddrRange(1, 0)), // Create an empty range if disabled totalNumInsts(0), redirectPaths(p->redirect_paths) { diff --git a/src/sim/system.hh b/src/sim/system.hh index 338b12619..6c63b327f 100644 --- a/src/sim/system.hh +++ b/src/sim/system.hh @@ -567,6 +567,12 @@ class System : public SimObject, public PCEventScope protected: Params *_params; + /** + * Range for memory-mapped m5 pseudo ops. The range will be + * invalid/empty if disabled. + */ + const AddrRange _m5opRange; + public: System(Params *p); ~System(); -- 2.30.2