patch-2.0.21-2.1.0 linux/arch/m68k/lib/memcpy.c
Next file: linux/arch/m68k/lib/memset.c
Previous file: linux/arch/m68k/lib/Makefile
Back to the patch index
Back to the overall index
- Lines: 44
- Date:
Wed Sep 25 10:47:40 1996
- Orig file:
lx2.0/v2.0.21/linux/arch/m68k/lib/memcpy.c
- Orig date:
Wed Dec 27 22:46:35 1995
diff -u --recursive --new-file lx2.0/v2.0.21/linux/arch/m68k/lib/memcpy.c linux/arch/m68k/lib/memcpy.c
@@ -3,7 +3,7 @@
void * memcpy(void * to, const void * from, size_t n)
{
void *xto = to;
- size_t temp;
+ size_t temp, temp1;
if (!n)
return xto;
@@ -30,10 +30,30 @@
{
long *lto = to;
const long *lfrom = from;
- temp--;
- do
- *lto++ = *lfrom++;
- while (temp--);
+
+ __asm__ __volatile__("movel %2,%3\n\t"
+ "andw #7,%3\n\t"
+ "lsrl #3,%2\n\t"
+ "negw %3\n\t"
+ "jmp %%pc@(1f,%3:w:2)\n\t"
+ "4:\t"
+ "movel %0@+,%1@+\n\t"
+ "movel %0@+,%1@+\n\t"
+ "movel %0@+,%1@+\n\t"
+ "movel %0@+,%1@+\n\t"
+ "movel %0@+,%1@+\n\t"
+ "movel %0@+,%1@+\n\t"
+ "movel %0@+,%1@+\n\t"
+ "movel %0@+,%1@+\n\t"
+ "1:\t"
+ "dbra %2,4b\n\t"
+ "clrw %2\n\t"
+ "subql #1,%2\n\t"
+ "jpl 4b\n\t"
+ : "=a" (lfrom), "=a" (lto), "=d" (temp),
+ "=&d" (temp1)
+ : "0" (lfrom), "1" (lto), "2" (temp)
+ );
to = lto;
from = lfrom;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov