From 1298200f89501407736f0657de5d96a3e7a453b0 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Fri, 29 May 2009 16:34:23 +0200 Subject: enable cross-compile of gcc - fix asm issue for mips mpfr (reported upstream) - enable gcc build (not tested, yet, but at least compiles) --- package/mpfr/patches/patch-mpfr-longlong_h | 48 ++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 package/mpfr/patches/patch-mpfr-longlong_h (limited to 'package/mpfr/patches') diff --git a/package/mpfr/patches/patch-mpfr-longlong_h b/package/mpfr/patches/patch-mpfr-longlong_h new file mode 100644 index 000000000..7bf1567ee --- /dev/null +++ b/package/mpfr/patches/patch-mpfr-longlong_h @@ -0,0 +1,48 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- mpfr-2.4.1.orig/mpfr-longlong.h 2009-02-20 10:43:17.000000000 +0100 ++++ mpfr-2.4.1/mpfr-longlong.h 2009-05-29 15:11:21.000000000 +0200 +@@ -1011,10 +1011,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)) +@@ -1024,10 +1033,20 @@ extern UWtype __MPN(udiv_qrnnd) _PROTO ( + #endif /* __mips */ + + #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64 +-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 ++#if __GMP_GNUC_PREREQ (4,4) ++#define umul_ppmm(w1, w0, u, v) \ ++ do { \ ++ typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \ ++ __ll_UTItype __ll = (__ll_UTItype)(u) * (v); \ ++ w1 = __ll >> 64; \ ++ w0 = __ll; \ ++ } while (0) ++#endif ++#if !defined (umul_ppmm) && __GMP_GNUC_PREREQ (2,7) + #define umul_ppmm(w1, w0, u, v) \ + __asm__ ("dmultu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v)) +-#else ++#endif ++#if !defined (umul_ppmm) + #define umul_ppmm(w1, w0, u, v) \ + __asm__ ("dmultu %2,%3\n\tmflo %0\n\tmfhi %1" \ + : "=d" (w0), "=d" (w1) : "d" (u), "d" (v)) -- cgit v1.2.3