aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Zhao <jerryz123@berkeley.edu>2023-06-05 16:32:01 -0700
committerJerry Zhao <jerryz123@berkeley.edu>2023-06-20 12:23:47 -0700
commit3ab4107b81e7b6c42bf60010d1fa598e9058a7c9 (patch)
treed074eab69421793e58db19c3325a3c99a594f03d
parent6ae3783b08b86303836babcc7a8b473cf37b7c64 (diff)
downloadriscv-isa-sim-3ab4107b81e7b6c42bf60010d1fa598e9058a7c9.zip
riscv-isa-sim-3ab4107b81e7b6c42bf60010d1fa598e9058a7c9.tar.gz
riscv-isa-sim-3ab4107b81e7b6c42bf60010d1fa598e9058a7c9.tar.bz2
device_t: device_factories should be const
-rw-r--r--riscv/abstract_device.h10
-rw-r--r--riscv/sim.cc6
2 files changed, 8 insertions, 8 deletions
diff --git a/riscv/abstract_device.h b/riscv/abstract_device.h
index 7239b66..90e2b24 100644
--- a/riscv/abstract_device.h
+++ b/riscv/abstract_device.h
@@ -21,16 +21,16 @@ class abstract_device_t {
// parameterized by parsing the DTS
class device_factory_t {
public:
- virtual abstract_device_t* parse_from_fdt(const void* fdt, const sim_t* sim, reg_t* base) = 0;
- virtual std::string generate_dts(const sim_t* sim) = 0;
+ virtual abstract_device_t* parse_from_fdt(const void* fdt, const sim_t* sim, reg_t* base) const = 0;
+ virtual std::string generate_dts(const sim_t* sim) const = 0;
virtual ~device_factory_t() {}
};
#define REGISTER_DEVICE(name, parse, generate) \
class name##_factory_t : public device_factory_t { \
public: \
- name##_t* parse_from_fdt(const void* fdt, const sim_t* sim, reg_t* base) override { return parse(fdt, sim, base); } \
- std::string generate_dts(const sim_t* sim) override { return generate(sim); } \
- }; device_factory_t *name##_factory = new name##_factory_t();
+ name##_t* parse_from_fdt(const void* fdt, const sim_t* sim, reg_t* base) const override { return parse(fdt, sim, base); } \
+ std::string generate_dts(const sim_t* sim) const override { return generate(sim); } \
+ }; const device_factory_t *name##_factory = new name##_factory_t();
#endif
diff --git a/riscv/sim.cc b/riscv/sim.cc
index 3283e5c..50dc4f6 100644
--- a/riscv/sim.cc
+++ b/riscv/sim.cc
@@ -120,7 +120,7 @@ sim_t::sim_t(const cfg_t *cfg, bool halted,
// that's not bus-accessible), but it should handle the normal use cases. In
// particular, the default device tree configuration that you get without
// setting the dtb_file argument has one.
- std::vector<device_factory_t*> device_factories = {
+ std::vector<const device_factory_t*> device_factories = {
clint_factory, // clint must be element 0
plic_factory, // plic must be element 1
ns16550_factory};
@@ -138,7 +138,7 @@ sim_t::sim_t(const cfg_t *cfg, bool halted,
} else {
std::pair<reg_t, reg_t> initrd_bounds = cfg->initrd_bounds();
std::string device_nodes;
- for (device_factory_t *factory : device_factories)
+ for (const device_factory_t *factory : device_factories)
device_nodes.append(factory->generate_dts(this));
dts = make_dts(INSNS_PER_RTC_TICK, CPU_HZ,
initrd_bounds.first, initrd_bounds.second,
@@ -162,7 +162,7 @@ sim_t::sim_t(const cfg_t *cfg, bool halted,
void *fdt = (void *)dtb.c_str();
for (size_t i = 0; i < device_factories.size(); i++) {
- device_factory_t *factory = device_factories[i];
+ const device_factory_t *factory = device_factories[i];
reg_t device_base = 0;
abstract_device_t* device = factory->parse_from_fdt(fdt, this, &device_base);
if (device) {