Hello,

I was able to build package gmp-ecm_6.4.4+ds-2 with patch that is attached.

First part of patch is taken from upstream (file longlong.h)
I had to add second part (file sp.h) in order to build package successfully.
Patch is attached.

Alternatively, if  following code for umul_ppm is used, instead of upstream 
patch,
package also does build successfully.
#define umul_ppmm(w1, w0, u, v) \
   __asm__ ("multu %2,%3\n\tmflo %0\n\tmfhi %1"                         \
           : "=d" (w0), "=d" (w1) : "d" (u), "d" (v))

Thank you!

Regards,
Jurica

--- gmp-ecm-6.4.4+ds.orig/longlong.h
+++ gmp-ecm-6.4.4+ds/longlong.h
@@ -931,10 +931,19 @@ extern UWtype __MPN(udiv_qrnnd) _PROTO (
 #endif /* __m88000__ */
 
 #if defined (__mips) && W_TYPE_SIZE == 32
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#if __GMP_GNUC_PREREQ (4,4)
+ #define umul_ppmm(w1, w0, u, v) \
+   do {                                                                  \
+     UDItype __ll = (UDItype)(u) * (v);                                  \
+     w1 = __ll >> 32;                                                    \
+     w0 = __ll;                                                          \
+   } while (0)
+#endif
+#if !defined (umul_ppmm) && __GMP_GNUC_PREREQ (2,7)
 #define umul_ppmm(w1, w0, u, v) \
   __asm__ ("multu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v))
-#else
+#endif
+#if !defined (umul_ppmm)
 #define umul_ppmm(w1, w0, u, v) \
   __asm__ ("multu %2,%3\n\tmflo %0\n\tmfhi %1"				\
 	   : "=d" (w0), "=d" (w1) : "d" (u), "d" (v))
--- gmp-ecm-6.4.4+ds.orig/sp.h
+++ gmp-ecm-6.4.4+ds/sp.h
@@ -69,7 +69,7 @@ extern size_t MPZSPV_NORMALISE_STRIDE;
  * note that a small prime must be the size of a GMP limb */
 typedef mp_limb_t UWtype;
 typedef unsigned int UHWtype;
-#if (defined(_PA_RISC1_1) && defined(__GNUC__))
+#if ((defined(_PA_RISC1_1) || defined(__mips)) && defined(__GNUC__))
 /* this seems to be needed, otherwise umul_ppmm() does not work properly */
 typedef mp_limb_t USItype __attribute__ ((mode (SI)));
 typedef mp_limb_t UDItype __attribute__ ((mode (DI)));
-- 
debian-science-maintainers mailing list
debian-science-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-science-maintainers

Reply via email to