diff options
Diffstat (limited to 'riscv')
-rw-r--r-- | riscv/abstract_device.h | 10 | ||||
-rw-r--r-- | riscv/sim.cc | 6 |
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) { |