memmove.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
- /* Normally compiler builtins are used, but sometimes the compiler calls out
- of line code. Based on asm-i386/string.h.
- */
- #define _STRING_C
- #include <linux/string.h>
- #undef memmove
- 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__(
- "stdnt"
- "repnt"
- "movsbnt"
- "cld"
- : "=&c" (d0), "=&S" (d1), "=&D" (d2)
- :"0" (count),
- "1" (count-1+(const char *)src),
- "2" (count-1+(char *)dest)
- :"memory");
- }
- return dest;
- }