stats: update stats for mmap() change.
[gem5.git] / src / arch / arm / ArmSystem.py
index 495211248307dabffd7b5464d8b288d8cb00dcd8..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,64 @@ from m5.params import *
 from System import System
 
 class ArmMachineType(Enum):
-    map = {'RealView_EB' : 827,
-           'RealView_PBX' : 1901,
-           'VersatileExpress' : 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
-    # 0x35 Implementor is '5' from "M5"
-    # 0x0 Variant
-    # 0xf Architecture from CPUID scheme
-    # 0xc00 Primary part number ("c" or higher implies ARM v7)
-    # 0x0 Revision
-    midr_regval = Param.UInt32(0x350fc000, "MIDR value")
-    boot_loader = Param.String("", "File that contains the boot loader code if any")
-    boot_loader_mem = Param.PhysicalMemory(NULL,
-                          "Memory object that boot loader is to be loaded into")
+    multi_proc = Param.Bool(True, "Multiprocessor system?")
+    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'
+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("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,
+        "enable early kernel symbol tables before MMU")
+    enable_context_switch_stats_dump = Param.Bool(False, "enable stats/task info dumping at context switch boundaries")
+
+    panic_on_panic = Param.Bool(False, "Trigger a gem5 panic if the " \
+                                    "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"