diff options
Diffstat (limited to 'arch/sparc64/math-emu/fdivs.c')
-rw-r--r-- | arch/sparc64/math-emu/fdivs.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/sparc64/math-emu/fdivs.c b/arch/sparc64/math-emu/fdivs.c index 704f218c9..41095dc4c 100644 --- a/arch/sparc64/math-emu/fdivs.c +++ b/arch/sparc64/math-emu/fdivs.c @@ -4,10 +4,17 @@ int FDIVS(void *rd, void *rs2, void *rs1) { FP_DECL_S(A); FP_DECL_S(B); FP_DECL_S(R); + int ret = 0; __FP_UNPACK_S(A, rs1); __FP_UNPACK_S(B, rs2); + if(B_c == FP_CLS_ZERO && + A_c != FP_CLS_ZERO) { + ret |= EFLAG_DIVZERO; + if(__FPU_TRAP_P(EFLAG_DIVZERO)) + return ret; + } FP_DIV_S(R, A, B); - __FP_PACK_S(rd, R); - return 1; + return (ret | __FP_PACK_S(rd, R)); } + |