diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-05-07 10:14:55 +0000 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-05-07 10:14:55 +0000 |
commit | 904141e5e30e923f7f7ccaa65894a1fbb51dfc65 (patch) | |
tree | a841ac56a4a8b8d39fb589d777501626ca2279a3 /xen/arch/x86/string.c | |
parent | 186141a492e85b49c4a21cd2afbf5a459417258b (diff) | |
download | xen-904141e5e30e923f7f7ccaa65894a1fbb51dfc65.tar.gz xen-904141e5e30e923f7f7ccaa65894a1fbb51dfc65.tar.bz2 xen-904141e5e30e923f7f7ccaa65894a1fbb51dfc65.zip |
bitkeeper revision 1.1389.5.30 (427c951f6ULpkuxG36TskUioGnRY9w)
x86_64 gcc sometimes doesn't have builtin memmove. Always use the
version we provide.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/string.c')
-rw-r--r-- | xen/arch/x86/string.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/xen/arch/x86/string.c b/xen/arch/x86/string.c index b45a9197d5..745670b926 100644 --- a/xen/arch/x86/string.c +++ b/xen/arch/x86/string.c @@ -8,25 +8,6 @@ #include <xen/config.h> #include <xen/lib.h> -#undef memmove -void *memmove(void *dest, const void *src, size_t n) -{ - int d0, d1, d2; - - if ( dest < src ) - return memcpy(dest, src, n); - - __asm__ __volatile__ ( - " std ; " - " rep ; movsb ; " - " cld " - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n-1+(const char *)src), "2" (n-1+(char *)dest) - : "memory"); - - return dest; -} - #undef memcpy void *memcpy(void *dest, const void *src, size_t n) { @@ -61,3 +42,22 @@ void *memset(void *s, int c, size_t n) return s; } + +#undef memmove +void *memmove(void *dest, const void *src, size_t n) +{ + int d0, d1, d2; + + if ( dest < src ) + return memcpy(dest, src, n); + + __asm__ __volatile__ ( + " std ; " + " rep ; movsb ; " + " cld " + : "=&c" (d0), "=&S" (d1), "=&D" (d2) + : "0" (n), "1" (n-1+(const char *)src), "2" (n-1+(char *)dest) + : "memory"); + + return dest; +} |