diff options
author | Michael Brown | 2005-05-09 14:48:00 +0200 |
---|---|---|
committer | Michael Brown | 2005-05-09 14:48:00 +0200 |
commit | dc0aa58fb28642160116671060614a3a6c29970c (patch) | |
tree | 6f0f202d2a74ffae4320abf2c81fa2475bb9b963 /src/arch/i386/include | |
parent | Start of an implementation using doubly-linked lists and virtual (diff) | |
download | ipxe-dc0aa58fb28642160116671060614a3a6c29970c.tar.gz ipxe-dc0aa58fb28642160116671060614a3a6c29970c.tar.xz ipxe-dc0aa58fb28642160116671060614a3a6c29970c.zip |
Add memcpy
Diffstat (limited to 'src/arch/i386/include')
-rw-r--r-- | src/arch/i386/include/bits/string.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/arch/i386/include/bits/string.h b/src/arch/i386/include/bits/string.h index 3743d011..6037d131 100644 --- a/src/arch/i386/include/bits/string.h +++ b/src/arch/i386/include/bits/string.h @@ -18,6 +18,19 @@ * consider these trivial functions to be PD. */ +#define __HAVE_ARCH_MEMCPY +static inline void * memcpy(void *dest, const void *src, size_t n) +{ +int d0, d1, d2; +__asm__ __volatile__ ( + "cld\n\t" + "rep\n\t" + "movsb" + : "=&c" (d0), "=&S" (d1), "=&D" (d2) + :"0" (n), "1" (src), "2" (dest) + : "memory"); +return dest; +} #define __HAVE_ARCH_MEMMOVE static inline void * memmove(void * dest,const void * src, size_t n) |