summaryrefslogtreecommitdiff
path: root/src/sim/process.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/process.cc')
-rw-r--r--src/sim/process.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/sim/process.cc b/src/sim/process.cc
index 1654ea5c5..ccaac2096 100644
--- a/src/sim/process.cc
+++ b/src/sim/process.cc
@@ -695,15 +695,22 @@ LiveProcess::create(LiveProcessParams * params)
fatal("Unknown/unsupported operating system.");
}
#elif THE_ISA == ARM_ISA
- if (objFile->getArch() != ObjectFile::Arm &&
- objFile->getArch() != ObjectFile::Thumb)
+ ObjectFile::Arch arch = objFile->getArch();
+ if (arch != ObjectFile::Arm && arch != ObjectFile::Thumb &&
+ arch != ObjectFile::Arm64)
fatal("Object file architecture does not match compiled ISA (ARM).");
switch (objFile->getOpSys()) {
case ObjectFile::UnknownOpSys:
warn("Unknown operating system; assuming Linux.");
// fall through
case ObjectFile::Linux:
- process = new ArmLinuxProcess(params, objFile, objFile->getArch());
+ if (arch == ObjectFile::Arm64) {
+ process = new ArmLinuxProcess64(params, objFile,
+ objFile->getArch());
+ } else {
+ process = new ArmLinuxProcess32(params, objFile,
+ objFile->getArch());
+ }
break;
case ObjectFile::LinuxArmOABI:
fatal("M5 does not support ARM OABI binaries. Please recompile with an"