[svn] gcry - r1421 - branches/LIBGCRYPT-1-4-BRANCH/mpi

svn author wk cvs at cvs.gnupg.org
Mon Feb 22 12:35:19 CET 2010


Author: wk
Date: 2010-02-22 12:35:18 +0100 (Mon, 22 Feb 2010)
New Revision: 1421

Modified:
   branches/LIBGCRYPT-1-4-BRANCH/mpi/ChangeLog
   branches/LIBGCRYPT-1-4-BRANCH/mpi/longlong.h
Log:
Fix for gcc 4.4 on mips.


Modified: branches/LIBGCRYPT-1-4-BRANCH/mpi/ChangeLog
===================================================================
--- branches/LIBGCRYPT-1-4-BRANCH/mpi/ChangeLog	2010-01-21 21:36:43 UTC (rev 1420)
+++ branches/LIBGCRYPT-1-4-BRANCH/mpi/ChangeLog	2010-02-22 11:35:18 UTC (rev 1421)
@@ -1,3 +1,8 @@
+2010-02-22  Aurelien Jarno <aurel32 at debian.org>  (wk)
+
+	* longlong.h (umul_ppmm) <mips> [__GNUC__ >= 4.4]: Patch according
+	to recommended gcc 4.4 changes.
+
 2009-12-09  Werner Koch  <wk at g10code.com>
 
 	* config.links: Remove asm modules for all sparc64.  This is

Modified: branches/LIBGCRYPT-1-4-BRANCH/mpi/longlong.h
===================================================================
--- branches/LIBGCRYPT-1-4-BRANCH/mpi/longlong.h	2010-01-21 21:36:43 UTC (rev 1420)
+++ branches/LIBGCRYPT-1-4-BRANCH/mpi/longlong.h	2010-02-22 11:35:18 UTC (rev 1421)
@@ -714,8 +714,16 @@
  **************  MIPS  *****************
  ***************************************/
 #if defined (__mips__) && W_TYPE_SIZE == 32
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#if (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
 #define umul_ppmm(w1, w0, u, v) \
+  do {                                                                  \
+    UDItype _r;                                                         \
+    _r = (UDItype) u * v;                                               \
+    (w1) = _r >> 32;                                                    \
+    (w0) = (USItype) _r;                                                \
+  } while (0)
+#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#define umul_ppmm(w1, w0, u, v) \
   __asm__ ("multu %2,%3"                                                \
 	   : "=l" ((USItype)(w0)),                                      \
 	     "=h" ((USItype)(w1))                                       \
@@ -739,8 +747,17 @@
  **************  MIPS/64  **************
  ***************************************/
 #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#if (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+typedef unsigned int UTItype __attribute__ ((mode (TI)));
 #define umul_ppmm(w1, w0, u, v) \
+  do {                                                                 \
+    UTItype _r;                                                        \
+    _r = (UTItype) u * v;                                              \
+    (w1) = _r >> 64;                                                   \
+    (w0) = (UDItype) _r;                                               \
+  } while (0)
+#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#define umul_ppmm(w1, w0, u, v) \
   __asm__ ("dmultu %2,%3"                                               \
 	   : "=l" ((UDItype)(w0)),                                      \
 	     "=h" ((UDItype)(w1))                                       \




More information about the Gnupg-commits mailing list