diff options
author | Rupert Swarbrick <rswarbrick@gmail.com> | 2022-03-16 12:03:49 +0000 |
---|---|---|
committer | Rupert Swarbrick <rswarbrick@gmail.com> | 2022-03-18 15:30:56 +0000 |
commit | 2da3ce5d4cc04b96d3de128d904820bba6d962d1 (patch) | |
tree | 2b02124901417d7af89240138cc161c17d640524 | |
parent | b742ddc66fd4ccb6cec98cbd8ebb705fe93ca735 (diff) | |
download | riscv-isa-sim-2da3ce5d4cc04b96d3de128d904820bba6d962d1.zip riscv-isa-sim-2da3ce5d4cc04b96d3de128d904820bba6d962d1.tar.gz riscv-isa-sim-2da3ce5d4cc04b96d3de128d904820bba6d962d1.tar.bz2 |
Fold bootargs parameter in the new cfg_t type
-rw-r--r-- | riscv/cfg.h | 7 | ||||
-rw-r--r-- | riscv/sim.cc | 5 | ||||
-rw-r--r-- | riscv/sim.h | 3 | ||||
-rw-r--r-- | spike_main/spike.cc | 8 |
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, |