diff -urN 2.4.19pre4ac3/arch/i386/lib/mmx.c 2.4.19pre4ac4/arch/i386/lib/mmx.c --- 2.4.19pre4ac3/arch/i386/lib/mmx.c Tue Jan 22 18:51:06 2002 +++ 2.4.19pre4ac4/arch/i386/lib/mmx.c Wed Apr 3 18:07:35 2002 @@ -57,7 +57,7 @@ : : "r" (from) ); - for(; i>0; i--) + for(; i>5; i--) { __asm__ __volatile__ ( "1: prefetch 320(%0)\n" @@ -85,6 +85,30 @@ " .align 4\n" " .long 1b, 3b\n" ".previous" + : : "r" (from), "r" (to) : "memory"); + from+=64; + to+=64; + } + + for(; i>0; i--) + { + __asm__ __volatile__ ( + " movq (%0), %%mm0\n" + " movq 8(%0), %%mm1\n" + " movq 16(%0), %%mm2\n" + " movq 24(%0), %%mm3\n" + " movq %%mm0, (%1)\n" + " movq %%mm1, 8(%1)\n" + " movq %%mm2, 16(%1)\n" + " movq %%mm3, 24(%1)\n" + " movq 32(%0), %%mm0\n" + " movq 40(%0), %%mm1\n" + " movq 48(%0), %%mm2\n" + " movq 56(%0), %%mm3\n" + " movq %%mm0, 32(%1)\n" + " movq %%mm1, 40(%1)\n" + " movq %%mm2, 48(%1)\n" + " movq %%mm3, 56(%1)\n" : : "r" (from), "r" (to) : "memory"); from+=64; to+=64;