summaryrefslogtreecommitdiff
path: root/src/sim/system.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/system.cc')
-rw-r--r--src/sim/system.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/sim/system.cc b/src/sim/system.cc
index 2dd4d41bd..4871ac824 100644
--- a/src/sim/system.cc
+++ b/src/sim/system.cc
@@ -266,6 +266,13 @@ System::initState()
* Load the kernel code into memory
*/
if (params()->kernel != "") {
+ // Validate kernel mapping before loading binary
+ if (!(isMemAddr(kernelStart & loadAddrMask) &&
+ isMemAddr(kernelEnd & loadAddrMask))) {
+ fatal("Kernel is mapped to invalid location (not memory). "
+ "kernelStart 0x(%x) - kernelEnd 0x(%x)\n", kernelStart,
+ kernelEnd);
+ }
// Load program sections into memory
kernel->loadSections(physProxy, loadAddrMask);