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
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev