aboutsummaryrefslogtreecommitdiff
path: root/machine/fp_emulation.h
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-03-09 23:54:14 -0800
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-03-09 23:58:39 -0800
commitccf79891f0f1fcb570f9a63c15270b52477fe7c0 (patch)
treee86a1ef10afca65db9908df90616f58fd8fdbeb5 /machine/fp_emulation.h
parentb94c7a4b07f96f24ae7411780abf874416549f7b (diff)
downloadriscv-pk-ccf79891f0f1fcb570f9a63c15270b52477fe7c0.zip
riscv-pk-ccf79891f0f1fcb570f9a63c15270b52477fe7c0.tar.gz
riscv-pk-ccf79891f0f1fcb570f9a63c15270b52477fe7c0.tar.bz2
Factor emulation routines into multiple files
Diffstat (limited to 'machine/fp_emulation.h')
-rw-r--r--machine/fp_emulation.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/machine/fp_emulation.h b/machine/fp_emulation.h
index d2357b7..8d209e1 100644
--- a/machine/fp_emulation.h
+++ b/machine/fp_emulation.h
@@ -46,6 +46,7 @@
asm volatile ("":"+r"(tp)); })
# define softfloat_raiseFlags(which) set_csr(fflags, which)
# define softfloat_roundingMode ({ register int tp asm("tp"); tp; })
+# define SET_FS_DIRTY() ((void) 0)
#else
# define GET_F64_REG(insn, pos, regs) (*(int64_t*)((void*)((regs) + 32) + (((insn) >> ((pos)-3)) & 0xf8)))
# define SET_F64_REG(insn, pos, regs, val) (GET_F64_REG(insn, pos, regs) = (val))
@@ -66,6 +67,7 @@
asm volatile ("":"+r"(tp)); })
# define softfloat_raiseFlags(which) ({ asm volatile ("or tp, tp, %0" :: "rI"(which)); })
# define softfloat_roundingMode ({ register int tp asm("tp"); tp >> 13; })
+# define SET_FS_DIRTY() set_csr(mstatus, MSTATUS_FS)
#endif
#define GET_F32_RS1(insn, regs) (GET_F32_REG(insn, 15, regs))
@@ -76,6 +78,5 @@
#define GET_F64_RS3(insn, regs) (GET_F64_REG(insn, 27, regs))
#define SET_F32_RD(insn, regs, val) (SET_F32_REG(insn, 7, regs, val), SET_FS_DIRTY())
#define SET_F64_RD(insn, regs, val) (SET_F64_REG(insn, 7, regs, val), SET_FS_DIRTY())
-#define SET_FS_DIRTY() set_csr(mstatus, MSTATUS_FS)
#endif