vserver 1.9.3
[linux-2.6.git] / arch / x86_64 / lib / memmove.c
index 12cac5b..e93d525 100644 (file)
@@ -10,18 +10,10 @@ void *memmove(void * dest,const void *src,size_t count)
        if (dest < src) { 
                __inline_memcpy(dest,src,count);
        } else {
-               /* Could be more clever and move longs */
-               unsigned long d0, d1, d2;
-               __asm__ __volatile__(
-                       "std\n\t"
-                       "rep\n\t"
-                       "movsb\n\t"
-                       "cld"
-                       : "=&c" (d0), "=&S" (d1), "=&D" (d2)
-                       :"0" (count),
-                       "1" (count-1+(const char *)src),
-                       "2" (count-1+(char *)dest)
-                       :"memory");
+               char *p = (char *) dest + count;
+               char *s = (char *) src + count;
+               while (count--)
+                       *--p = *--s;
        }
        return dest;
 }