aboutsummaryrefslogtreecommitdiff
path: root/riscv/cfg.h
diff options
context:
space:
mode:
authorRupert Swarbrick <rswarbrick@gmail.com>2022-04-11 10:59:20 +0100
committerRupert Swarbrick <rswarbrick@lowrisc.org>2022-04-12 11:10:45 +0100
commit61b4f61a857de65d1a341f55597bfceeb7b7690d (patch)
treee4537514b7522fba146bf3aeb1bb27b7fd34c3c9 /riscv/cfg.h
parente4aaed1b7b08998a6b6aefa34f7c575e292dde62 (diff)
downloadspike-61b4f61a857de65d1a341f55597bfceeb7b7690d.zip
spike-61b4f61a857de65d1a341f55597bfceeb7b7690d.tar.gz
spike-61b4f61a857de65d1a341f55597bfceeb7b7690d.tar.bz2
Move hartids into cfg_t
The only slightly difficult thing here is that hartids will always be considered "overridden" by the time we get to sim_t::sim_t (either overridden by a command line argument, or overridden when we set default hartids just before the constructor). To allow downstream code to distinguish between "I picked IDs 0, 1, 2, 3 because the user asked for 4 processors" and "The user explicitly asked for IDs 0, 1, 2, 3", we have an extra explicit_hartids field.
Diffstat (limited to 'riscv/cfg.h')
-rw-r--r--riscv/cfg.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/riscv/cfg.h b/riscv/cfg.h
index 1e08f80..6410c81 100644
--- a/riscv/cfg.h
+++ b/riscv/cfg.h
@@ -56,13 +56,16 @@ public:
cfg_t(std::pair<reg_t, reg_t> default_initrd_bounds,
const char *default_bootargs, size_t default_nprocs,
const char *default_isa, const char *default_priv,
- const std::vector<mem_cfg_t> &default_mem_layout)
+ const std::vector<mem_cfg_t> &default_mem_layout,
+ const std::vector<int> default_hartids)
: initrd_bounds(default_initrd_bounds),
bootargs(default_bootargs),
nprocs(default_nprocs),
isa(default_isa),
priv(default_priv),
- mem_layout(default_mem_layout)
+ mem_layout(default_mem_layout),
+ hartids(default_hartids),
+ explicit_hartids(false)
{}
cfg_arg_t<std::pair<reg_t, reg_t>> initrd_bounds;
@@ -72,6 +75,8 @@ public:
cfg_arg_t<const char *> priv;
cfg_arg_t<std::vector<mem_cfg_t>> mem_layout;
std::optional<reg_t> start_pc;
+ cfg_arg_t<std::vector<int>> hartids;
+ bool explicit_hartids;
};
#endif