diff options
author | Andrew Waterman <andrew@sifive.com> | 2017-04-10 17:35:24 -0700 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2017-04-10 17:35:24 -0700 |
commit | d6fce459767509249311a120fddb21c844dc9b2c (patch) | |
tree | b54272d8ce52f773b13dd33ae94d634538ec6599 /riscv/interactive.cc | |
parent | 5f494a22db29d69893db4b39f488cf67c0ac6437 (diff) | |
download | spike-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.cc | 10 |
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; |