Fix issues with x86 memcpy
[coreboot.git] / src / arch / x86 / lib / memcpy.c
index de210928a38c85e6edc476cd25a7e52e483dc202..f8607cfc50542acb785e9f2d526607548ba905cf 100644 (file)
@@ -1,13 +1,15 @@
 #include <string.h>
 
-void *memcpy(void *__restrict __dest,
-            __const void *__restrict __src, size_t __n)
+void *memcpy(void *dest, const void *src, size_t n)
 {
-       asm("cld\n"
-           "rep\n"
-           "movsb"
-           :   /* no input (?) */
-           :"S"(__src), "D"(__dest), "c"(__n)
-       );
-       return __dest;
+       unsigned long d0, d1, d2;
+
+       asm volatile(
+               "rep movsb"
+               : "=S"(d0), "=D"(d1), "=c"(d2)
+               : "0"(src), "1"(dest), "2"(n)
+               : "memory"
+               );
+
+       return dest;
 }