X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=spike_main%2Fspike.cc;h=eb57baf5abfe7360ebcd4010dde0807eda8df032;hb=aa8cbb1ccd3856fd5e0437b0e24cfd7a3b794b8e;hp=1205965f81e4b9eb661d7ea5816f35e30c00d4d4;hpb=0185d369153b099be0c363a4ad6a52cec19b80bd;p=riscv-isa-sim.git diff --git a/spike_main/spike.cc b/spike_main/spike.cc index 1205965..eb57baf 100644 --- a/spike_main/spike.cc +++ b/spike_main/spike.cc @@ -36,7 +36,10 @@ static void help() fprintf(stderr, " --extlib= Shared library to load\n"); fprintf(stderr, " --rbb-port= Listen on for remote bitbang connection\n"); fprintf(stderr, " --dump-dts Print device tree string and exit\n"); - fprintf(stderr, " --progsize= progsize for the debug module [default 2]\n"); + fprintf(stderr, " --progsize= Progsize for the debug module [default 2]\n"); + fprintf(stderr, " --debug-sba= Debug bus master supports up to " + " wide accesses [default 0]\n"); + fprintf(stderr, " --debug-auth Debug module requires debugger to authenticate\n"); exit(1); } @@ -47,6 +50,8 @@ static std::vector> make_mems(const char* arg) auto mb = strtoull(arg, &p, 0); if (*p == 0) { reg_t size = reg_t(mb) << 20; + if (size != (size_t)size) + throw std::runtime_error("Size would overflow size_t"); return std::vector>(1, std::make_pair(reg_t(DRAM_BASE), new mem_t(size))); } @@ -87,6 +92,8 @@ int main(int argc, char** argv) uint16_t rbb_port = 0; bool use_rbb = false; unsigned progsize = 2; + unsigned max_bus_master_bits = 0; + bool require_authentication = false; std::vector hartids; auto const hartids_parser = [&](const char *s) { @@ -128,6 +135,10 @@ int main(int argc, char** argv) } }); parser.option(0, "progsize", 1, [&](const char* s){progsize = atoi(s);}); + parser.option(0, "debug-sba", 1, + [&](const char* s){max_bus_master_bits = atoi(s);}); + parser.option(0, "debug-auth", 0, + [&](const char* s){require_authentication = true;}); auto argv1 = parser.parse(argv); std::vector htif_args(argv1, (const char*const*)argv + argc); @@ -135,7 +146,7 @@ int main(int argc, char** argv) mems = make_mems("2048"); sim_t s(isa, nprocs, halted, start_pc, mems, htif_args, std::move(hartids), - progsize); + progsize, max_bus_master_bits, require_authentication); std::unique_ptr remote_bitbang((remote_bitbang_t *) NULL); std::unique_ptr jtag_dtm(new jtag_dtm_t(&s.debug_module)); if (use_rbb) {