summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Castet <castet.matthieu@free.fr>2008-03-24 11:49:59 +0000
committerDiego Biurrun <diego@biurrun.de>2008-03-24 11:49:59 +0000
commitb4e806b2b9696443954de88e54ea583d705bcd24 (patch)
treef004ba0421f44ab63110c1509d114bf19de615e8
parent0e58bf670dd3f690d809e74b11c5db8201fbf15e (diff)
pld instruction are used in libavcodec/armv4l/dsputil_arm_s.S which can be used
on armv4 that doesn't support this instruction. Futhermore pld is a nop on some armv5 processor like arm926. Detect if pld is supported and have the preprocessor remove it when it's not supported. Fixes issue 393. patch by matthieu castet, castet.matthieu free fr Originally committed as revision 12569 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rwxr-xr-xconfigure3
-rw-r--r--libavcodec/armv4l/dsputil_arm_s.S7
2 files changed, 10 insertions, 0 deletions
diff --git a/configure b/configure
index f96c6a2d4d..45e5b6d7d8 100755
--- a/configure
+++ b/configure
@@ -748,6 +748,7 @@ HAVE_LIST="
memalign
mkstemp
mlib
+ pld
ppc64
round
roundf
@@ -1561,6 +1562,8 @@ int main(void) {
EOF
fi
+# We have to check if pld is a nop and disable it.
+enabled armv4l && check_asm pld '"pld [r0]"'
enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"'
enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"'
diff --git a/libavcodec/armv4l/dsputil_arm_s.S b/libavcodec/armv4l/dsputil_arm_s.S
index 56ffc04e74..ccd26ac83b 100644
--- a/libavcodec/armv4l/dsputil_arm_s.S
+++ b/libavcodec/armv4l/dsputil_arm_s.S
@@ -19,6 +19,13 @@
@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
@
+#include "config.h"
+
+#ifndef HAVE_PLD
+.macro pld reg
+.endm
+#endif
+
.macro ADJ_ALIGN_QUADWORD_D shift, Rd0, Rd1, Rd2, Rd3, Rn0, Rn1, Rn2, Rn3, Rn4
mov \Rd0, \Rn0, lsr #(\shift * 8)
mov \Rd1, \Rn1, lsr #(\shift * 8)