aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/libxine/files/cpu-1.0.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/libxine/files/cpu-1.0.patch')
-rw-r--r--recipes/libxine/files/cpu-1.0.patch112
1 files changed, 112 insertions, 0 deletions
diff --git a/recipes/libxine/files/cpu-1.0.patch b/recipes/libxine/files/cpu-1.0.patch
new file mode 100644
index 0000000000..a7ccdbbfa9
--- /dev/null
+++ b/recipes/libxine/files/cpu-1.0.patch
@@ -0,0 +1,112 @@
+--- xine-lib-1-rc6a/src/post/goom/xmmx.c.orig 2004-09-16 21:53:34.040049792 -0400
++++ xine-lib-1-rc6a/src/post/goom/xmmx.c 2004-09-16 21:59:24.407785800 -0400
+@@ -112,23 +112,23 @@
+ * post : mm3 & mm4 : coefs for this position
+ * mm1 : X vector [0|X]
+ *
+- * modif : eax,ebx
++ * modif : eax,ecx
+ */
+ __asm__ __volatile__ (
+- "movd %%mm0,%%ebx\n"
++ "movd %%mm0,%%ecx\n"
+ "movq %%mm0,%%mm1\n"
+
+- "andl $15,%%ebx\n"
++ "andl $15,%%ecx\n"
+ "psrlq $32,%%mm1\n"
+
+- "shll $6,%%ebx\n"
++ "shll $6,%%ecx\n"
+ "movd %%mm1,%%eax\n"
+
+- "addl %0,%%ebx\n"
++ "addl %0,%%ecx\n"
+ "andl $15,%%eax\n"
+
+- "movd (%%ebx,%%eax,4),%%mm3\n"
+- ::"g"(precalCoef):"eax","ebx");
++ "movd (%%ecx,%%eax,4),%%mm3\n"
++ ::"g"(precalCoef):"eax","ecx");
+
+ /*
+ * extraction des coefficients...
+@@ -158,7 +158,7 @@
+ * post : mm0 : expix1[position]
+ * mm2 : expix1[position+largeur]
+ *
+- * modif : eax,ebx
++ * modif : eax,ecx
+ */
+ 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,%%ecx\n"
+ /*^*/ "punpcklbw %%mm5, %%mm3\n" /*^*/
+
+- "addl %%ebx,%%eax\n"
++ "addl %%ecx,%%eax\n"
+ /*^*/ "movq %%mm3,%%mm4\n" /*^*/
+ /*^*/ "movq %%mm3,%%mm5\n" /*^*/
+
+- "movl %0,%%ebx\n"
++ "movl %0,%%ecx\n"
+ /*^*/ "punpcklbw %%mm5,%%mm3\n" /*^*/
+
+- "movq (%%ebx,%%eax,4),%%mm0\n"
++ "movq (%%ecx,%%eax,4),%%mm0\n"
+ /*^*/ "punpckhbw %%mm5,%%mm4\n" /*^*/
+
+ "addl %1,%%eax\n"
+- "movq (%%ebx,%%eax,4),%%mm2\n"
++ "movq (%%ecx,%%eax,4),%%mm2\n"
+
+- : : "X"(expix1), "X"(prevX):"eax","ebx"
++ : : "X"(expix1), "X"(prevX):"eax","ecx"
+ );
+
+ /*
+--- xine-lib-1-rc7/src/post/goom/mmx.h 2004-09-12 05:17:26.000000000 -0700
++++ xine-lib-1-rc7.new/src/post/goom/mmx.h 2004-11-09 16:08:17.777667856 -0700
+@@ -71,13 +71,15 @@
+ */
+ register int rval = 0;
+
++ /* Maybe if I yell it will help: DON'T CLOBBER EBX! */
++
+ __asm__ __volatile__ (
+ /* See if CPUID instruction is supported ... */
+ /* ... Get copies of EFLAGS into eax and ecx */
+ "pushf\n\t"
+ "popl %%eax\n\t"
+ "movl %%eax, %%ecx\n\t"
+-
++
+ /* ... Toggle the ID bit in one copy and store */
+ /* to the EFLAGS reg */
+ "xorl $0x200000, %%eax\n\t"
+@@ -97,6 +99,8 @@
+ /* Get standard CPUID information, and
+ go to a specific vendor section */
+ "movl $0, %%eax\n\t"
++
++ "pushl %%ebx\n\t"
+ "cpuid\n\t"
+
+ /* Check for Intel */
+@@ -214,9 +218,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 */