aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ffmpeg/libavcodec/arm/vp56_arith.h16
-rw-r--r--lib/ffmpeg/patches/0031-ARM-vp56-allow-inline-asm-to-build-with-clang.patch56
2 files changed, 68 insertions, 4 deletions
diff --git a/lib/ffmpeg/libavcodec/arm/vp56_arith.h b/lib/ffmpeg/libavcodec/arm/vp56_arith.h
index ece9ac2a6c..29a222844a 100644
--- a/lib/ffmpeg/libavcodec/arm/vp56_arith.h
+++ b/lib/ffmpeg/libavcodec/arm/vp56_arith.h
@@ -29,6 +29,14 @@
# define T(x)
#endif
+#if CONFIG_THUMB || defined __clang__
+# define L(x)
+# define U(x) x
+#else
+# define L(x) x
+# define U(x)
+#endif
+
#if HAVE_ARMV6 && HAVE_INLINE_ASM
#define vp56_rac_get_prob vp56_rac_get_prob_armv6
@@ -42,8 +50,8 @@ static inline int vp56_rac_get_prob_armv6(VP56RangeCoder *c, int pr)
__asm__ ("adds %3, %3, %0 \n"
"itt cs \n"
"cmpcs %7, %4 \n"
- A("ldrcsh %2, [%4], #2 \n")
- T("ldrhcs %2, [%4], #2 \n")
+ L("ldrcsh %2, [%4], #2 \n")
+ U("ldrhcs %2, [%4], #2 \n")
"rsb %0, %6, #256 \n"
"smlabb %0, %5, %6, %0 \n"
T("itttt cs \n")
@@ -80,8 +88,8 @@ static inline int vp56_rac_get_prob_branchy_armv6(VP56RangeCoder *c, int pr)
__asm__ ("adds %3, %3, %0 \n"
"itt cs \n"
"cmpcs %7, %4 \n"
- A("ldrcsh %2, [%4], #2 \n")
- T("ldrhcs %2, [%4], #2 \n")
+ L("ldrcsh %2, [%4], #2 \n")
+ U("ldrhcs %2, [%4], #2 \n")
"rsb %0, %6, #256 \n"
"smlabb %0, %5, %6, %0 \n"
T("itttt cs \n")
diff --git a/lib/ffmpeg/patches/0031-ARM-vp56-allow-inline-asm-to-build-with-clang.patch b/lib/ffmpeg/patches/0031-ARM-vp56-allow-inline-asm-to-build-with-clang.patch
new file mode 100644
index 0000000000..994be915e2
--- /dev/null
+++ b/lib/ffmpeg/patches/0031-ARM-vp56-allow-inline-asm-to-build-with-clang.patch
@@ -0,0 +1,56 @@
+#The clang integrated assembler does not support pre-UAL syntax,
+#while gcc requires pre-UAL syntax for ARM code. A patch[1] for
+#clang to support the old syntax as well has been ignored since
+#January.
+#
+#This patch chooses the syntax appropriate for each compiler,
+#allowing both to build the code. Notably, this change allows
+#building for iphone with the latest Apple Xcode update.
+#
+#[1] http://llvm.org/bugs/show_bug.cgi?id=11855
+#
+#Signed-off-by: Mans Rullgard <mans at mansr.com>
+
+diff --git a/libavcodec/arm/vp56_arith.h b/libavcodec/arm/vp56_arith.h
+index ef30ffe..d1a8837 100644
+--- a/libavcodec/arm/vp56_arith.h
++++ b/libavcodec/arm/vp56_arith.h
+@@ -29,6 +29,14 @@
+ # define T(x)
+ #endif
+
++#if CONFIG_THUMB || defined __clang__
++# define L(x)
++# define U(x) x
++#else
++# define L(x) x
++# define U(x)
++#endif
++
+ #if HAVE_ARMV6 && HAVE_INLINE_ASM
+
+ #define vp56_rac_get_prob vp56_rac_get_prob_armv6
+@@ -42,8 +50,8 @@ static inline int vp56_rac_get_prob_armv6(VP56RangeCoder *c, int pr)
+ __asm__ ("adds %3, %3, %0 \n"
+ "itt cs \n"
+ "cmpcs %7, %4 \n"
+- A("ldrcsh %2, [%4], #2 \n")
+- T("ldrhcs %2, [%4], #2 \n")
++ L("ldrcsh %2, [%4], #2 \n")
++ U("ldrhcs %2, [%4], #2 \n")
+ "rsb %0, %6, #256 \n"
+ "smlabb %0, %5, %6, %0 \n"
+ T("itttt cs \n")
+@@ -80,8 +88,8 @@ static inline int vp56_rac_get_prob_branchy_armv6(VP56RangeCoder *c, int pr)
+ __asm__ ("adds %3, %3, %0 \n"
+ "itt cs \n"
+ "cmpcs %7, %4 \n"
+- A("ldrcsh %2, [%4], #2 \n")
+- T("ldrhcs %2, [%4], #2 \n")
++ L("ldrcsh %2, [%4], #2 \n")
++ U("ldrhcs %2, [%4], #2 \n")
+ "rsb %0, %6, #256 \n"
+ "smlabb %0, %5, %6, %0 \n"
+ T("itttt cs \n")
+--
+1.7.11.1