aboutsummaryrefslogtreecommitdiff
path: root/riscv/interactive.cc
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2017-04-10 17:35:24 -0700
committerAndrew Waterman <andrew@sifive.com>2017-04-10 17:35:24 -0700
commitd6fce459767509249311a120fddb21c844dc9b2c (patch)
treeb54272d8ce52f773b13dd33ae94d634538ec6599 /riscv/interactive.cc
parent5f494a22db29d69893db4b39f488cf67c0ac6437 (diff)
downloadspike-d6fce459767509249311a120fddb21c844dc9b2c.zip
spike-d6fce459767509249311a120fddb21c844dc9b2c.tar.gz
spike-d6fce459767509249311a120fddb21c844dc9b2c.tar.bz2
Implement new FP encoding
https://groups.google.com/a/groups.riscv.org/d/msg/isa-dev/_r7hBlzsEd8/cWPyJKMzCQAJ
Diffstat (limited to 'riscv/interactive.cc')
-rw-r--r--riscv/interactive.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/riscv/interactive.cc b/riscv/interactive.cc
index ee88375..31b9162 100644
--- a/riscv/interactive.cc
+++ b/riscv/interactive.cc
@@ -66,6 +66,7 @@ void sim_t::interactive()
funcs["r"] = funcs["run"];
funcs["rs"] = &sim_t::interactive_run_silent;
funcs["reg"] = &sim_t::interactive_reg;
+ funcs["freg"] = &sim_t::interactive_freg;
funcs["fregs"] = &sim_t::interactive_fregs;
funcs["fregd"] = &sim_t::interactive_fregd;
funcs["pc"] = &sim_t::interactive_pc;
@@ -199,7 +200,7 @@ reg_t sim_t::get_reg(const std::vector<std::string>& args)
return p->state.XPR[r];
}
-reg_t sim_t::get_freg(const std::vector<std::string>& args)
+freg_t sim_t::get_freg(const std::vector<std::string>& args)
{
if(args.size() != 2)
throw trap_interactive();
@@ -231,11 +232,16 @@ void sim_t::interactive_reg(const std::string& cmd, const std::vector<std::strin
union fpr
{
- reg_t r;
+ freg_t r;
float s;
double d;
};
+void sim_t::interactive_freg(const std::string& cmd, const std::vector<std::string>& args)
+{
+ fprintf(stderr, "0x%016" PRIx64 "\n", get_freg(args).v);
+}
+
void sim_t::interactive_fregs(const std::string& cmd, const std::vector<std::string>& args)
{
fpr f;