aboutsummaryrefslogtreecommitdiff
path: root/spike_main
diff options
context:
space:
mode:
authorMichal Terepeta <michalt@google.com>2023-07-17 06:06:31 +0000
committerMichal Terepeta <michalt@google.com>2023-07-20 06:04:55 +0000
commitcb013516665addb45dadd197028762fd3757bdb0 (patch)
tree8dd1e99d5cb3010ff1f198ba04040541be7f8e32 /spike_main
parente85d2923a5e4fdd7d61cd0cc9f0685c97f451769 (diff)
downloadspike-cb013516665addb45dadd197028762fd3757bdb0.zip
spike-cb013516665addb45dadd197028762fd3757bdb0.tar.gz
spike-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.cc9
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();