stats: update stats for mmap() change.
[gem5.git] / src / arch / arm / ArmSystem.py
index b48c2a29de814def99ece8b6a6611f99f819074d..9bb939c5e1cfa903a4c80fe714099c170f5003c0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2009 ARM Limited
+# Copyright (c) 2009, 2012-2013, 2015 ARM Limited
 # All rights reserved.
 #
 # The license below extends only to copyright in the software and shall
@@ -40,29 +40,49 @@ from m5.params import *
 from System import System
 
 class ArmMachineType(Enum):
-    map = {'RealView_EB' : 827,
-           'RealView_PBX' : 1901,
-           'VExpress_ELT' : 2272,
-           'VExpress_CA9' : 2272,
-           'VExpress_EMM' : 2272}
+    map = {
+        'RealViewEB' : 827,
+        'RealViewPBX' : 1901,
+        'VExpress_EMM' : 2272,
+        'VExpress_EMM64' : 2272,
+        'DTOnly' : -1,
+    }
 
 class ArmSystem(System):
     type = 'ArmSystem'
     cxx_header = "arch/arm/system.hh"
     load_addr_mask = 0xffffffff
     multi_proc = Param.Bool(True, "Multiprocessor system?")
-    boot_loader = Param.String("", "File that contains the boot loader code if any")
+    boot_loader = VectorParam.String([],
+        "File that contains the boot loader code. Zero or more files may be "
+        "specified. The first boot loader that matches the kernel's "
+        "architecture will be used.")
     gic_cpu_addr = Param.Addr(0, "Addres of the GIC CPU interface")
     flags_addr = Param.Addr(0, "Address of the flags register for MP booting")
+    have_security = Param.Bool(False,
+        "True if Security Extensions are implemented")
+    have_virtualization = Param.Bool(False,
+        "True if Virtualization Extensions are implemented")
+    have_lpae = Param.Bool(False, "True if LPAE is implemented")
+    highest_el_is_64 = Param.Bool(False,
+        "True if the register width of the highest implemented exception level "
+        "is 64 bits (ARMv8)")
+    reset_addr_64 = Param.Addr(0x0,
+        "Reset address if the highest implemented exception level is 64 bits "
+        "(ARMv8)")
+    phys_addr_range_64 = Param.UInt8(40,
+        "Supported physical address range in bits when using AArch64 (ARMv8)")
+    have_large_asid_64 = Param.Bool(False,
+        "True if ASID is 16 bits in AArch64 (ARMv8)")
 
-class LinuxArmSystem(ArmSystem):
-    type = 'LinuxArmSystem'
-    cxx_header = "arch/arm/linux/system.hh"
+class GenericArmSystem(ArmSystem):
+    type = 'GenericArmSystem'
+    cxx_header = "arch/arm/system.hh"
     load_addr_mask = 0x0fffffff
-    machine_type = Param.ArmMachineType('RealView_PBX',
+    machine_type = Param.ArmMachineType('VExpress_EMM',
         "Machine id from http://www.arm.linux.org.uk/developer/machines/")
-    atags_addr = Param.Addr(0x100,
-        "Address where default atags structure should be written")
+    atags_addr = Param.Addr("Address where default atags structure should " \
+                                "be written")
     dtb_filename = Param.String("",
         "File that contains the Device Tree Blob. Don't use DTB if empty.")
     early_kernel_symbols = Param.Bool(False,
@@ -73,3 +93,11 @@ class LinuxArmSystem(ArmSystem):
                                     "guest kernel panics")
     panic_on_oops = Param.Bool(False, "Trigger a gem5 panic if the " \
                                    "guest kernel oopses")
+
+class LinuxArmSystem(GenericArmSystem):
+    type = 'LinuxArmSystem'
+    cxx_header = "arch/arm/linux/system.hh"
+
+class FreebsdArmSystem(GenericArmSystem):
+    type = 'FreebsdArmSystem'
+    cxx_header = "arch/arm/freebsd/system.hh"