diff -ruN ffmpeg.orig/libavcodec/i386/mpegvideo_mmx_template.c ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c --- ffmpeg.orig/libavcodec/i386/mpegvideo_mmx_template.c 2004-11-05 04:45:41 +0300 +++ ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c 2005-04-08 00:47:38 +0400 @@ -95,7 +95,14 @@ SPREADW(%%mm3) "pxor %%mm7, %%mm7 \n\t" // 0 "pxor %%mm4, %%mm4 \n\t" // 0 +#if defined(PIC) && !defined(ARCH_X86_64) + "push %%"REG_a" \n\t" + "movl %2, %%"REG_a" \n\t" + "movq (%%"REG_a"), %%mm5 \n\t" // qmat[0] + "pop %%"REG_a" \n\t" +#else "movq (%2), %%mm5 \n\t" // qmat[0] +#endif "pxor %%mm6, %%mm6 \n\t" "psubw (%3), %%mm6 \n\t" // -bias[0] "mov $-128, %%"REG_a" \n\t" @@ -128,7 +135,11 @@ "movd %%mm3, %%"REG_a" \n\t" "movzb %%al, %%"REG_a" \n\t" // last_non_zero_p1 : "+a" (last_non_zero_p1) +#if defined(PIC) && !defined(ARCH_X86_64) + : "r" (block+64), "m" (qmat), "r" (bias), +#else : "r" (block+64), "r" (qmat), "r" (bias), +#endif "r" (inv_zigzag_direct16+64), "r" (temp_block+64) ); // note the asm is split cuz gcc doesnt like that many operands ... @@ -157,7 +168,14 @@ "psubw %%mm1, %%mm0 \n\t" // ABS(block[i]) "movq (%3, %%"REG_a"), %%mm6 \n\t" // bias[0] "paddusw %%mm6, %%mm0 \n\t" // ABS(block[i]) + bias[0] +#if defined(PIC) && !defined(ARCH_X86_64) + "push %%"REG_a" \n\t" + "movl %2, %%"REG_a" \n\t" + "movq (%%"REG_a", %%"REG_a"), %%mm5 \n\t" // qmat[i] + "pop %%"REG_a" \n\t" +#else "movq (%2, %%"REG_a"), %%mm5 \n\t" // qmat[i] +#endif "pmulhw %%mm5, %%mm0 \n\t" // (ABS(block[i])*qmat[0] + bias[0]*qmat[0])>>16 "por %%mm0, %%mm4 \n\t" "pxor %%mm1, %%mm0 \n\t" @@ -179,7 +197,11 @@ "movd %%mm3, %%"REG_a" \n\t" "movzb %%al, %%"REG_a" \n\t" // last_non_zero_p1 : "+a" (last_non_zero_p1) +#if defined(PIC) && !defined(ARCH_X86_64) + : "r" (block+64), "m" (qmat+64), "r" (bias+64), +#else : "r" (block+64), "r" (qmat+64), "r" (bias+64), +#endif "r" (inv_zigzag_direct16+64), "r" (temp_block+64) ); // note the asm is split cuz gcc doesnt like that many operands ... diff -ruN ffmpeg.orig/libavcodec/libpostproc/postprocess_template.c ffmpeg/libavcodec/libpostproc/postprocess_template.c --- ffmpeg.orig/libavcodec/libpostproc/postprocess_template.c 2005-03-29 19:09:31 +0400 +++ ffmpeg/libavcodec/libpostproc/postprocess_template.c 2005-04-08 00:47:38 +0400 @@ -33,9 +33,11 @@ # define ALIGN_MASK "$0xFFFFFFFFFFFFFFF8" #else # define REGa eax +# define REGb ebx # define REGc ecx # define REGd edx # define REG_a "eax" +# define REG_b "ebx" # define REG_c "ecx" # define REG_d "edx" # define REG_SP "esp" @@ -3199,7 +3201,12 @@ "movq (%%"REG_a"), %%mm2 \n\t" // packedYOffset "movq 8(%%"REG_a"), %%mm3 \n\t" // packedYScale "lea (%2,%4), %%"REG_a" \n\t" +#if defined(PIC) && !defined(ARCH_X86_64) + "push %%"REG_b" \n\t" + "lea (%3,%5), %%"REG_b" \n\t" +#else "lea (%3,%5), %%"REG_d" \n\t" +#endif "pxor %%mm4, %%mm4 \n\t" #ifdef HAVE_MMX2 #define REAL_SCALED_CPY(src1, src2, dst1, dst2) \ @@ -3255,12 +3262,22 @@ #define SCALED_CPY(src1, src2, dst1, dst2)\ REAL_SCALED_CPY(src1, src2, dst1, dst2) +#if defined(PIC) && !defined(ARCH_X86_64) +SCALED_CPY((%2) , (%2, %4) , (%3) , (%3, %5)) +SCALED_CPY((%2, %4, 2), (%%REGa, %4, 2), (%3, %5, 2), (%%REGb, %5, 2)) +SCALED_CPY((%2, %4, 4), (%%REGa, %4, 4), (%3, %5, 4), (%%REGb, %5, 4)) + "lea (%%"REG_a",%4,4), %%"REG_a" \n\t" + "lea (%%"REG_b",%5,4), %%"REG_b" \n\t" +SCALED_CPY((%%REGa, %4), (%%REGa, %4, 2), (%%REGb, %5), (%%REGb, %5, 2)) + "pop %%"REG_b" \n\t" +#else SCALED_CPY((%2) , (%2, %4) , (%3) , (%3, %5)) SCALED_CPY((%2, %4, 2), (%%REGa, %4, 2), (%3, %5, 2), (%%REGd, %5, 2)) SCALED_CPY((%2, %4, 4), (%%REGa, %4, 4), (%3, %5, 4), (%%REGd, %5, 4)) "lea (%%"REG_a",%4,4), %%"REG_a" \n\t" "lea (%%"REG_d",%5,4), %%"REG_d" \n\t" SCALED_CPY((%%REGa, %4), (%%REGa, %4, 2), (%%REGd, %5), (%%REGd, %5, 2)) +#endif : "=&a" (packedOffsetAndScale) @@ -3269,7 +3286,11 @@ "r"(dst), "r" ((long)srcStride), "r" ((long)dstStride) +#if defined(PIC) && !defined(ARCH_X86_64) + : "%"REG_b +#else : "%"REG_d +#endif ); #else for(i=0; i<8; i++) @@ -3282,7 +3303,12 @@ #ifdef HAVE_MMX asm volatile( "lea (%0,%2), %%"REG_a" \n\t" +#if defined(PIC) && !defined(ARCH_X86_64) + "push %%"REG_b" \n\t" + "lea (%1,%3), %%"REG_b" \n\t" +#else "lea (%1,%3), %%"REG_d" \n\t" +#endif #define REAL_SIMPLE_CPY(src1, src2, dst1, dst2) \ "movq " #src1 ", %%mm0 \n\t"\ @@ -3293,18 +3319,32 @@ #define SIMPLE_CPY(src1, src2, dst1, dst2)\ REAL_SIMPLE_CPY(src1, src2, dst1, dst2) +#if defined(PIC) && !defined(ARCH_X86_64) +SIMPLE_CPY((%0) , (%0, %2) , (%1) , (%1, %3)) +SIMPLE_CPY((%0, %2, 2), (%%REGa, %2, 2), (%1, %3, 2), (%%REGb, %3, 2)) +SIMPLE_CPY((%0, %2, 4), (%%REGa, %2, 4), (%1, %3, 4), (%%REGb, %3, 4)) + "lea (%%"REG_a",%2,4), %%"REG_a" \n\t" + "lea (%%"REG_b",%3,4), %%"REG_b" \n\t" +SIMPLE_CPY((%%REGa, %2), (%%REGa, %2, 2), (%%REGb, %3), (%%REGb, %3, 2)) + "pop %%"REG_b" \n\t" +#else SIMPLE_CPY((%0) , (%0, %2) , (%1) , (%1, %3)) SIMPLE_CPY((%0, %2, 2), (%%REGa, %2, 2), (%1, %3, 2), (%%REGd, %3, 2)) SIMPLE_CPY((%0, %2, 4), (%%REGa, %2, 4), (%1, %3, 4), (%%REGd, %3, 4)) "lea (%%"REG_a",%2,4), %%"REG_a" \n\t" "lea (%%"REG_d",%3,4), %%"REG_d" \n\t" SIMPLE_CPY((%%REGa, %2), (%%REGa, %2, 2), (%%REGd, %3), (%%REGd, %3, 2)) +#endif : : "r" (src), "r" (dst), "r" ((long)srcStride), "r" ((long)dstStride) +#if defined(PIC) && !defined(ARCH_X86_64) + : "%"REG_a, "%"REG_b +#else : "%"REG_a, "%"REG_d +#endif ); #else for(i=0; i<8; i++) diff -ruN ffmpeg.orig/libavcodec/Makefile ffmpeg/libavcodec/Makefile --- ffmpeg.orig/libavcodec/Makefile 2005-04-08 00:47:17 +0400 +++ ffmpeg/libavcodec/Makefile 2005-04-08 00:47:38 +0400 @@ -114,7 +114,7 @@ ifeq ($(SHARED_PP),yes) EXTRALIBS += -L$(VPATH)/libpostproc -lpostproc else -# LIBS += libpostproc/libpostproc.a ... should be fixed +LIBS += libpostproc/libpostproc.a # ... should be fixed OBJS += libpostproc/postprocess.o endif endif @@ -211,7 +211,7 @@ endif TESTS= imgresample-test dct-test motion-test fft-test -all: $(LIB) $(SLIB) +all: $(LIB) $(SLIB) $(LIBS) amrlibs: $(MAKE) -C amr spclib fipoplib @@ -239,6 +239,11 @@ libpostproc/libpostproc.a: $(MAKE) -C libpostproc +ifeq ($(TARGET_ARCH_PARISC),yes) +motion_est.o: motion_est.c + $(CC) $(CFLAGS) -O1 -c -o $@ $< +endif + %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< diff -ruN ffmpeg.orig/configure ffmpeg/configure --- ffmpeg.orig/configure 2005-04-08 00:47:17 +0400 +++ ffmpeg/configure 2005-04-08 00:48:59 +0400 @@ -141,6 +141,12 @@ sh4) cpu="sh4" ;; + parisc|parisc64) + cpu="parisc" + ;; + s390) + cpu="s390" + ;; *) cpu="unknown" ;; @@ -906,7 +912,7 @@ EOF builtin_vector=no -if $cc -o $TMPO $TMPC 2> /dev/null ; then +if $cc -o $TMPO $TMPC -msse 2> /dev/null ; then builtin_vector=yes fi @@ -1216,6 +1222,12 @@ elif test "$cpu" = "sh4" ; then echo "TARGET_ARCH_SH4=yes" >> config.mak echo "#define ARCH_SH4 1" >> $TMPH +elif test "$cpu" = "parisc" ; then + echo "TARGET_ARCH_PARISC=yes" >> config.mak + echo "#define ARCH_PARISC 1" >> $TMPH +elif test "$cpu" = "s390" ; then + echo "TARGET_ARCH_S390=yes" >> config.mak + echo "#define ARCH_S390 1" >> $TMPH fi echo "#define TUNECPU $TUNECPU" >> $TMPH if test "$bigendian" = "yes" ; then