From 58a9bf27086d4288fa9b810d8f753cf6000ad4cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Buchm=C3=BCller?= Date: Sun, 3 Dec 2017 21:04:24 +0100 Subject: [PATCH] libmad: fix mips using gcc attribute mode(DI) Use gcc __attribute__ ((mode (DI))) for a 64 bit multiplication instead of (broken) assembler code. --- srcpkgs/libmad/patches/mips-mode_di.patch | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 srcpkgs/libmad/patches/mips-mode_di.patch diff --git a/srcpkgs/libmad/patches/mips-mode_di.patch b/srcpkgs/libmad/patches/mips-mode_di.patch new file mode 100644 index 00000000000..911183a3a2c --- /dev/null +++ b/srcpkgs/libmad/patches/mips-mode_di.patch @@ -0,0 +1,27 @@ +--- fixed.h 2004-02-17 03:02:03.000000000 +0100 ++++ fixed.h 2017-12-03 21:02:42.248609296 +0100 +@@ -299,6 +299,16 @@ + + # elif defined(FPM_MIPS) + ++#if 1 ++ ++typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++#define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -328,6 +338,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \