aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscv/cfg.h7
-rw-r--r--riscv/sim.cc5
-rw-r--r--riscv/sim.h3
-rw-r--r--spike_main/spike.cc8
4 files changed, 12 insertions, 11 deletions
diff --git a/riscv/cfg.h b/riscv/cfg.h
index bee5051..b2f8a94 100644
--- a/riscv/cfg.h
+++ b/riscv/cfg.h
@@ -28,11 +28,14 @@ private:
class cfg_t
{
public:
- cfg_t(std::pair<reg_t, reg_t> default_initrd_bounds)
- : initrd_bounds(default_initrd_bounds)
+ cfg_t(std::pair<reg_t, reg_t> default_initrd_bounds,
+ const char *default_bootargs)
+ : initrd_bounds(default_initrd_bounds),
+ bootargs(default_bootargs)
{}
cfg_arg_t<std::pair<reg_t, reg_t>> initrd_bounds;
+ cfg_arg_t<const char *> bootargs;
};
#endif
diff --git a/riscv/sim.cc b/riscv/sim.cc
index 9bfa17a..e825011 100644
--- a/riscv/sim.cc
+++ b/riscv/sim.cc
@@ -30,7 +30,7 @@ static void handle_signal(int sig)
sim_t::sim_t(const cfg_t *cfg,
const char* isa_string, const char* priv, const char* varch,
- size_t nprocs, bool halted, bool real_time_clint, const char* bootargs,
+ size_t nprocs, bool halted, bool real_time_clint,
reg_t start_pc, std::vector<std::pair<reg_t, mem_t*>> mems,
std::vector<std::pair<reg_t, abstract_device_t*>> plugin_devices,
const std::vector<std::string>& args,
@@ -48,7 +48,6 @@ sim_t::sim_t(const cfg_t *cfg,
mems(mems),
plugin_devices(plugin_devices),
procs(std::max(nprocs, size_t(1))),
- bootargs(bootargs),
start_pc(start_pc),
dtb_file(dtb_file ? dtb_file : ""),
dtb_enabled(dtb_enabled),
@@ -314,7 +313,7 @@ void sim_t::make_dtb()
std::pair<reg_t, reg_t> initrd_bounds = cfg->initrd_bounds();
dts = make_dts(INSNS_PER_RTC_TICK, CPU_HZ,
initrd_bounds.first, initrd_bounds.second,
- bootargs, procs, mems);
+ cfg->bootargs(), procs, mems);
dtb = dts_compile(dts);
}
diff --git a/riscv/sim.h b/riscv/sim.h
index 31c9254..1bb3597 100644
--- a/riscv/sim.h
+++ b/riscv/sim.h
@@ -34,7 +34,7 @@ class sim_t : public htif_t, public simif_t
public:
sim_t(const cfg_t *cfg,
const char* isa, const char* priv, const char* varch, size_t _nprocs,
- bool halted, bool real_time_clint, const char* bootargs,
+ bool halted, bool real_time_clint,
reg_t start_pc, std::vector<std::pair<reg_t, mem_t*>> mems,
std::vector<std::pair<reg_t, abstract_device_t*>> plugin_devices,
const std::vector<std::string>& args, const std::vector<int> hartids,
@@ -78,7 +78,6 @@ private:
mmu_t* debug_mmu; // debug port into main memory
std::vector<processor_t*> procs;
std::pair<reg_t, reg_t> initrd_range;
- const char* bootargs;
reg_t start_pc;
std::string dts;
std::string dtb;
diff --git a/spike_main/spike.cc b/spike_main/spike.cc
index 6fb952d..2ff9a23 100644
--- a/spike_main/spike.cc
+++ b/spike_main/spike.cc
@@ -222,7 +222,6 @@ int main(int argc, char** argv)
size_t nprocs = 1;
const char* kernel = NULL;
reg_t kernel_offset, kernel_size;
- const char* bootargs = NULL;
reg_t start_pc = reg_t(-1);
std::vector<std::pair<reg_t, mem_t*>> mems;
std::vector<std::pair<reg_t, abstract_device_t*>> plugin_devices;
@@ -253,7 +252,8 @@ int main(int argc, char** argv)
.support_impebreak = true
};
std::vector<int> hartids;
- cfg_t cfg(/*default_initrd_bounds=*/std::make_pair((reg_t)0, (reg_t)0));
+ cfg_t cfg(/*default_initrd_bounds=*/std::make_pair((reg_t)0, (reg_t)0),
+ /*default_bootargs=*/nullptr);
auto const hartids_parser = [&](const char *s) {
std::string const str(s);
@@ -340,7 +340,7 @@ int main(int argc, char** argv)
parser.option(0, "dtb", 1, [&](const char *s){dtb_file = s;});
parser.option(0, "kernel", 1, [&](const char* s){kernel = s;});
parser.option(0, "initrd", 1, [&](const char* s){initrd = s;});
- parser.option(0, "bootargs", 1, [&](const char* s){bootargs = s;});
+ parser.option(0, "bootargs", 1, [&](const char* s){cfg.bootargs = s;});
parser.option(0, "real-time-clint", 0, [&](const char *s){real_time_clint = true;});
parser.option(0, "extlib", 1, [&](const char *s){
void *lib = dlopen(s, RTLD_NOW | RTLD_GLOBAL);
@@ -445,7 +445,7 @@ int main(int argc, char** argv)
#endif
sim_t s(&cfg, isa, priv, varch, nprocs, halted, real_time_clint,
- bootargs, start_pc, mems, plugin_devices, htif_args,
+ start_pc, mems, plugin_devices, htif_args,
std::move(hartids), dm_config, log_path, dtb_enabled, dtb_file,
#ifdef HAVE_BOOST_ASIO
io_service_ptr, acceptor_ptr,