diff options
| author | Prashanth Mundkur <prashanth.mundkur@gmail.com> | 2026-03-10 17:26:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-10 22:26:27 +0000 |
| commit | 4a99fb4a4c6e2447fbdcf4e6d317cd6b4b13d0ba (patch) | |
| tree | 797e8873abef4e50d032b34b4297841fa7505ee5 /c_emulator | |
| parent | 094850656a8ff431c61709636c6a44c17c148f66 (diff) | |
| download | sail-riscv-4a99fb4a4c6e2447fbdcf4e6d317cd6b4b13d0ba.tar.gz sail-riscv-4a99fb4a4c6e2447fbdcf4e6d317cd6b4b13d0ba.tar.bz2 sail-riscv-4a99fb4a4c6e2447fbdcf4e6d317cd6b4b13d0ba.zip | |
Add a `--rv32` option to use a default RV32 configuration. (#1600)
Fixes #1567.
Diffstat (limited to 'c_emulator')
| -rw-r--r-- | c_emulator/config_utils.cpp | 4 | ||||
| -rw-r--r-- | c_emulator/config_utils.h | 2 | ||||
| -rw-r--r-- | c_emulator/riscv_sim.cpp | 11 |
3 files changed, 14 insertions, 3 deletions
diff --git a/c_emulator/config_utils.cpp b/c_emulator/config_utils.cpp index 3617278b..d7534880 100644 --- a/c_emulator/config_utils.cpp +++ b/c_emulator/config_utils.cpp @@ -68,6 +68,10 @@ const char *get_default_config() { return DEFAULT_JSON; } +const char *get_default_rv32_config() { + return DEFAULT_JSON_RV32; +} + const char *get_config_schema() { return CONFIG_SCHEMA; } diff --git a/c_emulator/config_utils.h b/c_emulator/config_utils.h index 1d04459f..7352c6ef 100644 --- a/c_emulator/config_utils.h +++ b/c_emulator/config_utils.h @@ -12,6 +12,8 @@ uint64_t get_config_uint64(const std::vector<const char *> &keypath); const char *get_default_config(); +const char *get_default_rv32_config(); + const char *get_config_schema(); void validate_config_schema(const jsoncons::json &json_config, const std::string &source_desc); diff --git a/c_emulator/riscv_sim.cpp b/c_emulator/riscv_sim.cpp index b5442abb..6ec8b240 100644 --- a/c_emulator/riscv_sim.cpp +++ b/c_emulator/riscv_sim.cpp @@ -126,6 +126,7 @@ struct CLIOptions { bool do_validate_config = false; bool do_print_isa = false; + bool use_rv32_default = false; std::string config_file; std::vector<std::string> config_overrides; std::string term_log; @@ -180,13 +181,17 @@ static CLIOptions parse_cli(int argc, char **argv) { "Enable experimental extensions" ); app.add_flag("--use-abi-names", opts.config_use_abi_names, "Use ABI register names in trace log"); + app.add_flag("--rv32", opts.use_rv32_default, "Use the default RV32 configuration"); app.add_option("--device-tree-blob", opts.dtb_file, "Device tree blob file") ->check(CLI::ExistingFile) ->option_text("<file>"); app.add_option("--terminal-log", opts.term_log, "Terminal log output file")->option_text("<file>"); app.add_option("--test-signature", opts.sig_file, "Test signature file")->option_text("<file>"); - app.add_option("--config", opts.config_file, "Configuration file")->check(CLI::ExistingFile)->option_text("<file>"); + app.add_option("--config", opts.config_file, "Configuration file") + ->check(CLI::ExistingFile) + ->option_text("<file>") + ->excludes("--rv32"); app .add_option( "--config-override", @@ -589,7 +594,7 @@ int inner_main(int argc, char **argv) { return EXIT_SUCCESS; } if (opts.do_print_default_config) { - printf("%s", get_default_config()); + printf("%s", opts.use_rv32_default ? get_default_rv32_config() : get_default_config()); return EXIT_SUCCESS; } if (opts.do_print_config_schema) { @@ -634,7 +639,7 @@ int inner_main(int argc, char **argv) { if (!opts.config_file.empty()) { config_json_string = read_file_to_string(opts.config_file); } else { - config_json_string = get_default_config(); + config_json_string = opts.use_rv32_default ? get_default_rv32_config() : get_default_config(); } // Check json config and merge overrides |
