Fix previous

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13814 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/codecs/libwma/wmadeci.c b/apps/codecs/libwma/wmadeci.c
index bb9b96a..cd01c03 100644
--- a/apps/codecs/libwma/wmadeci.c
+++ b/apps/codecs/libwma/wmadeci.c
@@ -696,14 +696,14 @@
 static void vector_fmul_add_add(fixed32 *dst, const fixed32 *src0, const fixed32 *src1, const fixed32 *src2, int src3, int len, int step){
     int i;
     for(i=0; i<len; i++)
-        dst[i*step] = fixmul32(src0[i], src1[i]) + src2[i] + src3;
+        dst[i*step] = fixmul32b(src0[i], src1[i]) + src2[i] + src3;
 }
 
 static void vector_fmul_reverse(fixed32 *dst, const fixed32 *src0, const fixed32 *src1, int len){
     int i;
     src1 += len-1;
     for(i=0; i<len; i++)
-        dst[i] = fixmul32(src0[i], src1[-i]);
+        dst[i] = fixmul32b(src0[i], src1[-i]);
 }
 
 /**
diff --git a/apps/codecs/libwma/wmafixed.c b/apps/codecs/libwma/wmafixed.c
index 3a902dd..7b08689 100644
--- a/apps/codecs/libwma/wmafixed.c
+++ b/apps/codecs/libwma/wmafixed.c
@@ -275,7 +275,7 @@
 
 */
 
-#if 0
+
 fixed32 fixsin32(fixed32 x)
 {
 
@@ -326,4 +326,4 @@
 {
     return fixsin32(x - (M_PI_F>>1))*-1;
 }
-#endif
+
diff --git a/apps/codecs/libwma/wmafixed.h b/apps/codecs/libwma/wmafixed.h
index 99ddec7..da0637f 100644
--- a/apps/codecs/libwma/wmafixed.h
+++ b/apps/codecs/libwma/wmafixed.h
@@ -61,6 +61,21 @@
        __result;  \
     })
 
+
+ #define fixmul32b(x, y)  \
+    ({ int32_t __hi;  \
+       uint32_t __lo;  \
+       int32_t __result;  \
+       asm ("smull   %0, %1, %3, %4\n\t"  \
+            "movs    %0, %0, lsr %5\n\t"  \
+            "adc    %2, %0, %1, lsl %6"  \
+            : "=&r" (__lo), "=&r" (__hi), "=r" (__result)  \
+            : "%r" (x), "r" (y),  \
+              "M" (31), "M" (32 - 31)  \
+            : "cc");  \
+       __result;  \
+    })
+
 #elif defined(CPU_COLDFIRE)
 static inline int32_t fixmul32(int32_t x, int32_t y)
 {