Browse Source

Merge pull request #1389 from riscv-software-src/devices

sim_t: Add sim_t::add_device()
pull/1403/head
Jerry Zhao 3 years ago
committed by GitHub
parent
commit
09a3c644d4
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      riscv/sim.cc
  2. 1
      riscv/sim.h

11
riscv/sim.cc

@ -165,9 +165,8 @@ sim_t::sim_t(const cfg_t *cfg, bool halted,
abstract_device_t* device = factory->parse_from_fdt(fdt, this, &device_base);
if (device) {
assert(device_base);
bus.add_device(device_base, device);
std::shared_ptr<abstract_device_t> dev_ptr(device);
devices.push_back(dev_ptr);
add_device(device_base, dev_ptr);
if (i == 0) // clint_factory
clint = std::static_pointer_cast<clint_t>(dev_ptr);
@ -277,6 +276,11 @@ void sim_t::step(size_t n)
}
}
void sim_t::add_device(reg_t addr, std::shared_ptr<abstract_device_t> dev) {
bus.add_device(addr, dev.get());
devices.push_back(dev);
}
void sim_t::set_debug(bool value)
{
debug = value;
@ -369,8 +373,7 @@ void sim_t::set_rom()
rom.resize((rom.size() + align - 1) / align * align);
std::shared_ptr<rom_device_t> boot_rom(new rom_device_t(rom));
bus.add_device(DEFAULT_RSTVEC, boot_rom.get());
devices.push_back(boot_rom);
add_device(DEFAULT_RSTVEC, boot_rom);
}
char* sim_t::addr_to_mem(reg_t paddr) {

1
riscv/sim.h

@ -39,6 +39,7 @@ public:
int run();
void set_debug(bool value);
void set_histogram(bool value);
void add_device(reg_t addr, std::shared_ptr<abstract_device_t> dev);
// Configure logging
//

Loading…
Cancel
Save