changeset 3ea92bc6393b in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=3ea92bc6393b
description:
        sim: remove kernel mapping check for baremetal workloads

        Baremetal workloads are specified using the "kernel" parameter, but
        don't always have the correct address mappings. This patch adds a
        boolean flag to the system and bypasses the kernel addr mapping checks
        when running in baremetal mode.

diffstat:

 src/sim/System.py |   2 ++
 src/sim/system.cc |  22 ++++++++++++++--------
 2 files changed, 16 insertions(+), 8 deletions(-)

diffs (49 lines):

diff -r c7187ee80868 -r 3ea92bc6393b src/sim/System.py
--- a/src/sim/System.py Wed Aug 13 06:57:31 2014 -0400
+++ b/src/sim/System.py Wed Aug 13 06:57:35 2014 -0400
@@ -84,6 +84,8 @@
     init_param = Param.UInt64(0, "numerical value to pass into simulator")
     boot_osflags = Param.String("a", "boot flags to pass to the kernel")
     kernel = Param.String("", "file that contains the kernel code")
+    kernel_addr_check = Param.Bool(True,
+        "whether to address check on kernel (disable for baremetal)")
     readfile = Param.String("", "file to read startup script from")
     symbolfile = Param.String("", "file to get the symbols from")
     load_addr_mask = Param.UInt64(0xffffffffff,
diff -r c7187ee80868 -r 3ea92bc6393b src/sim/system.cc
--- a/src/sim/system.cc Wed Aug 13 06:57:31 2014 -0400
+++ b/src/sim/system.cc Wed Aug 13 06:57:35 2014 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2013 ARM Limited
+ * Copyright (c) 2011-2014 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -274,13 +274,19 @@
          * Load the kernel code into memory
          */
         if (params()->kernel != "")  {
-            // Validate kernel mapping before loading binary
-            if (!(isMemAddr((kernelStart & loadAddrMask) + loadAddrOffset) &&
-                     isMemAddr((kernelEnd & loadAddrMask) + loadAddrOffset))) {
-                fatal("Kernel is mapped to invalid location (not memory). "
-                      "kernelStart 0x(%x) - kernelEnd 0x(%x) %#x:%#x\n", 
kernelStart,
-                      kernelEnd, (kernelStart & loadAddrMask) + loadAddrOffset,
-                      (kernelEnd & loadAddrMask) + loadAddrOffset);
+            if (params()->kernel_addr_check) {
+                // Validate kernel mapping before loading binary
+                if (!(isMemAddr((kernelStart & loadAddrMask) +
+                                loadAddrOffset) &&
+                      isMemAddr((kernelEnd & loadAddrMask) +
+                                loadAddrOffset))) {
+                    fatal("Kernel is mapped to invalid location (not memory). "
+                          "kernelStart 0x(%x) - kernelEnd 0x(%x) %#x:%#x\n",
+                          kernelStart,
+                          kernelEnd, (kernelStart & loadAddrMask) +
+                          loadAddrOffset,
+                          (kernelEnd & loadAddrMask) + loadAddrOffset);
+                }
             }
             // Load program sections into memory
             kernel->loadSections(physProxy, loadAddrMask, loadAddrOffset);
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to