diff options
author | Jerry Zhao <jerryz123@berkeley.edu> | 2024-06-30 00:08:54 -0700 |
---|---|---|
committer | Jerry Zhao <jerryz123@berkeley.edu> | 2024-06-30 14:14:13 -0700 |
commit | 775c012eb86a99ac529f9190d733f3e92e78c1b5 (patch) | |
tree | 442fe462a0b5df93f09a7f8de8182e9b5403e5d3 /riscv | |
parent | 1b1a333763eae2e74dbf38b39d9adab39c4bed7c (diff) | |
download | spike-775c012eb86a99ac529f9190d733f3e92e78c1b5.zip spike-775c012eb86a99ac529f9190d733f3e92e78c1b5.tar.gz spike-775c012eb86a99ac529f9190d733f3e92e78c1b5.tar.bz2 |
Pass cfg into make_dts
Diffstat (limited to 'riscv')
-rw-r--r-- | riscv/dts.cc | 21 | ||||
-rw-r--r-- | riscv/dts.h | 7 | ||||
-rw-r--r-- | riscv/sim.cc | 5 |
3 files changed, 15 insertions, 18 deletions
diff --git a/riscv/dts.cc b/riscv/dts.cc index 8304171..4f62cdf 100644 --- a/riscv/dts.cc +++ b/riscv/dts.cc @@ -13,14 +13,17 @@ #include <sys/types.h> std::string make_dts(size_t insns_per_rtc_tick, size_t cpu_hz, - reg_t initrd_start, reg_t initrd_end, - const char* bootargs, - size_t pmpregions, - size_t pmpgranularity, - std::vector<processor_t*> procs, + const cfg_t* cfg, + const isa_parser_t* isa, std::vector<std::pair<reg_t, abstract_mem_t*>> mems, std::string device_nodes) { + reg_t initrd_start = cfg->initrd_bounds.first; + reg_t initrd_end = cfg->initrd_bounds.second; + const char* bootargs = cfg->bootargs; + reg_t pmpregions = cfg->pmpregions; + reg_t pmpgranularity = cfg->pmpgranularity; + std::stringstream s; s << std::dec << "/dts-v1/;\n" @@ -54,14 +57,14 @@ std::string make_dts(size_t insns_per_rtc_tick, size_t cpu_hz, " #address-cells = <1>;\n" " #size-cells = <0>;\n" " timebase-frequency = <" << (cpu_hz/insns_per_rtc_tick) << ">;\n"; - for (size_t i = 0; i < procs.size(); i++) { + for (size_t i = 0; i < cfg->nprocs(); i++) { s << " CPU" << i << ": cpu@" << i << " {\n" " device_type = \"cpu\";\n" - " reg = <" << i << ">;\n" + " reg = <" << cfg->hartids[i] << ">;\n" " status = \"okay\";\n" " compatible = \"riscv\";\n" - " riscv,isa = \"" << procs[i]->get_isa().get_isa_string() << "\";\n" - " mmu-type = \"riscv," << (procs[i]->get_isa().get_max_xlen() <= 32 ? "sv32" : "sv57") << "\";\n" + " riscv,isa = \"" << isa->get_isa_string() << "\";\n" + " mmu-type = \"riscv," << (isa->get_max_xlen() <= 32 ? "sv32" : "sv57") << "\";\n" " riscv,pmpregions = <" << pmpregions << ">;\n" " riscv,pmpgranularity = <" << pmpgranularity << ">;\n" " clock-frequency = <" << cpu_hz << ">;\n" diff --git a/riscv/dts.h b/riscv/dts.h index 7afe376..73c0a02 100644 --- a/riscv/dts.h +++ b/riscv/dts.h @@ -7,11 +7,8 @@ #include <string> std::string make_dts(size_t insns_per_rtc_tick, size_t cpu_hz, - reg_t initrd_start, reg_t initrd_end, - const char* bootargs, - size_t pmpregions, - size_t pmpgranularity, - std::vector<processor_t*> procs, + const cfg_t* cfg, + const isa_parser_t* isa, std::vector<std::pair<reg_t, abstract_mem_t*>> mems, std::string device_nodes); diff --git a/riscv/sim.cc b/riscv/sim.cc index d08e274..3b46338 100644 --- a/riscv/sim.cc +++ b/riscv/sim.cc @@ -141,10 +141,7 @@ sim_t::sim_t(const cfg_t *cfg, bool halted, const std::vector<std::string>& sargs = factory_sargs.second; device_nodes.append(factory->generate_dts(this, sargs)); } - dts = make_dts(INSNS_PER_RTC_TICK, CPU_HZ, - initrd_bounds.first, initrd_bounds.second, - cfg->bootargs, cfg->pmpregions, cfg->pmpgranularity, - procs, mems, device_nodes); + dts = make_dts(INSNS_PER_RTC_TICK, CPU_HZ, cfg, &isa, mems, device_nodes); dtb = dts_compile(dts); } |