diff options
author | Michal Terepeta <michalt@google.com> | 2023-07-17 06:06:31 +0000 |
---|---|---|
committer | Michal Terepeta <michalt@google.com> | 2023-07-20 06:04:55 +0000 |
commit | cb013516665addb45dadd197028762fd3757bdb0 (patch) | |
tree | 8dd1e99d5cb3010ff1f198ba04040541be7f8e32 /spike_main | |
parent | e85d2923a5e4fdd7d61cd0cc9f0685c97f451769 (diff) | |
download | riscv-isa-sim-cb013516665addb45dadd197028762fd3757bdb0.zip riscv-isa-sim-cb013516665addb45dadd197028762fd3757bdb0.tar.gz riscv-isa-sim-cb013516665addb45dadd197028762fd3757bdb0.tar.bz2 |
Introduce `abstract_mem_t` to allow custom implementations
This change allows to create custom implementations of `abstract_mem_t`
and inject them when constructing `sim_t`. The current `mem_t`
implementation remains unchanged.
Fixes #1408.
Diffstat (limited to 'spike_main')
-rw-r--r-- | spike_main/spike.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/spike_main/spike.cc b/spike_main/spike.cc index 4766f6d..7b28e25 100644 --- a/spike_main/spike.cc +++ b/spike_main/spike.cc @@ -104,7 +104,7 @@ static std::ifstream::pos_type get_file_size(const char *filename) } static void read_file_bytes(const char *filename,size_t fileoff, - mem_t* mem, size_t memoff, size_t read_sz) + abstract_mem_t* mem, size_t memoff, size_t read_sz) { std::ifstream in(filename, std::ios::in | std::ios::binary); in.seekg(fileoff, std::ios::beg); @@ -260,9 +260,9 @@ static std::vector<mem_cfg_t> parse_mem_layout(const char* arg) return merged_mem; } -static std::vector<std::pair<reg_t, mem_t*>> make_mems(const std::vector<mem_cfg_t> &layout) +static std::vector<std::pair<reg_t, abstract_mem_t*>> make_mems(const std::vector<mem_cfg_t> &layout) { - std::vector<std::pair<reg_t, mem_t*>> mems; + std::vector<std::pair<reg_t, abstract_mem_t*>> mems; mems.reserve(layout.size()); for (const auto &cfg : layout) { mems.push_back(std::make_pair(cfg.get_base(), new mem_t(cfg.get_size()))); @@ -473,7 +473,8 @@ int main(int argc, char** argv) if (!*argv1) help(); - std::vector<std::pair<reg_t, mem_t*>> mems = make_mems(cfg.mem_layout()); + std::vector<std::pair<reg_t, abstract_mem_t*>> mems = + make_mems(cfg.mem_layout()); if (kernel && check_file_exists(kernel)) { const char *isa = cfg.isa(); |