diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffmpeg/libavcodec/arm/vp56_arith.h | 16 | ||||
-rw-r--r-- | lib/ffmpeg/patches/0031-ARM-vp56-allow-inline-asm-to-build-with-clang.patch | 56 |
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 |