MIPS patch for gcc 4.4

snf <[email protected]> Tue, 08 Feb 2011 19:04:00 -0300
Newsgroups gmane.linux.lib.dietlibc
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

As gcc >= 4.4 doesn't support anymore "=h" while inlining asm(mips), I
have changed the code for a pure-c one.

refs:
http://www.gnu.org/software/gcc/gcc-4.4/changes.html
http://gcc.gnu.org/viewcvs/trunk/gcc/longlong.h?view=markup

snf
- --
- --- dietlibc-0.32/longlong.h    2004-08-12 09:51:36.000000000 -0300
+++ ../dietlibc-0.32/longlong.h    2011-02-08 17:37:52.772484001 -0300
@@ -577,12 +577,22 @@
 #endif /* __m88000__ */
 
 #if defined (__mips__) && W_TYPE_SIZE == 32
+/*
 #define umul_ppmm(w1, w0, u, v) \
   __asm__ ("multu %2,%3"                        \
        : "=l" ((USItype) (w0)),                    \
          "=h" ((USItype) (w1))                    \
        : "d" ((USItype) (u)),                    \
          "d" ((USItype) (v)))
+*/
+#define umul_ppmm(w1, w0, u, v) \
+  do {                                    \
+  UDItype _r;                                 \
+  _r = (UDItype) (USItype) (u) * (USItype) (v);            \
+  (w1) = (USItype) (_r >> 32);                        \
+  (w0) = (USItype) _r;                            \
+  } while (0)
+
 #define UMUL_TIME 10
 #define UDIV_TIME 100
 #endif /* __mips__ */

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNUb3QAAoJEF0pStZ0BNB7hXcH/AvAFo4ykw+bG+UTkjTaZs+w
ZZYYG2EApBFYLGEqpYYOp4X4jNrhI9GnM2+HvhmrYotFZZ0IbbLuxR2h3EObjN9b
01iY9Ei73kPvObyiDBYSfKFcaJ+hI3CiH5yslzGevJ00BqGJH/OP/n2N9Rv5bRgL
iCI+gFO2h4+9H7P1mRzH0+plLPRwHkuUldkllMtpQcLadvx78v3WgIHdGtSGCSJG
dlpcgUpjbFH3VniiqDmbNw7mjwHk9ZLH2tUPI0avGIxIGfr/HKWbS9QrgWj23bmr
P/FV2En92LgTQq86PqSbhPaWtp8lSttD060fVNzkbSA2qhGJsV0iO2QTELaECn0=
=wP1b
-----END PGP SIGNATURE-----