]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/mips/math-emu/ieee754sp.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
[karo-tx-linux.git] / arch / mips / math-emu / ieee754sp.c
index e0b2c450b9634caadcd24d5a25d3f58d4ad2f805..260e68965907283b7f6ef8286f0bbd0f4fc3ad43 100644 (file)
@@ -54,10 +54,13 @@ union ieee754sp __cold ieee754sp_nanxcpt(union ieee754sp r)
        assert(ieee754sp_issnan(r));
 
        ieee754_setcx(IEEE754_INVALID_OPERATION);
-       if (ieee754_csr.nan2008)
+       if (ieee754_csr.nan2008) {
                SPMANT(r) |= SP_MBIT(SP_FBITS - 1);
-       else
-               r = ieee754sp_indef();
+       } else {
+               SPMANT(r) &= ~SP_MBIT(SP_FBITS - 1);
+               if (!ieee754sp_isnan(r))
+                       SPMANT(r) |= SP_MBIT(SP_FBITS - 2);
+       }
 
        return r;
 }
@@ -138,7 +141,8 @@ union ieee754sp ieee754sp_format(int sn, int xe, unsigned xm)
                } else {
                        /* sticky right shift es bits
                         */
-                       SPXSRSXn(es);
+                       xm = XSPSRS(xm, es);
+                       xe += es;
                        assert((xm & (SP_HIDDEN_BIT << 3)) == 0);
                        assert(xe == SP_EMIN);
                }