summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/include
diff options
context:
space:
mode:
authorMichael Brown2005-05-09 14:48:00 +0200
committerMichael Brown2005-05-09 14:48:00 +0200
commitdc0aa58fb28642160116671060614a3a6c29970c (patch)
tree6f0f202d2a74ffae4320abf2c81fa2475bb9b963 /src/arch/i386/include
parentStart of an implementation using doubly-linked lists and virtual (diff)
downloadipxe-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.h13
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)