diff -ur xine-lib-1.0.orig/src/post/goom/mmx.h xine-lib-1.0/src/post/goom/mmx.h --- xine-lib-1.0.orig/src/post/goom/mmx.h 2004-08-19 03:39:03.000000000 -0700 +++ xine-lib-1.0/src/post/goom/mmx.h 2004-12-29 11:49:35.857981505 -0800 @@ -72,6 +72,9 @@ register int rval = 0; __asm__ __volatile__ ( + /* CPUID clobbers ebx, but gcc needs it for PIC so + * it needs to be saved */ + "pushl %%ebx\n\t" /* See if CPUID instruction is supported ... */ /* ... Get copies of EFLAGS into eax and ecx */ "pushf\n\t" @@ -214,9 +217,10 @@ "movl $0, %0\n\n\t" "Return:\n\t" + "popl %%ebx\n\t" : "=X" (rval) : /* no input */ - : "eax", "ebx", "ecx", "edx" + : "eax", "ecx", "edx" ); /* Return */ diff -ur xine-lib-1.0.orig/src/post/goom/xmmx.c xine-lib-1.0/src/post/goom/xmmx.c --- xine-lib-1.0.orig/src/post/goom/xmmx.c 2004-08-19 03:39:03.000000000 -0700 +++ xine-lib-1.0/src/post/goom/xmmx.c 2004-12-29 11:50:36.720037932 -0800 @@ -112,23 +112,23 @@ * post : mm3 & mm4 : coefs for this position * mm1 : X vector [0|X] * - * modif : eax,ebx + * modif : eax,edx */ __asm__ __volatile__ ( - "movd %%mm0,%%ebx\n" + "movd %%mm0,%%edx\n" "movq %%mm0,%%mm1\n" - "andl $15,%%ebx\n" + "andl $15,%%edx\n" "psrlq $32,%%mm1\n" - "shll $6,%%ebx\n" + "shll $6,%%edx\n" "movd %%mm1,%%eax\n" - "addl %0,%%ebx\n" + "addl %0,%%edx\n" "andl $15,%%eax\n" - "movd (%%ebx,%%eax,4),%%mm3\n" - ::"g"(precalCoef):"eax","ebx"); + "movd (%%edx,%%eax,4),%%mm3\n" + ::"g"(precalCoef):"eax","edx"); /* * extraction des coefficients... @@ -158,7 +158,7 @@ * post : mm0 : expix1[position] * mm2 : expix1[position+largeur] * - * modif : eax,ebx + * modif : eax,edx */ psrld_i2r (PERTEDEC,mm0); psrld_i2r (PERTEDEC,mm1); @@ -167,23 +167,23 @@ /*^*/ "movq %%mm3,%%mm5\n" /*^*/ "mull %1\n" - "movd %%mm0,%%ebx\n" + "movd %%mm0,%%edx\n" /*^*/ "punpcklbw %%mm5, %%mm3\n" /*^*/ - "addl %%ebx,%%eax\n" + "addl %%edx,%%eax\n" /*^*/ "movq %%mm3,%%mm4\n" /*^*/ /*^*/ "movq %%mm3,%%mm5\n" /*^*/ - "movl %0,%%ebx\n" + "movl %0,%%edx\n" /*^*/ "punpcklbw %%mm5,%%mm3\n" /*^*/ - "movq (%%ebx,%%eax,4),%%mm0\n" + "movq (%%edx,%%eax,4),%%mm0\n" /*^*/ "punpckhbw %%mm5,%%mm4\n" /*^*/ "addl %1,%%eax\n" - "movq (%%ebx,%%eax,4),%%mm2\n" + "movq (%%edx,%%eax,4),%%mm2\n" - : : "X"(expix1), "X"(prevX):"eax","ebx" + : : "X"(expix1), "X"(prevX):"eax","edx" ); /*