2 changed files with 58 additions and 0 deletions
@ -0,0 +1,54 @@ |
|||||
|
#include <riscv/sim.h> |
||||
|
|
||||
|
// Copied from spike main.
|
||||
|
// TODO: This should really be provided in libriscv
|
||||
|
static std::vector<std::pair<reg_t, mem_t*>> make_mems(const std::vector<mem_cfg_t> &layout) |
||||
|
{ |
||||
|
std::vector<std::pair<reg_t, mem_t*>> mems; |
||||
|
mems.reserve(layout.size()); |
||||
|
for (const auto &cfg : layout) { |
||||
|
mems.push_back(std::make_pair(cfg.base, new mem_t(cfg.size))); |
||||
|
} |
||||
|
return mems; |
||||
|
} |
||||
|
|
||||
|
int main() |
||||
|
{ |
||||
|
std::vector<mem_cfg_t> mem_cfg { mem_cfg_t(0x80000000, 0x10000000) }; |
||||
|
std::vector<int> hartids = {0}; |
||||
|
cfg_t cfg(std::make_pair(0, 0), |
||||
|
nullptr, |
||||
|
"rv64gcv", |
||||
|
"MSU", |
||||
|
"vlen:128,elen:64", |
||||
|
endianness_little, |
||||
|
16, |
||||
|
mem_cfg, |
||||
|
hartids, |
||||
|
false); |
||||
|
std::vector<std::pair<reg_t, abstract_device_t*>> plugin_devices; |
||||
|
std::vector<std::string> htif_args {"pk", "hello"}; |
||||
|
debug_module_config_t dm_config = { |
||||
|
.progbufsize = 2, |
||||
|
.max_sba_data_width = 0, |
||||
|
.require_authentication = false, |
||||
|
.abstract_rti = 0, |
||||
|
.support_hasel = true, |
||||
|
.support_abstract_csr_access = true, |
||||
|
.support_abstract_fpr_access = true, |
||||
|
.support_haltgroups = true, |
||||
|
.support_impebreak = true |
||||
|
}; |
||||
|
std::vector<std::pair<reg_t, mem_t*>> mems = make_mems(cfg.mem_layout()); |
||||
|
sim_t sim(&cfg, false, |
||||
|
mems, |
||||
|
plugin_devices, |
||||
|
htif_args, |
||||
|
dm_config, |
||||
|
nullptr, |
||||
|
true, |
||||
|
nullptr, |
||||
|
false, |
||||
|
nullptr); |
||||
|
sim.run(); |
||||
|
} |
||||
Loading…
Reference in new issue