diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-03-09 23:54:14 -0800 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-03-09 23:58:39 -0800 |
commit | ccf79891f0f1fcb570f9a63c15270b52477fe7c0 (patch) | |
tree | e86a1ef10afca65db9908df90616f58fd8fdbeb5 /machine/fp_emulation.h | |
parent | b94c7a4b07f96f24ae7411780abf874416549f7b (diff) | |
download | riscv-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.h | 3 |
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 |