[xcc,sim] implement FP using softfloat
[riscv-isa-sim.git] / riscv / processor.cc
index 5751c70006e2f2dc02d62857ea4bdbf12b14caff..7ca015d765eab95ccf58aff43de81a90aaaf3220 100644 (file)
@@ -1,11 +1,13 @@
 #include <bfd.h>
 #include <dis-asm.h>
+#include <cmath>
 #include <cstdlib>
 #include <iostream>
 #include "processor.h"
 #include "common.h"
 #include "config.h"
 #include "sim.h"
+#include "softfloat.h"
 
 processor_t::processor_t(sim_t* _sim, char* _mem, size_t _memsz)
   : sim(_sim), mmu(_mem,_memsz)
@@ -17,6 +19,7 @@ processor_t::processor_t(sim_t* _sim, char* _mem, size_t _memsz)
   epc = 0;
   badvaddr = 0;
   set_sr(SR_S);
+  set_fsr(0);
 
   memset(counters,0,sizeof(counters));
 
@@ -45,6 +48,11 @@ void processor_t::set_sr(uint32_t val)
   gprlen = ((sr & SR_S) ? (sr & SR_KX) : (sr & SR_UX)) ? 64 : 32;
 }
 
+void processor_t::set_fsr(uint32_t val)
+{
+  fsr = val & ~FSR_ZERO;
+}
+
 void processor_t::step(size_t n, bool noisy)
 {
   size_t i = 0;