summaryrefslogtreecommitdiffstats
path: root/arch/sparc64/math-emu/fdivs.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/math-emu/fdivs.c')
-rw-r--r--arch/sparc64/math-emu/fdivs.c11
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));
}
+