--- vf_decimate.c.org 2007-05-05 00:12:07.000000000 +0000 +++ vf_decimate.c 2007-05-05 17:21:20.000000000 +0000 @@ -24,7 +24,8 @@ { volatile short out[4]; asm ( - "movl $8, %%ecx \n\t" + "push %%ebx \n\t" + "mov $8, %%ebx \n\t" "pxor %%mm4, %%mm4 \n\t" "pxor %%mm7, %%mm7 \n\t" @@ -35,7 +36,7 @@ "movq (%%"REG_S"), %%mm2 \n\t" "add %%"REG_a", %%"REG_S" \n\t" "movq (%%"REG_D"), %%mm1 \n\t" - "add %%"REG_b", %%"REG_D" \n\t" + "add %%"REG_c", %%"REG_D" \n\t" "psubusb %%mm1, %%mm2 \n\t" "psubusb %%mm0, %%mm1 \n\t" "movq %%mm2, %%mm0 \n\t" @@ -49,12 +50,13 @@ "paddw %%mm2, %%mm4 \n\t" "paddw %%mm3, %%mm4 \n\t" - "decl %%ecx \n\t" + "decl %%ebx \n\t" "jnz 1b \n\t" "movq %%mm4, (%%"REG_d") \n\t" "emms \n\t" + "pop %%ebx \n\t" : - : "S" (old), "D" (new), "a" ((long)os), "b" ((long)ns), "d" (out) + : "S" (old), "D" (new), "a" ((long)os), "c" ((long)ns), "d" (out) : "memory" ); return out[0]+out[1]+out[2]+out[3];