aboutsummaryrefslogtreecommitdiff
path: root/spike_main/spike.cc
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2019-11-13 05:22:18 -0800
committerGitHub <noreply@github.com>2019-11-13 05:22:18 -0800
commit2704790df5d16868571bacf4c521df4bac87f452 (patch)
tree5b80d59e0eb989d491f2c7db46a1a960e8236e67 /spike_main/spike.cc
parentff81dea8593c6e51b45e7bed230a2cafd56e4caf (diff)
parent86857aa3511d0a3bb1d28f8a6213013382545f77 (diff)
downloadspike-2704790df5d16868571bacf4c521df4bac87f452.zip
spike-2704790df5d16868571bacf4c521df4bac87f452.tar.gz
spike-2704790df5d16868571bacf4c521df4bac87f452.tar.bz2
Merge pull request #356 from riscv/priv-flag
Add --priv command-line option to set which privilege modes are available
Diffstat (limited to 'spike_main/spike.cc')
-rw-r--r--spike_main/spike.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/spike_main/spike.cc b/spike_main/spike.cc
index 19f877b..4656a0a 100644
--- a/spike_main/spike.cc
+++ b/spike_main/spike.cc
@@ -29,6 +29,7 @@ static void help(int exit_code = 1)
fprintf(stderr, " -h, --help Print this help message\n");
fprintf(stderr, " -H Start halted, allowing a debugger to connect\n");
fprintf(stderr, " --isa=<name> RISC-V ISA string [default %s]\n", DEFAULT_ISA);
+ fprintf(stderr, " --priv=<m|mu|msu> RISC-V privilege modes supported [default %s]\n", DEFAULT_PRIV);
fprintf(stderr, " --varch=<name> RISC-V Vector uArch string [default %s]\n", DEFAULT_VARCH);
fprintf(stderr, " --pc=<address> Override ELF entry point\n");
fprintf(stderr, " --hartids=<a,b,...> Explicitly specify hartids, default is 0,1,...\n");
@@ -119,6 +120,7 @@ int main(int argc, char** argv)
bool log_commits = false;
std::function<extension_t*()> extension;
const char* isa = DEFAULT_ISA;
+ const char* priv = DEFAULT_PRIV;
const char* varch = DEFAULT_VARCH;
uint16_t rbb_port = 0;
bool use_rbb = false;
@@ -207,6 +209,7 @@ int main(int argc, char** argv)
parser.option(0, "l2", 1, [&](const char* s){l2.reset(cache_sim_t::construct(s, "L2$"));});
parser.option(0, "log-cache-miss", 0, [&](const char* s){log_cache = true;});
parser.option(0, "isa", 1, [&](const char* s){isa = s;});
+ parser.option(0, "priv", 1, [&](const char* s){priv = s;});
parser.option(0, "varch", 1, [&](const char* s){varch = s;});
parser.option(0, "device", 1, device_parser);
parser.option(0, "extension", 1, [&](const char* s){extension = find_extension(s);});
@@ -245,7 +248,7 @@ int main(int argc, char** argv)
if (!*argv1)
help();
- sim_t s(isa, varch, nprocs, halted, start_pc, mems, plugin_devices, htif_args,
+ sim_t s(isa, priv, varch, nprocs, halted, start_pc, mems, plugin_devices, htif_args,
std::move(hartids), dm_config);
std::unique_ptr<remote_bitbang_t> remote_bitbang((remote_bitbang_t *) NULL);
std::unique_ptr<jtag_dtm_t> jtag_dtm(