Browse Source

zfh: support register dump in interactive mode

Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
pull/490/head
Chih-Min Chao 6 years ago
parent
commit
939128f1e0
  1. 9
      riscv/interactive.cc
  2. 1
      riscv/sim.h

9
riscv/interactive.cc

@ -69,6 +69,7 @@ void sim_t::interactive()
funcs["vreg"] = &sim_t::interactive_vreg;
funcs["reg"] = &sim_t::interactive_reg;
funcs["freg"] = &sim_t::interactive_freg;
funcs["fregh"] = &sim_t::interactive_fregh;
funcs["fregs"] = &sim_t::interactive_fregs;
funcs["fregd"] = &sim_t::interactive_fregd;
funcs["pc"] = &sim_t::interactive_pc;
@ -118,6 +119,7 @@ void sim_t::interactive_help(const std::string& cmd, const std::vector<std::stri
std::cerr <<
"Interactive commands:\n"
"reg <core> [reg] # Display [reg] (all if omitted) in <core>\n"
"fregh <core> <reg> # Display half precision <reg> in <core>\n"
"fregs <core> <reg> # Display single precision <reg> in <core>\n"
"fregd <core> <reg> # Display double precision <reg> in <core>\n"
"vreg <core> [reg] # Display vector [reg] (all if omitted) in <core>\n"
@ -296,6 +298,13 @@ void sim_t::interactive_freg(const std::string& cmd, const std::vector<std::stri
fprintf(stderr, "0x%016" PRIx64 "%016" PRIx64 "\n", r.v[1], r.v[0]);
}
void sim_t::interactive_fregh(const std::string& cmd, const std::vector<std::string>& args)
{
fpr f;
f.r = freg(f16_to_f32(f16(get_freg(args))));
fprintf(stderr, "%g\n", isBoxedF32(f.r) ? (double)f.s : NAN);
}
void sim_t::interactive_fregs(const std::string& cmd, const std::vector<std::string>& args)
{
fpr f;

1
riscv/sim.h

@ -105,6 +105,7 @@ private:
void interactive_vreg(const std::string& cmd, const std::vector<std::string>& args);
void interactive_reg(const std::string& cmd, const std::vector<std::string>& args);
void interactive_freg(const std::string& cmd, const std::vector<std::string>& args);
void interactive_fregh(const std::string& cmd, const std::vector<std::string>& args);
void interactive_fregs(const std::string& cmd, const std::vector<std::string>& args);
void interactive_fregd(const std::string& cmd, const std::vector<std::string>& args);
void interactive_pc(const std::string& cmd, const std::vector<std::string>& args);

Loading…
Cancel
Save