arch,sim: Promote the m5ops_base param to the System base class.
authorGabe Black <gabeblack@google.com>
Tue, 26 Nov 2019 00:22:57 +0000 (16:22 -0800)
committerGabe Black <gabeblack@google.com>
Tue, 7 Jan 2020 23:31:51 +0000 (23:31 +0000)
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 <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/ArmSystem.py
src/arch/arm/system.cc
src/arch/arm/system.hh
src/sim/System.py
src/sim/system.cc
src/sim/system.hh

index 5629ab5114372fe81995d56731675db5ba34a265..0e642153b6b905869b89dadc84374459cd33a95e 100644 (file)
@@ -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.")
 
index c3c2b8d48b3ca3d4ff2767e0ea4bb350afbe2ace..5c32059f4636f7994e330913761be4bd61e66b9a 100644 (file)
@@ -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)
 {
index a9048051eaed9660c5368979f761241f57c68680..90fed14a790f676d4d8a805441bbcba6855d2054 100644 (file)
@@ -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.
      */
index 619b54ed1d073d092acc1150cde7cbd154abb68a..e49d26a0761c4fca111b7332f3400350ebfaea39 100644 (file)
@@ -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)')
index 97ebd1d7c07f0a79acf0870a7809c8cf9eaadd95..0cc328c22d08e79369908fd385cfc8ec4b981fa8 100644 (file)
@@ -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)
 {
index 338b12619310655014acc0a560b653097e686e21..6c63b327fde473c419dbd8aa73bb086ef11cc130 100644 (file)
@@ -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();