Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37405143
en ru br
Репозитории ALT
S:0.15.1b-alt9
5.1: 0.15.1b-alt4
4.1: 0.15.1b-alt3
4.0: 0.15.1b-alt3
3.0: 0.15.1b-alt2
www.altlinux.org/Changes

Группа :: Звук
Пакет: libmad

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: libmad-0.15.1b-alt-MIPS.patch
Скачать


diff --git a/fixed.h b/fixed.h
index b6adec6..dba12e0 100644
--- a/fixed.h
+++ b/fixed.h
@@ -307,11 +307,13 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
  * This MIPS version is fast and accurate; the disposition of the least
  * significant bit depends on OPT_ACCURACY via mad_f_scale64().
  */
-#  define MAD_F_MLX(hi, lo, x, y)  \
-    asm ("mult	%2,%3"  \
-	 : "=l" (lo), "=h" (hi)  \
-	 : "%r" (x), "r" (y))
-
+   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)
 # if defined(HAVE_MADD_ASM)
 #  define MAD_F_MLA(hi, lo, x, y)  \
     asm ("madd	%2,%3"  \
diff --git a/mad.h b/mad.h
index 119ac96..99e6537 100644
--- a/mad.h
+++ b/mad.h
@@ -353,11 +353,13 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
  * This MIPS version is fast and accurate; the disposition of the least
  * significant bit depends on OPT_ACCURACY via mad_f_scale64().
  */
-#  define MAD_F_MLX(hi, lo, x, y)  \
-    asm ("mult	%2,%3"  \
-	 : "=l" (lo), "=h" (hi)  \
-	 : "%r" (x), "r" (y))
-
+   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)
 # if defined(HAVE_MADD_ASM)
 #  define MAD_F_MLA(hi, lo, x, y)  \
     asm ("madd	%2,%3"  \
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin