diff --git a/build-gem5 b/build-gem5 index cdc64be..57e773a 100755 --- a/build-gem5 +++ b/build-gem5 @@ -41,7 +41,7 @@ https://github.com/cirosantilli/linux-kernel-module-cheat-regression#gem5-unit-t def build(self): build_dir = self.get_build_dir() - binaries_dir = os.path.join(self.env['gem5_system_dir'], 'binaries') + binaries_dir = self.env['gem5_system_binaries_dir'] disks_dir = os.path.join(self.env['gem5_system_dir'], 'disks') os.makedirs(binaries_dir, exist_ok=True) os.makedirs(disks_dir, exist_ok=True) diff --git a/common.py b/common.py index 359f377..3f291c5 100644 --- a/common.py +++ b/common.py @@ -852,6 +852,15 @@ Incompatible archs are skipped. env['gem5_executable'] = self.get_gem5_target_path(env, 'gem5') env['gem5_unit_test_target'] = self.get_gem5_target_path(env, 'unittests') env['gem5_system_dir'] = join(env['gem5_build_dir'], 'system') + env['gem5_system_binaries_dir'] = join(env['gem5_system_dir'], 'binaries') + if self.env['is_arm']: + if env['arch'] == 'arm': + gem5_bootloader_basename = 'boot.arm' + elif env['arch'] == 'aarch64': + gem5_bootloader_basename = 'boot.arm64' + env['gem5_bootloader'] = join(env['gem5_system_binaries_dir'], gem5_bootloader_basename) + else: + env['gem5_bootloader'] = None # gem5 source if env['_args_given']['gem5_source_dir']: diff --git a/run b/run index dae9ad0..e20d224 100755 --- a/run +++ b/run @@ -486,7 +486,6 @@ Extra options to append at the end of the emulator command line. gem5_exe_args = self.sh.shlex_split(self.env['gem5_exe_args']) if do_trace: gem5_exe_args.extend(['--debug-flags', trace_type, LF]) - extra_env['M5_PATH'] = self.env['gem5_system_dir'] # https://stackoverflow.com/questions/52312070/how-to-modify-a-file-under-src-python-and-run-it-without-rebuilding-in-gem5/52312071#52312071 extra_env['M5_OVERRIDE_PY_SOURCE'] = 'true' if self.env['trace_stdout']: @@ -624,6 +623,9 @@ Extra options to append at the end of the emulator command line. ), LF ]) + if self.env['gem5_script'] == 'fs' or self.env['gem5_script'] == 'biglittle': + if self.env['gem5_bootloader'] is not None: + cmd.extend(['--bootloader', self.env['gem5_bootloader'], LF]) cmd.extend(['--mem-size', memory, LF]) if self.env['gdb_wait']: # https://stackoverflow.com/questions/49296092/how-to-make-gem5-wait-for-gdb-to-connect-to-reliably-break-at-start-kernel-of-th