blob: 386bc8e3ef3e03d0a721e8b98fb06caffdb6c04f [file] [log] [blame]
/*
* memcpy.c
*/
#include <string.h>
void *memcpy(void *dst, const void *src, size_t n)
{
const char *p = src;
char *q = dst;
#if defined(__i386__)
asm volatile("cld ; movl %0,%%edx ; shrl $2,%0 ; rep ; movsl ; "
"movl %%edx,%0 ; andl $3,%0 ; rep ; movsb"
: "+c" (n), "+S" (p), "+D" (q) :: "edx");
#else
while ( n-- ) {
*q++ = *p++;
}
#endif
return dst;
}