patches/xine-lib-02-asm-pic.diff
author jurikm
Sun, 12 Feb 2012 14:04:10 +0000
changeset 8245 383896da4129
parent 144 6d52f94f4705
permissions -rw-r--r--
SFEsauerbraten.spec: add IPS package name

--- xine-lib-1.1.4/src/libw32dll/wine/module.c.patch02	2006-12-21 04:54:44.000000000 -0500
+++ xine-lib-1.1.4/src/libw32dll/wine/module.c	2007-02-21 13:18:26.613579000 -0500
@@ -39,8 +39,8 @@
 
 #ifdef EMU_QTX_API
 #include "wrapper.h"
-int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
-int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
+static int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
+static int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
 #endif
 
 //#undef TRACE
@@ -519,6 +519,8 @@
 	    printf ("wine/module: QuickTime.qts patched!!! old entry=%p\n",ptr[0]);
 
 #ifdef EMU_QTX_API
+	    report_entry = report_func;
+	    report_ret   = report_func_ret;
 	    wrapper_target=ptr[0];
 	    ptr[0]=wrapper;
 #endif
@@ -681,7 +683,7 @@
 static u_int32_t ret_array[4096];
 static int ret_i=0;
 
-int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
+static int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
 {
 #ifdef DEBUG_QTX_API
   int i;
@@ -880,7 +882,7 @@
     return 0;
 }
 
-int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
+static int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
 {
 #ifdef DEBUG_QTX_API
   int i;
@@ -995,6 +997,8 @@
 //      || !strcmp(function,"_CallComponent")
       ){
 	fprintf(stderr,"theQuickTimeDispatcher caught -> %p\n",retproc);
+      report_entry = report_func;
+      report_ret   = report_func_ret;
       wrapper_target=(void *)retproc;
       retproc=(void *)wrapper;
     }
--- xine-lib-1.1.4/src/libw32dll/wine/stubs.s.patch02	2006-12-21 04:54:44.000000000 -0500
+++ xine-lib-1.1.4/src/libw32dll/wine/stubs.s	2007-02-21 13:18:26.614456000 -0500
@@ -33,6 +33,3 @@
 	leal  12(%esp), %ebp
 	pushl %eax
 	ret
-
-.section .note.GNU-stack,"",@progbits
-
--- xine-lib-1.1.4/src/libw32dll/wine/wrapper.S.patch02	2006-12-21 04:54:44.000000000 -0500
+++ xine-lib-1.1.4/src/libw32dll/wine/wrapper.S	2007-02-21 13:25:27.593702000 -0500
@@ -1,7 +1,6 @@
 .section .data
 caller_return:
 	.long 0
-.global wrapper_target
 wrapper_target:	
 	.long null_call
 
--- xine-lib-1.1.4/src/libw32dll/wine/wrapper.h.patch02	2006-12-21 04:54:44.000000000 -0500
+++ xine-lib-1.1.4/src/libw32dll/wine/wrapper.h	2007-02-21 13:18:26.616726000 -0500
@@ -11,6 +11,10 @@
   u_int32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
 } reg386_t;
 
+typedef int (*wrapper_func_t)(void *stack_base, int stack_size, reg386_t *reg,  u_int32_t *flags);
+
+extern wrapper_func_t report_entry, report_ret;
+
 extern void (*wrapper_target)(void);
 
 extern int wrapper(void);
--- xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc.patch02	2007-01-28 12:12:59.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc	2007-02-21 13:18:26.708582000 -0500
@@ -7,9 +7,9 @@
 // up by a little, and adjust later
 
 #ifdef IS_SSE2
-		"paddusb "MANGLE(ONES)", %%xmm7\n\t"				// bias toward no motion
+		"paddusb "_ONES", %%xmm7\n\t"				// bias toward no motion
 #else
-		"paddusb "MANGLE(ONES)", %%mm7\n\t" 				// bias toward no motion
+		"paddusb "_ONES", %%mm7\n\t" 				// bias toward no motion
 #endif
 
         MERGE4PIXavg("(%%"XDI", %%"XCX")", "(%%"XSI", %%"XCX")")  // center, in old and new
--- xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc.patch02	2007-01-28 12:12:59.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc	2007-02-21 13:18:26.709777000 -0500
@@ -18,7 +18,7 @@
             // Use the best weave if diffs less than 10 as that
             // means the image is still or moving cleanly
             // if there is motion we will clip which will catch anything
-            "psubusb "MANGLE(FOURS)", %%mm7\n\t"          // sets bits to zero if weave diff < 4
+            "psubusb "_FOURS", %%mm7\n\t"          // sets bits to zero if weave diff < 4
             "pxor    %%mm0, %%mm0\n\t"
             "pcmpeqb %%mm0, %%mm7\n\t"            // all ff where weave better, else 00
             "pcmpeqb %%mm7, %%mm0\n\t"            // all ff where bob better, else 00
@@ -28,10 +28,10 @@
 #else
             // Use the better of bob or weave
             //      pminub  mm4, TENS           // the most we care about
-            V_PMINUB ("%%mm4", MANGLE(TENS), "%%mm0")   // the most we care about
+            V_PMINUB ("%%mm4", _TENS, "%%mm0")   // the most we care about
             
             "psubusb %%mm4, %%mm7\n\t"            // foregive that much from weave est?
-            "psubusb "MANGLE(FOURS)", %%mm7\n\t"       // bias it a bit toward weave
+            "psubusb "_FOURS", %%mm7\n\t"       // bias it a bit toward weave
             "pxor    %%mm0, %%mm0\n\t"
             "pcmpeqb %%mm0, %%mm7\n\t"            // all ff where weave better, else 00
             "pcmpeqb %%mm7, %%mm0\n\t"            // all ff where bob better, else 00
@@ -42,9 +42,9 @@
             
             
                 //      pminub  mm0, Max_Vals       // but clip to catch the stray error
-//                V_PMINUB ("%%mm0", MANGLE(Max_Vals), "%%mm1") // but clip to catch the stray error
+//                V_PMINUB ("%%mm0", _Max_Vals, "%%mm1") // but clip to catch the stray error
                 //      pmaxub  mm0, Min_Vals
-//                V_PMAXUB ("%%mm0", MANGLE(Min_Vals))
+//                V_PMAXUB ("%%mm0", _Min_Vals)
                 
 #endif
 
@@ -53,28 +53,29 @@
                 
 #ifdef USE_VERTICAL_FILTER
             "movq    %%mm0, %%mm1\n\t"
-            //      pavgb   mm0, qword ptr["XBX"]
-            V_PAVGB ("%%mm0", "(%%"XBX")", "%%mm2", MANGLE(ShiftMask))
-            //      movntq  qword ptr["XAX"+"XDX"], mm0
-            V_MOVNTQ ("(%"XAX", %%"XDX")", "%%mm0")
-            //      pavgb   mm1, qword ptr["XBX"+"XCX"]
-            V_PAVGB ("%%mm1", "(%%"XBX", %%"XCX")", "%%mm2", MANGLE(ShiftMask))
-            "addq   "_dst_pitchw", %%"XBX
-            //      movntq  qword ptr["XAX"+"XDX"], mm1
-            V_MOVNTQ ("(%%"XAX", %%"XDX")", "%%mm1")
+            //      pavgb   mm0, qword ptr["XDX"]
+            V_PAVGB ("%%mm0", "(%%"XDX")", "%%mm2", _ShiftMask)
+            //      movntq  qword ptr["XAX"+"olddx"], mm0
+            ADDX"   "_olddx", %%"XAX"\n\t"
+            V_MOVNTQ ("(%%"XAX")", "%%mm0")
+            //      pavgb   mm1, qword ptr["XDX"+"XCX"]
+            V_PAVGB ("%%mm1", "(%%"XDX", %%"XCX")", "%%mm2", _ShiftMask)
+            "addq   "_dst_pitchw", %%"XDX
+            //      movntq  qword ptr["XAX"+"olddx"], mm1
+            V_MOVNTQ ("(%%"XAX")", "%%mm1")
 #else
                 
-            //      movntq  qword ptr["XAX"+"XDX"], mm0
-                V_MOVNTQ ("(%%"XAX", %%"XDX")", "%%mm0")
+            //      movntq  qword ptr["XAX"+"olddx"], mm0
+            ADDX"   "_olddx", %%"XAX"\n\t"
+            V_MOVNTQ ("(%%"XAX")", "%%mm0")
 #endif
                 
-           LEAX"    8(%%"XDX"), %%"XDX"\n\t"       // bump offset pointer
-           CMPX"    "_Last8", %%"XDX"\n\t"       // done with line?
+           ADDX"    $8, "_olddx"\n\t"       // bump offset pointer
+           MOVX"    "_olddx", %%"XAX"\n\t"
+           CMPX"    "_Last8", %%"XAX"\n\t"       // done with line?
            "jb      1b\n\t"                    // y
 #endif
 
-           MOVX" "_oldbx", %%"XBX"\n\t"
-
         : /* no outputs */
 
         : "m"(pBob),
@@ -85,7 +86,17 @@
           "m"(pSrc),
           "m"(pSrcP),
           "m"(pBobP),
-          "m"(oldbx)
+          "m"(olddx),
+          "m"(UVMask),
+          "m"(ShiftMask),
+          "m"(FOURS),
+          "m"(TENS),
+          "m"(Max_Vals),
+          "m"(Min_Vals),
+          "m"(YMask),
+          "m"(Max_Mov),
+          "m"(ONES),
+          "m"(DiffThres)
 
         : XAX, XCX, XDX, XSI, XDI,
 #ifdef ARCH_X86
--- xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc.patch02	2007-01-28 12:12:59.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc	2007-02-21 13:18:26.711057000 -0500
@@ -66,7 +66,17 @@
 #define _pSrc       "%5"
 #define _pSrcP      "%6"
 #define _pBobP      "%7"
-#define _oldbx      "%8"
+#define _olddx      "%8"
+#define _UVMask     "%9"
+#define _ShiftMask  "%10"
+#define _FOURS      "%11"
+#define _TENS       "%12"
+#define _Max_Vals   "%13"
+#define _Min_Vals   "%14"
+#define _YMask      "%15"
+#define _Max_Mov    "%16"
+#define _ONES       "%17"
+#define _DiffThres  "%18"
 #endif
 
 	for (y=1; y < FldHeight-1; y++)
@@ -77,75 +87,73 @@
              // Loop general reg usage
              //
              // XAX - pBobP, then pDest 
-             // XBX - pBob
+             // XDX - pBob
              // XCX - src_pitch2
-             // XDX - current offset
+             // _olddx - current offset
              // XDI - prev weave pixels, 1 line up
              // XSI - next weave pixels, 1 line up
 
-             // Save "XBX" (-fPIC)
-	     MOVX" %%"XBX", "_oldbx"\n\t"
-             
 #ifdef IS_SSE2
              
              // sse2 code deleted for now
 
 #else
              // simple bob first 8 bytes
-             MOVX"	"_pBob",        %%"XBX"\n\t"
+             MOVX"	"_pBob",        %%"XDX"\n\t"
              MOVX"	"_src_pitch2",  %%"XCX"\n\t"
 
 #ifdef USE_VERTICAL_FILTER
-             "movq	    (%%"XBX"),        %%mm0\n\t"
-             "movq	    (%%"XBX", %%"XCX"), %%mm1\n\t" //, qword ptr["XBX"+"XCX"]
+             "movq	    (%%"XDX"),        %%mm0\n\t"
+             "movq	    (%%"XDX", %%"XCX"), %%mm1\n\t" //, qword ptr["XDX"+"XCX"]
              "movq	    %%mm0,          %%mm2\n\t"
-             V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))		// halfway between
-             V_PAVGB ("%%mm0", "%%mm2", "%%mm3", MANGLE(ShiftMask))		// 1/4 way
-             V_PAVGB ("%%mm1", "%%mm2", "%%mm3", MANGLE(ShiftMask))		// 3/4 way
+             V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)		// halfway between
+             V_PAVGB ("%%mm0", "%%mm2", "%%mm3", _ShiftMask)		// 1/4 way
+             V_PAVGB ("%%mm1", "%%mm2", "%%mm3", _ShiftMask)		// 3/4 way
              MOVX"		"_pDest",       %%"XDI"\n\t"
              MOVX"		"_dst_pitchw",  %%"XAX"\n\t"
              V_MOVNTQ	("(%%"XDI")", "%%mm0")
              V_MOVNTQ	("(%%"XDI", %%"XAX")", "%%mm1") // qword ptr["XDI"+"XAX"], mm1
 
              // simple bob last 8 bytes
-             MOVX"		"_Last8", %%"XDX"\n\t"
-             LEAX"		(%%"XBX", %%"XDX"), %%"XSI"\n\t"  // ["XBX"+"XDX"]
+             MOVX"		"_Last8", %%"XSI"\n\t"
+             ADDX"		%%"XDX", %%"XSI"\n\t"  // ["XDX"+"olddx"]
              "movq	    (%%"XSI"), %%mm0\n\t"
              "movq	    (%%"XSI", %%"XCX"), %%mm1\n\t"    // qword ptr["XSI"+"XCX"]
              "movq	    %%mm0, %%mm2\n\t"
-             V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))		// halfway between
-             V_PAVGB ("%%mm0", "%%mm2", "%%mm3", MANGLE(ShiftMask))		// 1/4 way
-             V_PAVGB ("%%mm1", "%%mm2", "%%mm3", MANGLE(ShiftMask))		// 3/4 way
-             ADDX"		%%"XDX", %%"XDI"\n\t"						// last 8 bytes of dest
+             V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)		// halfway between
+             V_PAVGB ("%%mm0", "%%mm2", "%%mm3", _ShiftMask)		// 1/4 way
+             V_PAVGB ("%%mm1", "%%mm2", "%%mm3", _ShiftMask)		// 3/4 way
+             ADDX"		"_olddx", %%"XDI"\n\t"						// last 8 bytes of dest
              V_MOVNTQ	("%%"XDI"", "%%mm0")
              V_MOVNTQ	("(%%"XDI", %%"XAX")", "%%mm1") // qword ptr["XDI"+"XAX"], mm1)
 
 #else
-             "movq	(%%"XBX"), %%mm0\n\t"
-             //		pavgb	mm0, qword ptr["XBX"+"XCX"]
-             V_PAVGB ("%%mm0", "(%%"XBX", %%"XCX")", "%%mm2", MANGLE(ShiftMask)) // qword ptr["XBX"+"XCX"], mm2, ShiftMask)
+             "movq	(%%"XDX"), %%mm0\n\t"
+             //		pavgb	mm0, qword ptr["XDX"+"XCX"]
+             V_PAVGB ("%%mm0", "(%%"XDX", %%"XCX")", "%%mm2", _ShiftMask) // qword ptr["XDX"+"XCX"], mm2, ShiftMask)
              MOVX"		"_pDest", %%"XDI"\n\t"
              V_MOVNTQ	("(%%"XDI")", "%%mm0")
 
              // simple bob last 8 bytes
-             MOVX"		"_Last8", %%"XDX"\n\t"
-             LEAX"		(%%"XBX", %%"XDX"), %%"XSI"\n\t" //"XSI", ["XBX"+"XDX"]
+             MOVX"		"_Last8", %%"XSI"\n\t"
+             ADDX"		%%"XDX", %%"XSI"\n\t" //"XSI", ["XDX"+"olddx"]
              "movq	    (%%"XSI"), %%mm0\n\t"
              //		pavgb	mm0, qword ptr["XSI"+"XCX"]
-             V_PAVGB	("%%mm0", "(%%"XSI", %%"XCX")", "%%mm2", MANGLE(ShiftMask)) // qword ptr["XSI"+"XCX"], mm2, ShiftMask)
-             V_MOVNTQ	("(%%"XDI", %%"XDX")", "%%mm0") // qword ptr["XDI"+"XDX"], mm0)
+             V_PAVGB	("%%mm0", "(%%"XSI", %%"XCX")", "%%mm2", _ShiftMask) // qword ptr["XSI"+"XCX"], mm2, ShiftMask)
+             ADDX"		"_olddx", %%"XDI"\n\t"
+             V_MOVNTQ	("(%%"XDI")", "%%mm0") // qword ptr["XDI"+"olddx"], mm0)
 #endif
              // now loop and get the middle qwords
              MOVX"		"_pSrc", %%"XSI"\n\t"
              MOVX"		"_pSrcP", %%"XDI"\n\t"
-             MOVX"		$8, %%"XDX"\n\t"				// curr offset longo all lines
+             MOVX"		$8, "_olddx"\n\t"				// curr offset longo all lines
 
              "1:\n\t"	
              MOVX"		"_pBobP", %%"XAX"\n\t"
              ADDX"		$8, %%"XDI"\n\t"
              ADDX"		$8, %%"XSI"\n\t"
-             ADDX"		$8, %%"XBX"\n\t"
-             ADDX"		%%"XDX", %%"XAX"\n\t"
+             ADDX"		$8, %%"XDX"\n\t"
+             ADDX"		"_olddx", %%"XAX"\n\t"
 
 #ifdef USE_STRANGE_BOB
 #include "StrangeBob.inc"
--- xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc.patch02	2007-01-28 12:12:59.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc	2007-02-21 13:18:26.713041000 -0500
@@ -31,22 +31,22 @@
         "pxor %%mm6, %%mm6\n\t"
         "pxor %%mm7, %%mm7\n\t"
 
-		"movq    -2(%%"XBX"), %%mm0\n\t"		// value a from top left		
-		"movq    -4(%%"XBX", %%"XCX"), %%mm1\n\t"	// value m from bottom right			
+		"movq    -2(%%"XDX"), %%mm0\n\t"		// value a from top left		
+		"movq    -4(%%"XDX", %%"XCX"), %%mm1\n\t"	// value m from bottom right			
         
 		"movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
 		"psubusb %%mm0, %%mm1\n\t"
 		"por		%%mm1, %%mm3\n\t"					// abs(a,m)
 
-		"psubusb "MANGLE(DiffThres)", %%mm3\n\t"		// nonzero where abs(a,m) > Thres else 0
+		"psubusb "_DiffThres", %%mm3\n\t"		// nonzero where abs(a,m) > Thres else 0
 		"pxor	%%mm4, %%mm4\n\t"
 		"pcmpeqb %%mm4, %%mm3\n\t"			// now ff where abs(a,m) < Thres, else 00	
 		"pcmpeqb	%%mm3, %%mm4\n\t"			// here ff where abs(a,m) > Thres, else 00
 
 
-		"movq    -4(%%"XBX"), %%mm0\n\t"		// value j
-		"movq    4(%%"XBX", %%"XCX"), %%mm1\n\t"	// value n
+		"movq    -4(%%"XDX"), %%mm0\n\t"		// value j
+		"movq    4(%%"XDX", %%"XCX"), %%mm1\n\t"	// value n
 		"movq	%%mm0, %%mm2\n\t"					
 		"pavgb	%%mm1, %%mm2\n\t"					// avg(j,n)
         "movq	%%mm0, %%mm3\n\t"
@@ -55,7 +55,7 @@
 		"por		%%mm1, %%mm0\n\t"					// abs(j,n)
 
         "movq    %%mm0, %%mm1\n\t"
-		"psubusb "MANGLE(DiffThres)", %%mm1\n\t"		// nonzero where abs(j,n) > Thres else 0
+		"psubusb "_DiffThres", %%mm1\n\t"		// nonzero where abs(j,n) > Thres else 0
 		"pxor	%%mm3, %%mm3\n\t"
 		"pcmpeqb %%mm3, %%mm1\n\t"			// now ff where abs(j,n) < Thres, else 00	
 
@@ -75,31 +75,31 @@
         "por     %%mm0, %%mm7\n\t"
         
         // k & m
-		"movq    2(%%"XBX"), %%mm0\n\t"		// value c from top left		
-		"movq    4(%%"XBX", %%"XCX"), %%mm1\n\t"	// value n from bottom right			
+		"movq    2(%%"XDX"), %%mm0\n\t"		// value c from top left		
+		"movq    4(%%"XDX", %%"XCX"), %%mm1\n\t"	// value n from bottom right			
 
 		"movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
 		"psubusb %%mm0, %%mm1\n\t"
 		"por		%%mm1, %%mm3\n\t"					// abs(c,n)
 
-		"psubusb "MANGLE(DiffThres)", %%mm3\n\t"		// nonzero where abs(c,n) > Thres else 0
+		"psubusb "_DiffThres", %%mm3\n\t"		// nonzero where abs(c,n) > Thres else 0
 		"pxor	%%mm4, %%mm4\n\t"
 		"pcmpeqb %%mm4, %%mm3\n\t"			// now ff where abs(c,n) < Thres, else 00	
 		"pcmpeqb	%%mm3, %%mm4\n\t"			// here ff where abs(c,n) > Thres, else 00
 
 
-		"movq    4(%%"XBX"), %%mm0\n\t"		// value k
-		"movq    -4(%%"XBX", %%"XCX"), %%mm1\n\t"	// value m
+		"movq    4(%%"XDX"), %%mm0\n\t"		// value k
+		"movq    -4(%%"XDX", %%"XCX"), %%mm1\n\t"	// value m
 		"movq	%%mm0, %%mm2\n\t"					
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(k,m)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(k,m)
         "movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm0\n\t"
 		"psubusb %%mm3, %%mm1\n\t"
 		"por		%%mm1, %%mm0\n\t"					// abs(k,m)
 
         "movq    %%mm0, %%mm1\n\t"
-		"psubusb "MANGLE(DiffThres)", %%mm1\n\t"		// nonzero where abs(k,m) > Thres else 0
+		"psubusb "_DiffThres", %%mm1\n\t"		// nonzero where abs(k,m) > Thres else 0
 		"pxor	%%mm3, %%mm3\n\t"
 		"pcmpeqb %%mm3, %%mm1\n\t"			// now ff where abs(k,m) < Thres, else 00	
 
@@ -120,30 +120,30 @@
 
 
         // c & d
-		"movq    (%%"XBX"), %%mm0\n\t"		// value b from top left		
-		"movq    2(%%"XBX", %%"XCX"), %%mm1\n\t"	// value f from bottom right			
+		"movq    (%%"XDX"), %%mm0\n\t"		// value b from top left		
+		"movq    2(%%"XDX", %%"XCX"), %%mm1\n\t"	// value f from bottom right			
 
 		"movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
 		"psubusb %%mm0, %%mm1\n\t"
 		"por		%%mm1, %%mm3\n\t"					// abs(b,f)
 
-		"psubusb "MANGLE(DiffThres)", %%mm3\n\t"		// nonzero where abs(b,f) > Thres else 0
+		"psubusb "_DiffThres", %%mm3\n\t"		// nonzero where abs(b,f) > Thres else 0
 		"pxor	%%mm4, %%mm4\n\t"
 		"pcmpeqb %%mm4, %%mm3\n\t"			// now ff where abs(b,f) < Thres, else 00	
 		"pcmpeqb	%%mm3, %%mm4\n\t"			// here ff where abs(b,f) > Thres, else 00
 
-		"movq    2(%%"XBX"), %%mm0\n\t"		// value c
-		"movq    -2(%%"XBX", %%"XCX"), %%mm1\n\t"	// value d
+		"movq    2(%%"XDX"), %%mm0\n\t"		// value c
+		"movq    -2(%%"XDX", %%"XCX"), %%mm1\n\t"	// value d
 		"movq	%%mm0, %%mm2\n\t"					
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(c,d)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(c,d)
         "movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm0\n\t"
 		"psubusb %%mm3, %%mm1\n\t"
 		"por		%%mm1, %%mm0\n\t"					// abs(c,d)
 
         "movq    %%mm0, %%mm1\n\t"
-		"psubusb "MANGLE(DiffThres)", %%mm1\n\t"		// nonzero where abs(c,d) > Thres else 0
+		"psubusb "_DiffThres", %%mm1\n\t"		// nonzero where abs(c,d) > Thres else 0
 		"pxor	%%mm3, %%mm3\n\t"
         "pcmpeqb %%mm3, %%mm1\n\t"			// now ff where abs(c,d) < Thres, else 00	
 
@@ -163,30 +163,30 @@
         "por     %%mm0, %%mm7\n\t"
 
         // a & f
-		"movq    (%%"XBX"), %%mm0\n\t"		// value b from top left		
-		"movq    -2(%%"XBX", %%"XCX"), %%mm1\n\t"	// value d from bottom right			
+		"movq    (%%"XDX"), %%mm0\n\t"		// value b from top left		
+		"movq    -2(%%"XDX", %%"XCX"), %%mm1\n\t"	// value d from bottom right			
 
 		"movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
 		"psubusb %%mm0, %%mm1\n\t"
 		"por		%%mm1, %%mm3\n\t"					// abs(b,d)
 
-		"psubusb "MANGLE(DiffThres)", %%mm3\n\t"	// nonzero where abs(b,d) > Thres else 0
+		"psubusb "_DiffThres", %%mm3\n\t"	// nonzero where abs(b,d) > Thres else 0
 		"pxor	%%mm4, %%mm4\n\t"
 		"pcmpeqb %%mm4, %%mm3\n\t"			// now ff where abs(b,d) < Thres, else 00	
 		"pcmpeqb	%%mm3, %%mm4\n\t"			// here ff where abs(b,d) > Thres, else 00
 
-		"movq    -2(%%"XBX"), %%mm0\n\t"		// value a
-		"movq    2(%%"XBX", %%"XCX"), %%mm1\n\t"	// value f
+		"movq    -2(%%"XDX"), %%mm0\n\t"		// value a
+		"movq    2(%%"XDX", %%"XCX"), %%mm1\n\t"	// value f
 		"movq	%%mm0, %%mm2\n\t"					
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(a,f)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(a,f)
         "movq	%%mm0, %%mm3\n\t"
         "psubusb	%%mm1, %%mm0\n\t"
 		"psubusb %%mm3, %%mm1\n\t"
 		"por		%%mm1, %%mm0\n\t"					// abs(a,f)
 
         "movq    %%mm0, %%mm1\n\t"
-		"psubusb "MANGLE(DiffThres)", %%mm1\n\t"		// nonzero where abs(a,f) > Thres else 0
+		"psubusb "_DiffThres", %%mm1\n\t"		// nonzero where abs(a,f) > Thres else 0
 		"pxor	%%mm3, %%mm3\n\t"
 		"pcmpeqb %%mm3, %%mm1\n\t"			// now ff where abs(a,f) < Thres, else 00	
 
@@ -205,22 +205,22 @@
         "por     %%mm2, %%mm6\n\t"
         "por     %%mm0, %%mm7\n\t"
            
- 		"pand	"MANGLE(YMask)", %%mm5\n\t"		// mask out chroma from here
- 		"pand	"MANGLE(YMask)", %%mm6\n\t"			// mask out chroma from here
- 		"pand	"MANGLE(YMask)", %%mm7\n\t"			// mask out chroma from here
+ 		"pand	"_YMask", %%mm5\n\t"		// mask out chroma from here
+ 		"pand	"_YMask", %%mm6\n\t"			// mask out chroma from here
+ 		"pand	"_YMask", %%mm7\n\t"			// mask out chroma from here
 
 		// b,e
-		"movq    (%%"XBX"), %%mm0\n\t"		// value b from top 		
-		"movq    (%%"XBX", %%"XCX"), %%mm1\n\t"	// value e from bottom 
+		"movq    (%%"XDX"), %%mm0\n\t"		// value b from top 		
+		"movq    (%%"XDX", %%"XCX"), %%mm1\n\t"	// value e from bottom 
 		"movq	%%mm0, %%mm2\n\t"					
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(b,e)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(b,e)
         "movq	%%mm0, %%mm3\n\t"
         "psubusb	%%mm1, %%mm0\n\t"
 		"psubusb %%mm3, %%mm1\n\t"
 		"por		%%mm1, %%mm0\n\t"					// abs(b,e)
 
         "movq    %%mm0, %%mm1\n\t"
-		"psubusb "MANGLE(DiffThres)", %%mm1\n\t"		// nonzero where abs(b,e) > Thres else 0
+		"psubusb "_DiffThres", %%mm1\n\t"		// nonzero where abs(b,e) > Thres else 0
 		"pxor	%%mm3, %%mm3\n\t"
 		"pcmpeqb %%mm3, %%mm1\n\t"		// now ff where abs(b,e) < Thres, else 00	
 
@@ -238,8 +238,8 @@
         "por     %%mm0, %%mm7\n\t"
 
 		// bob in any leftovers
-		"movq    (%%"XBX"), %%mm0\n\t"		// value b from top 		
-		"movq    (%%"XBX", %%"XCX"), %%mm1\n\t"	// value e from bottom 
+		"movq    (%%"XDX"), %%mm0\n\t"		// value b from top 		
+		"movq    (%%"XDX", %%"XCX"), %%mm1\n\t"	// value e from bottom 
 
 
 // We will also calc here the max/min values to later limit comb
@@ -271,7 +271,7 @@
 		"por		%%mm2, %%mm3\n\t"			// abs diff
 //		pmaxub  %%mm3, %%mm4			// top or bottom pixel moved most
 		V_PMAXUB ("%%mm3", "%%mm4")			// top or bottom pixel moved most
-		"psubusb "MANGLE(DiffThres)", %%mm3\n\t"		// moved more than allowed? or goes to 0?
+		"psubusb "_DiffThres", %%mm3\n\t"		// moved more than allowed? or goes to 0?
 		"pxor	%%mm4, %%mm4\n\t"
 		"pcmpeqb %%mm4, %%mm3\n\t"			// now ff where low motion, else high motion
 		
@@ -283,19 +283,19 @@
 		V_PMAXUB ("%%mm6", "%%mm2")
 
         "psubusb %%mm3, %%mm2\n\t"			// maybe decrease it to 0000.. if no surround motion
-//		"movq	%%mm2, "MANGLE(Min_Vals)"\n\t"
+//		"movq	%%mm2, "_Min_Vals"\n\t"
 
 		"movq	%%mm0, %%mm2\n\t"
 		V_PMAXUB ("%%mm2", "%%mm1")
 //		pminub	%%mm6, %%mm2			// clip our current results so far to be below this
 		V_PMINUB ("%%mm6", "%%mm2", "%%mm4")
         "paddusb %%mm3, %%mm2\n\t"			// maybe increase it to ffffff if no surround motion
-//		"movq	%%mm2, "MANGLE(Max_Vals)"\n\t"
+//		"movq	%%mm2, "_Max_Vals"\n\t"
 #endif
 			
 		"movq	%%mm0, %%mm2\n\t"						
 //		pavgb	%%mm2, %%mm1					// avg(b,e)
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(b,e)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(b,e)
 				
         "movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
--- xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc.patch02	2007-01-28 12:12:59.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc	2007-02-21 13:18:26.714133000 -0500
@@ -33,8 +33,8 @@
 static const int64_t __attribute__((__used__)) FOURS     = 0x0404040404040404ull;
 static const int64_t __attribute__((__used__)) ONES      = 0x0101010101010101ull;
 static const int64_t __attribute__((__used__)) ShiftMask = 0xfefffefffefffeffull;
-//static int64_t Min_Vals  = 0x0000000000000000ull;
-//static int64_t Max_Vals  = 0x0000000000000000ull;
+static int64_t Min_Vals  = 0x0000000000000000ull;
+static int64_t Max_Vals  = 0x0000000000000000ull;
 #endif
 
 #ifndef TopFirst
@@ -69,7 +69,7 @@
     int rowsize;
     int FldHeight;
     int stride = (width*2);
-    long oldbx;
+    long olddx;
 
 
     src_pitch = stride*2;
--- xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc.patch02	2007-01-28 12:12:59.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc	2007-02-21 13:18:26.715575000 -0500
@@ -14,22 +14,22 @@
 		// selected for the	smallest of abs(a,f), abs(c,d), or abs(b,e), etc.
 
 		// a,f
-		"movq    -2(%%"XBX"), %%mm0\n\t"		// value a from top left		
-		"movq    2(%%"XBX", %%"XCX"), %%mm1\n\t"	// value f from bottom right			
+		"movq    -2(%%"XDX"), %%mm0\n\t"		// value a from top left		
+		"movq    2(%%"XDX", %%"XCX"), %%mm1\n\t"	// value f from bottom right			
 		"movq	%%mm0, %%mm6\n\t"					
 //		pavgb	%%mm6, %%mm1					// avg(a,f), also best so far
-		V_PAVGB ("%%mm6", "%%mm1", "%%mm7", MANGLE(ShiftMask))	// avg(a,f), also best so far
+		V_PAVGB ("%%mm6", "%%mm1", "%%mm7", _ShiftMask)	// avg(a,f), also best so far
         "movq	%%mm0, %%mm7\n\t"
 		"psubusb	 %%mm1, %%mm7\n\t"
 		"psubusb %%mm0, %%mm1\n\t"
 		"por		%%mm1, %%mm7\n\t"					// abs diff, also best so far
 
 		// c,d
-		"movq    2(%%"XBX"), %%mm0\n\t"		// value a from top left		
-		"movq    -2(%%"XBX", %%"XCX"), %%mm1\n\t"	// value f from bottom right			
+		"movq    2(%%"XDX"), %%mm0\n\t"		// value a from top left		
+		"movq    -2(%%"XDX", %%"XCX"), %%mm1\n\t"	// value f from bottom right			
 		"movq	%%mm0, %%mm2\n\t"						
 //		pavgb	%%mm2, %%mm1					// avg(c,d)
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(c,d)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(c,d)
         "movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
 		"psubusb %%mm0, %%mm1\n\t"
@@ -49,15 +49,15 @@
 
 		"por		%%mm2, %%mm6\n\t"			// and merge new & old vals keeping best
 		"por		%%mm1, %%mm7\n\t"
-		"por		"MANGLE(UVMask)", %%mm7\n\t"			// but we know chroma is worthless so far
-		"pand	"MANGLE(YMask)", %%mm5\n\t"			// mask out chroma from here also
+		"por		"_UVMask", %%mm7\n\t"			// but we know chroma is worthless so far
+		"pand	"_YMask", %%mm5\n\t"			// mask out chroma from here also
 
 		// j,n
-		"movq    -4(%%"XBX"), %%mm0\n\t"		// value j from top left		
-		"movq    4(%%"XBX", %%"XCX"), %%mm1\n\t"	// value n from bottom right			
+		"movq    -4(%%"XDX"), %%mm0\n\t"		// value j from top left		
+		"movq    4(%%"XDX", %%"XCX"), %%mm1\n\t"	// value n from bottom right			
 		"movq	%%mm0, %%mm2\n\t"						
 //		pavgb	%%mm2, %%mm1					// avg(j,n)
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(j,n)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(j,n)
         "movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
 		"psubusb %%mm0, %%mm1\n\t"
@@ -79,11 +79,11 @@
 		"por		%%mm1, %%mm7\n\t"			// "
 
 		// k, m
-		"movq    4(%%"XBX"), %%mm0\n\t"		// value k from top right		
-		"movq    -4(%%"XBX", %%"XCX"), %%mm1\n\t"	// value n from bottom left			
+		"movq    4(%%"XDX"), %%mm0\n\t"		// value k from top right		
+		"movq    -4(%%"XDX", %%"XCX"), %%mm1\n\t"	// value n from bottom left			
 		"movq	%%mm0, %%mm4\n\t"						
 //		pavgb	%%mm4, %%mm1					// avg(k,m)
-		V_PAVGB ("%%mm4", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(k,m)
+		V_PAVGB ("%%mm4", "%%mm1", "%%mm3", _ShiftMask)	// avg(k,m)
 
         "movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
@@ -108,8 +108,8 @@
 		"por		%%mm1, %%mm7\n\t"			// "
 
 		// b,e
-		"movq    (%%"XBX"), %%mm0\n\t"		// value b from top 		
-		"movq    (%%"XBX", %%"XCX"), %%mm1\n\t"	// value e from bottom 
+		"movq    (%%"XDX"), %%mm0\n\t"		// value b from top 		
+		"movq    (%%"XDX", %%"XCX"), %%mm1\n\t"	// value e from bottom 
 
 // We will also calc here the max/min values to later limit comb
 // so the max excursion will not exceed the Max_Comb constant
@@ -140,7 +140,7 @@
 		"por		%%mm2, %%mm3\n\t"			// abs diff
 //		pmaxub  %%mm3, %%mm4			// top or bottom pixel moved most
 		V_PMAXUB ("%%mm3", "%%mm4")			// top or bottom pixel moved most
-		"psubusb "MANGLE(Max_Mov)", %%mm3\n\t"		// moved more than allowed? or goes to 0?
+		"psubusb "_Max_Mov", %%mm3\n\t"		// moved more than allowed? or goes to 0?
 		"pxor	%%mm4, %%mm4\n\t"
 		"pcmpeqb %%mm4, %%mm3\n\t"			// now ff where low motion, else high motion
 		
@@ -152,19 +152,19 @@
 		V_PMAXUB ("%%mm6", "%%mm2")
 
 		"psubusb %%mm3, %%mm2\n\t"			// maybe decrease it to 0000.. if no surround motion
-//		"movq	%%mm2, "MANGLE(Min_Vals)"\n\t"
+//		"movq	%%mm2, "_Min_Vals"\n\t"
 
 		"movq	%%mm0, %%mm2\n\t"
 		V_PMAXUB ("%%mm2", "%%mm1")
 //		pminub	%%mm6, %%mm2			// clip our current results so far to be below this
 		V_PMINUB ("%%mm6", "%%mm2", "%%mm4")
         "paddusb %%mm3, %%mm2\n\t"			// maybe increase it to ffffff if no surround motion
-//		"movq	%%mm2, "MANGLE(Max_Vals)"\n\t"
+//		"movq	%%mm2, "_Max_Vals"\n\t"
 #endif
         
 		"movq	%%mm0, %%mm2\n\t"						
 //		pavgb	%%mm2, %%mm1					// avg(b,e)
-		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask))	// avg(b,e)
+		V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask)	// avg(b,e)
 				
         "movq	%%mm0, %%mm3\n\t"
 		"psubusb	%%mm1, %%mm3\n\t"
--- xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h.patch02	2007-01-28 12:12:59.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h	2007-02-21 13:18:26.716720000 -0500
@@ -114,7 +114,7 @@
     "por     %%xmm0,      %%xmm5\n\t"      /* and merge new & old vals */                \
     "por     %%xmm2,      %%xmm7\n\t"
 
-#define RESET_CHROMA "por "MANGLE(UVMask)", %%xmm7\n\t"
+#define RESET_CHROMA "por "_UVMask", %%xmm7\n\t"
 
 #else // ifdef IS_SSE2
 
@@ -126,7 +126,7 @@
     "psubusb %%mm1,      %%mm2\n\t"                                                     \
     "psubusb %%mm0,      %%mm3\n\t"                                                     \
     "por     %%mm3,      %%mm2\n\t"                                                     \
-    V_PAVGB ("%%mm0", "%%mm1", "%%mm3", MANGLE(ShiftMask)) /* avg of 2 pixels */               \
+    V_PAVGB ("%%mm0", "%%mm1", "%%mm3", _ShiftMask) /* avg of 2 pixels */               \
     "movq    %%mm2,      %%mm3\n\t"       /* another copy of our our weights */         \
     "pxor    %%mm1,      %%mm1\n\t"                                                     \
     "psubusb %%mm7,      %%mm3\n\t"       /* nonzero where old weights lower, else 0 */ \
@@ -144,14 +144,14 @@
     "movq    "PADDR2A",   %%mm1\n\t"      /* our pixel2 value */                        \
     "movq    "PADDR1B",   %%mm2\n\t"      /* our 4 pixels */                            \
     "movq    "PADDR2B",   %%mm3\n\t"      /* our pixel2 value */                        \
-    V_PAVGB("%%mm0", "%%mm2", "%%mm2", MANGLE(ShiftMask))                                      \
-    V_PAVGB("%%mm1", "%%mm3", "%%mm3", MANGLE(ShiftMask))                                      \
+    V_PAVGB("%%mm0", "%%mm2", "%%mm2", _ShiftMask)                                      \
+    V_PAVGB("%%mm1", "%%mm3", "%%mm3", _ShiftMask)                                      \
     "movq    %%mm0,       %%mm2\n\t"      /* another copy of our pixel1 value */        \
     "movq    %%mm1,       %%mm3\n\t"      /* another copy of our pixel1 value */        \
     "psubusb %%mm1,       %%mm2\n\t"                                                    \
     "psubusb %%mm0,       %%mm3\n\t"                                                    \
     "por     %%mm3,       %%mm2\n\t"                                                    \
-    V_PAVGB("%%mm0", "%%mm1", "%%mm3", MANGLE(ShiftMask))   /* avg of 2 pixels */              \
+    V_PAVGB("%%mm0", "%%mm1", "%%mm3", _ShiftMask)   /* avg of 2 pixels */              \
     "movq    %%mm2,       %%mm3\n\t"      /* another copy of our our weights */         \
     "pxor    %%mm1,       %%mm1\n\t"                                                    \
     "psubusb %%mm7,       %%mm3\n\t"      /* nonzero where old weights lower, else 0 */ \
@@ -164,7 +164,7 @@
     "por     %%mm0,       %%mm5\n\t"      /* and merge new & old vals */                \
     "por     %%mm2,       %%mm7\n\t"
 
-#define RESET_CHROMA "por "MANGLE(UVMask)", %%mm7\n\t"
+#define RESET_CHROMA "por "_UVMask", %%mm7\n\t"
 
 #endif
 
--- xine-lib-1.1.4/src/post/deinterlace/plugins/greedy2frame_template.c.patch02	2006-12-21 04:54:45.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/greedy2frame_template.c	2007-02-21 13:18:26.618423000 -0500
@@ -190,7 +190,7 @@
         * See above for a description of the algorithm.
 	*/
             ".align 8 \n\t"
-            "movq %4, %%mm6			\n\t"
+            "movq "MANGLE(Mask)", %%mm6			\n\t"
 
             "movq %0, %%mm1			\n\t"     // T1
             "movq %1, %%mm0			\n\t"     // M1
@@ -198,7 +198,7 @@
             "movq %3, %%mm2			\n\t"     // M0
             : /* no output */
             : "m" (*T1), "m" (*M1), 
-              "m" (*B1), "m" (*M0), "m" (Mask) );
+              "m" (*B1), "m" (*M0) );
           
 
           asm volatile(
@@ -255,10 +255,10 @@
 #endif
 
             /* if |M1-M0| > Threshold we want dword worth of twos */
-            "pcmpgtb %3, %%mm4			\n\t"
-            "pand    %4, %%mm4			\n\t" /* get rid of sign bit */
-            "pcmpgtd %5, %%mm4			\n\t" /* do we want to bob */
-            "pandn   %6, %%mm4			\n\t"
+            "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm4			\n\t"
+            "pand    "MANGLE(Mask)", %%mm4 	\n\t" /* get rid of sign bit */
+            "pcmpgtd "MANGLE(DwordOne)", %%mm4 	\n\t" /* do we want to bob */
+            "pandn   "MANGLE(DwordTwo)", %%mm4	\n\t"
 
             "movq    %1, %%mm2			\n\t" /* mm2 = T0 */
 
@@ -271,11 +271,11 @@
             "pand    %%mm6, %%mm5			\n\t"
 
             /* if |T1-T0| > Threshold we want dword worth of ones */
-            "pcmpgtb %3, %%mm5			\n\t"
+            "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm5	      	\n\t"
             "pand    %%mm6, %%mm5		\n\t" /* get rid of sign bit */
 
-            "pcmpgtd %5, %%mm5			\n\t" 
-            "pandn   %5, %%mm5			\n\t"
+            "pcmpgtd "MANGLE(DwordOne)", %%mm5			\n\t" 
+            "pandn   "MANGLE(DwordOne)", %%mm5			\n\t"
             "paddd   %%mm5, %%mm4			\n\t"
 
             "movq    %2, %%mm2			\n\t"     /* B0 */
@@ -289,13 +289,13 @@
             "pand    %%mm6, %%mm5			\n\t"
 
             /* if |B1-B0| > Threshold we want dword worth of ones */
-            "pcmpgtb %3, %%mm5		\n\t"
+            "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm5		\n\t"
             "pand    %%mm6, %%mm5	\n\t"     /* get rid of any sign bit */
-            "pcmpgtd %5, %%mm5			\n\t"
-            "pandn   %5, %%mm5			\n\t"
+            "pcmpgtd "MANGLE(DwordOne)", %%mm5			\n\t"
+            "pandn   "MANGLE(DwordOne)", %%mm5			\n\t"
             "paddd   %%mm5, %%mm4			\n\t"
 
-            "pcmpgtd %6, %%mm4			\n\t"
+            "pcmpgtd "MANGLE(DwordTwo)", %%mm4			\n\t"
 
 /* debugging feature
  * output the value of mm4 at this point which is pink where we will weave
@@ -321,7 +321,7 @@
 #endif
 
           : "=m" (*Dest2)
-          : "m" (*T0), "m" (*B0), "m" (qwGreedyTwoFrameThreshold), "m" (Mask), "m" (DwordOne), "m" (DwordTwo) );
+          : "m" (*T0), "m" (*B0) );
 
           /* Advance to the next set of pixels. */
           T1 += 8;
--- xine-lib-1.1.4/src/post/deinterlace/plugins/greedyh.asm.patch02	2006-12-21 04:54:45.000000000 -0500
+++ xine-lib-1.1.4/src/post/deinterlace/plugins/greedyh.asm	2007-02-21 13:18:26.707574000 -0500
@@ -43,6 +43,7 @@
 
     int Line;
     long LoopCtr;
+    long oldbx;
     unsigned int Pitch = stride*2;
     int FieldHeight = height / 2;
 
@@ -51,7 +52,6 @@
     unsigned char* L3;					// ptr to Line3
 
     unsigned char* L2P;					// ptr to prev Line2
-    unsigned char* temp;
     unsigned char* Dest = output;
 
     int64_t LastAvg=0;			//interp value from left qword
@@ -121,21 +121,25 @@
 #define asmLastAvg      "%0"
 #define asmL1           "%1"
 #define asmL3           "%2"
-#define asmtemp         "%3"
+#define asmL2P          "%3"
 #define asmL2           "%4"
 #define asmDest         "%5"
 #define asmLoopCtr      "%6"
+#define asmoldbx        "%7"
 #endif
 
         // For ease of reading, the comments below assume that we're operating on an odd
         // field (i.e., that InfoIsOdd is true).  Assume the obvious for even lines..
-        temp = L2P;
         __asm__ __volatile__
             (
+             // save ebx (-fPIC)
+	     MOVX" %%"XBX", "asmoldbx"\n\t"
+
              MOVX"  "asmL1",          %%"XAX"\n\t"
-             LEAX"  8(%%"XAX"),     %%"XDX"\n\t"    // next qword needed by DJR
+             LEAX"  8(%%"XAX"),     %%"XBX"\n\t"    // next qword needed by DJR
              MOVX"  "asmL3",          %%"XCX"\n\t"
              SUBX"  %%"XAX",        %%"XCX"\n\t"    // carry L3 addr as an offset
+             MOVX"  "asmL2P",         %%"XDX"\n\t"
              MOVX"  "asmL2",          %%"XSI"\n\t"
              MOVX"  "asmDest",        %%"XDI"\n\t"    // DL1 if Odd or DL2 if Even
 
@@ -144,14 +148,11 @@
 
              "movq  (%%"XSI"),      %%mm0\n\t"      // L2 - the newest weave pixel value
              "movq  (%%"XAX"),      %%mm1\n\t"      // L1 - the top pixel
-             PUSHX" %%"XDX              "\n\t"
-             MOVX"  "asmtemp",    %%"XDX"\n\t"
              "movq  (%%"XDX"),      %%mm2\n\t"      // L2P - the prev weave pixel
-             POPX" %%"XDX               "\n\t"
              "movq  (%%"XAX", %%"XCX"), %%mm3\n\t"  // L3, next odd row
              "movq  %%mm1,          %%mm6\n\t"      // L1 - get simple single pixel interp
              //	pavgb   mm6, mm3                    // use macro below
-             V_PAVGB ("%%mm6", "%%mm3", "%%mm4", "%8")
+             V_PAVGB ("%%mm6", "%%mm3", "%%mm4", MANGLE(ShiftMask))
 
              // DJR - Diagonal Jaggie Reduction
              // In the event that we are going to use an average (Bob) pixel we do not want a jagged
@@ -165,24 +166,24 @@
              "psllq $16,            %%mm7\n\t"      // left justify 3 pixels
              "por   %%mm7,          %%mm4\n\t"      // and combine
 
-             "movq  (%%"XDX"),      %%mm5\n\t"      // next horiz qword from L1
+             "movq  (%%"XBX"),      %%mm5\n\t"      // next horiz qword from L1
              //			pavgb   mm5, qword ptr[ebx+ecx] // next horiz qword from L3, use macro below
-             V_PAVGB ("%%mm5", "(%%"XDX",%%"XCX")", "%%mm7", "%8")
+             V_PAVGB ("%%mm5", "(%%"XBX",%%"XCX")", "%%mm7", MANGLE(ShiftMask))
              "psllq $48,            %%mm5\n\t"      // left just 1 pixel
              "movq  %%mm6,          %%mm7\n\t"      // another copy of simple bob pixel
              "psrlq $16,            %%mm7\n\t"      // right just 3 pixels
              "por   %%mm7,          %%mm5\n\t"      // combine
              //			pavgb	mm4, mm5			// avg of forward and prev by 1 pixel, use macro
-             V_PAVGB ("%%mm4", "%%mm5", "%%mm5", "%8")   // mm5 gets modified if MMX
+             V_PAVGB ("%%mm4", "%%mm5", "%%mm5", MANGLE(ShiftMask))   // mm5 gets modified if MMX
              //			pavgb	mm6, mm4			// avg of center and surround interp vals, use macro
-             V_PAVGB ("%%mm6", "%%mm4", "%%mm7", "%8")
+             V_PAVGB ("%%mm6", "%%mm4", "%%mm7", MANGLE(ShiftMask))
 
              // Don't do any more averaging than needed for mmx. It hurts performance and causes rounding errors.
 #ifndef IS_MMX
              //          pavgb	mm4, mm6			// 1/4 center, 3/4 adjacent
-             V_PAVGB ("%%mm4", "%%mm6", "%%mm7", "%8")
+             V_PAVGB ("%%mm4", "%%mm6", "%%mm7", MANGLE(ShiftMask))
              //    		pavgb	mm6, mm4			// 3/8 center, 5/8 adjacent
-             V_PAVGB ("%%mm6", "%%mm4", "%%mm7", "%8")
+             V_PAVGB ("%%mm6", "%%mm4", "%%mm7", MANGLE(ShiftMask))
 #endif
 
              // get abs value of possible L2 comb
@@ -235,71 +236,64 @@
              // pminub	mm5, mm3                    // now = Min(L1,L3), use macro
              V_PMINUB ("%%mm5", "%%mm3", "%%mm7")
              // allow the value to be above the high or below the low by amt of MaxComb
-             "psubusb %9,           %%mm5\n\t"      // lower min by diff
-             "paddusb %9,           %%mm2\n\t"      // increase max by diff
+             "psubusb "MANGLE(MaxComb)", %%mm5\n\t"      // lower min by diff
+             "paddusb "MANGLE(MaxComb)", %%mm2\n\t"      // increase max by diff
              // pmaxub	mm4, mm5                    // now = Max(best,Min(L1,L3) use macro
              V_PMAXUB ("%%mm4", "%%mm5")
              // pminub	mm4, mm2                    // now = Min( Max(best, Min(L1,L3), L2 )=L2 clipped
              V_PMINUB ("%%mm4", "%%mm2", "%%mm7")
 
              // Blend weave pixel with bob pixel, depending on motion val in mm0
-             "psubusb %10,          %%mm0\n\t"// test Threshold, clear chroma change >>>??
-             "pmullw  %11,          %%mm0\n\t"    // mul by user factor, keep low 16 bits
-             "movq    %12,          %%mm7\n\t"
+             "psubusb "MANGLE(MotionThreshold)", %%mm0\n\t"// test Threshold, clear chroma change >>>??
+             "pmullw  "MANGLE(MotionSense)", %%mm0\n\t"    // mul by user factor, keep low 16 bits
+             "movq   "MANGLE(QW256)", %%mm7\n\t"
 #ifdef IS_SSE
              "pminsw  %%mm7,        %%mm0\n\t"      // max = 256
 #else
-             "paddusw %13,          %%mm0\n\t"      // add, may sat at fff..
-             "psubusw %13,          %%mm0\n\t"      // now = Min(L1,256)
+             "paddusw "MANGLE(QW256B)", %%mm0\n\t"      // add, may sat at fff..
+             "psubusw "MANGLE(QW256B)", %%mm0\n\t"      // now = Min(L1,256)
 #endif
              "psubusw %%mm0,        %%mm7\n\t"      // so the 2 sum to 256, weighted avg
              "movq    %%mm4,        %%mm2\n\t"      // save weave chroma info before trashing
-             "pand    %14,          %%mm4\n\t"      // keep only luma from calc'd value
+             "pand   "MANGLE(YMask)", %%mm4\n\t"      // keep only luma from calc'd value
              "pmullw  %%mm7,        %%mm4\n\t"      // use more weave for less motion
-             "pand    %14,          %%mm6\n\t"      // keep only luma from calc'd value
+             "pand   "MANGLE(YMask)", %%mm6\n\t"      // keep only luma from calc'd value
              "pmullw  %%mm0,        %%mm6\n\t"      // use more bob for large motion
              "paddusw %%mm6,        %%mm4\n\t"      // combine
              "psrlw   $8,           %%mm4\n\t"      // div by 256 to get weighted avg
 
              // chroma comes from weave pixel
-             "pand    %15,          %%mm2\n\t"      // keep chroma
+             "pand   "MANGLE(UVMask)", %%mm2\n\t"      // keep chroma
              "por     %%mm4,        %%mm2\n\t"      // and combine
 
              V_MOVNTQ ("(%%"XDI")", "%%mm2")        // move in our clipped best, use macro
 
              // bump ptrs and loop
              LEAX"    8(%%"XAX"),   %%"XAX"\n\t"
+             LEAX"    8(%%"XBX"),   %%"XBX"\n\t"
              LEAX"    8(%%"XDX"),   %%"XDX"\n\t"
-             ADDX"    $8,         "asmtemp"\n\t"
              LEAX"    8(%%"XDI"),   %%"XDI"\n\t"
              LEAX"    8(%%"XSI"),   %%"XSI"\n\t"
              DECX"    "asmLoopCtr"\n\t"
              "jg      1b\n\t"                       // loop if not to last line
                                                     // note P-III default assumes backward branches taken
              "jl      1f\n\t"                       // done
-             MOVX"    %%"XAX",      %%"XDX"\n\t"  // sharpness lookahead 1 byte only, be wrong on 1
+             MOVX"    %%"XAX",      %%"XBX"\n\t"  // sharpness lookahead 1 byte only, be wrong on 1
              "jmp     1b\n\t"
 
              "1:\n\t"
+	     MOVX" "asmoldbx", %%"XBX"\n\t"
 
              : /* no outputs */
 
              : "m"(LastAvg),
                "m"(L1),
                "m"(L3),
-               "m"(temp),
+               "m"(L2P),
                "m"(L2),
                "m"(Dest),
                "m"(LoopCtr),
-               "m"(temp),
-               "m"(ShiftMask),
-               "m"(MaxComb),
-               "m"(MotionThreshold),
-               "m"(MotionSense),
-               "m"(QW256),
-               "m"(QW256B),
-               "m"(YMask),
-               "m"(UVMask)
+               "m"(oldbx)
 
              : XAX, XCX, XDX, XSI, XDI,
 #ifdef ARCH_X86