Skip to content

Commit c536aff

Browse files
jerryz123abejgonzalez
authored andcommitted
Pass cfg into make_dts
1 parent 47a57ee commit c536aff

File tree

3 files changed

+15
-18
lines changed

3 files changed

+15
-18
lines changed

riscv/dts.cc

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,17 @@
1313
#include <sys/types.h>
1414

1515
std::string make_dts(size_t insns_per_rtc_tick, size_t cpu_hz,
16-
reg_t initrd_start, reg_t initrd_end,
17-
const char* bootargs,
18-
size_t pmpregions,
19-
size_t pmpgranularity,
20-
std::vector<processor_t*> procs,
16+
const cfg_t* cfg,
17+
const isa_parser_t* isa,
2118
std::vector<std::pair<reg_t, abstract_mem_t*>> mems,
2219
std::string device_nodes)
2320
{
21+
reg_t initrd_start = cfg->initrd_bounds.first;
22+
reg_t initrd_end = cfg->initrd_bounds.second;
23+
const char* bootargs = cfg->bootargs;
24+
reg_t pmpregions = cfg->pmpregions;
25+
reg_t pmpgranularity = cfg->pmpgranularity;
26+
2427
std::stringstream s;
2528
s << std::dec <<
2629
"/dts-v1/;\n"
@@ -54,14 +57,14 @@ std::string make_dts(size_t insns_per_rtc_tick, size_t cpu_hz,
5457
" #address-cells = <1>;\n"
5558
" #size-cells = <0>;\n"
5659
" timebase-frequency = <" << (cpu_hz/insns_per_rtc_tick) << ">;\n";
57-
for (size_t i = 0; i < procs.size(); i++) {
60+
for (size_t i = 0; i < cfg->nprocs(); i++) {
5861
s << " CPU" << i << ": cpu@" << i << " {\n"
5962
" device_type = \"cpu\";\n"
60-
" reg = <" << i << ">;\n"
63+
" reg = <" << cfg->hartids[i] << ">;\n"
6164
" status = \"okay\";\n"
6265
" compatible = \"riscv\";\n"
63-
" riscv,isa = \"" << procs[i]->get_isa().get_isa_string() << "\";\n"
64-
" mmu-type = \"riscv," << (procs[i]->get_isa().get_max_xlen() <= 32 ? "sv32" : "sv57") << "\";\n"
66+
" riscv,isa = \"" << isa->get_isa_string() << "\";\n"
67+
" mmu-type = \"riscv," << (isa->get_max_xlen() <= 32 ? "sv32" : "sv57") << "\";\n"
6568
" riscv,pmpregions = <" << pmpregions << ">;\n"
6669
" riscv,pmpgranularity = <" << pmpgranularity << ">;\n"
6770
" clock-frequency = <" << cpu_hz << ">;\n"

riscv/dts.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@
77
#include <string>
88

99
std::string make_dts(size_t insns_per_rtc_tick, size_t cpu_hz,
10-
reg_t initrd_start, reg_t initrd_end,
11-
const char* bootargs,
12-
size_t pmpregions,
13-
size_t pmpgranularity,
14-
std::vector<processor_t*> procs,
10+
const cfg_t* cfg,
11+
const isa_parser_t* isa,
1512
std::vector<std::pair<reg_t, abstract_mem_t*>> mems,
1613
std::string device_nodes);
1714

riscv/sim.cc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,7 @@ sim_t::sim_t(const cfg_t *cfg, bool halted,
141141
const std::vector<std::string>& sargs = factory_sargs.second;
142142
device_nodes.append(factory->generate_dts(this, sargs));
143143
}
144-
dts = make_dts(INSNS_PER_RTC_TICK, CPU_HZ,
145-
initrd_bounds.first, initrd_bounds.second,
146-
cfg->bootargs, cfg->pmpregions, cfg->pmpgranularity,
147-
procs, mems, device_nodes);
144+
dts = make_dts(INSNS_PER_RTC_TICK, CPU_HZ, cfg, &isa, mems, device_nodes);
148145
dtb = dts_compile(dts);
149146
}
150147

0 commit comments

Comments
 (0)