tests: Fail checkpoint regressions if no cpt has been taken
[gem5.git] / tests / configs / arm_generic.py
index 79cc5d6ea5d80d9c8098f0e689317cebadf5379d..6606de6bd1ec09f6d35a23a00372c623f4b98f10 100644 (file)
@@ -32,8 +32,6 @@
 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: Andreas Sandberg
 
 from abc import ABCMeta, abstractmethod
 import m5
@@ -56,7 +54,7 @@ class ArmSESystemUniprocessor(BaseSESystemUniprocessor):
     """
 
     def __init__(self, **kwargs):
-        BaseSESystem.__init__(self, **kwargs)
+        super(ArmSESystemUniprocessor, self).__init__(**kwargs)
 
     def create_caches_private(self, cpu):
         # The atomic SE configurations do not use caches
@@ -73,7 +71,7 @@ class LinuxArmSystemBuilder(object):
     ARM-specific create_system method to a class deriving from one of
     the generic base systems.
     """
-    def __init__(self, machine_type, **kwargs):
+    def __init__(self, machine_type, aarch64_kernel, **kwargs):
         """
         Arguments:
           machine_type -- String describing the platform to simulate
@@ -84,9 +82,21 @@ class LinuxArmSystemBuilder(object):
         self.num_cpus = kwargs.get('num_cpus', 1)
         self.mem_size = kwargs.get('mem_size', '256MB')
         self.use_ruby = kwargs.get('use_ruby', False)
+        self.aarch64_kernel = aarch64_kernel
 
     def create_system(self):
-        sc = SysConfig(None, self.mem_size, None)
+        if self.aarch64_kernel:
+            gem5_kernel = "vmlinux.arm64"
+            disk_image = "m5_exit.squashfs.arm64"
+        else:
+            gem5_kernel = "vmlinux.arm"
+            disk_image = "m5_exit.squashfs.arm"
+
+        default_kernels = {
+            "VExpress_GEM5_V1": gem5_kernel,
+        }
+
+        sc = SysConfig(None, self.mem_size, [disk_image], "/dev/sda")
         system = FSConfig.makeArmSystem(self.mem_mode,
                                         self.machine_type, self.num_cpus,
                                         sc, False, ruby=self.use_ruby)
@@ -94,29 +104,27 @@ class LinuxArmSystemBuilder(object):
         # We typically want the simulator to panic if the kernel
         # panics or oopses. This prevents the simulator from running
         # an obviously failed test case until the end of time.
-        system.panic_on_panic = True
-        system.panic_on_oops = True
+        system.workload.panic_on_panic = True
+        system.workload.panic_on_oops = True
 
-        default_kernels = {
-            "VExpress_EMM": "vmlinux.aarch32.ll_20131205.0-gem5",
-            "VExpress_EMM64": "vmlinux.aarch64.20140821",
-        }
-        system.kernel = SysPaths.binary(default_kernels[self.machine_type])
-        default_dtbs = {
-           "VExpress_EMM": "vexpress.aarch32.ll_20131205.0-gem5.{}cpu.dtb" \
-             .format(self.num_cpus),
-           "VExpress_EMM64": "vexpress.aarch64.20140821.dtb",
-        }
-        system.dtb_filename = SysPaths.binary(default_dtbs[self.machine_type])
+        system.workload.object_file = SysPaths.binary(
+                    default_kernels[self.machine_type])
 
         self.init_system(system)
+
+        system.workload.dtb_filename = \
+            os.path.join(m5.options.outdir, 'system.dtb')
+        system.generateDtb(system.workload.dtb_filename)
         return system
 
 class LinuxArmFSSystem(LinuxArmSystemBuilder,
                        BaseFSSystem):
     """Basic ARM full system builder."""
 
-    def __init__(self, machine_type='VExpress_EMM', **kwargs):
+    def __init__(self,
+                 machine_type='VExpress_GEM5_V1',
+                 aarch64_kernel=True,
+                 **kwargs):
         """Initialize an ARM system that supports full system simulation.
 
         Note: Keyword arguments that are not listed below will be
@@ -125,8 +133,9 @@ class LinuxArmFSSystem(LinuxArmSystemBuilder,
         Keyword Arguments:
           machine_type -- String describing the platform to simulate
         """
-        BaseSystem.__init__(self, **kwargs)
-        LinuxArmSystemBuilder.__init__(self, machine_type, **kwargs)
+        BaseFSSystem.__init__(self, **kwargs)
+        LinuxArmSystemBuilder.__init__(
+            self, machine_type, aarch64_kernel, **kwargs)
 
     def create_caches_private(self, cpu):
         # Use the more representative cache configuration
@@ -143,13 +152,21 @@ class LinuxArmFSSystemUniprocessor(LinuxArmSystemBuilder,
     test cases.
     """
 
-    def __init__(self, machine_type='VExpress_EMM', **kwargs):
+    def __init__(self,
+                 machine_type='VExpress_GEM5_V1',
+                 aarch64_kernel=True,
+                 **kwargs):
         BaseFSSystemUniprocessor.__init__(self, **kwargs)
-        LinuxArmSystemBuilder.__init__(self, machine_type, **kwargs)
+        LinuxArmSystemBuilder.__init__(
+            self, machine_type, aarch64_kernel, **kwargs)
 
 class LinuxArmFSSwitcheroo(LinuxArmSystemBuilder, BaseFSSwitcheroo):
     """Uniprocessor ARM system prepared for CPU switching"""
 
-    def __init__(self, machine_type='VExpress_EMM', **kwargs):
+    def __init__(self,
+                 machine_type='VExpress_GEM5_V1',
+                 aarch64_kernel=True,
+                 **kwargs):
         BaseFSSwitcheroo.__init__(self, **kwargs)
-        LinuxArmSystemBuilder.__init__(self, machine_type, **kwargs)
+        LinuxArmSystemBuilder.__init__(
+            self, machine_type, aarch64_kernel, **kwargs)