summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rbcodec/codecs/libmad/fixed.h11
-rwxr-xr-xtools/configure3
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libmad/fixed.h b/lib/rbcodec/codecs/libmad/fixed.h
index 6015684..1b4d29d 100644
--- a/lib/rbcodec/codecs/libmad/fixed.h
+++ b/lib/rbcodec/codecs/libmad/fixed.h
@@ -292,6 +292,15 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
# elif defined(FPM_MIPS)
+#if GCCNUM >= 404
+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().
@@ -322,6 +331,8 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y)
# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo))
# endif
+#endif /* GCCNUM */
+
# if defined(OPT_SPEED)
# define mad_f_scale64(hi, lo) \
((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS)))
diff --git a/tools/configure b/tools/configure
index c008395..7d86068 100755
--- a/tools/configure
+++ b/tools/configure
@@ -3840,6 +3840,9 @@ ${Darch_version}
/* Define endianess for the target or simulator platform */
#define ${defendian} 1
+/* Define the GCC version used for the build */
+#define GCCNUM ${GCCNUM}
+
/* Define this if you build rockbox to support the logf logging and display */
${use_logf}