1/* Normally compiler builtins are used, but sometimes the compiler calls out 2 of line code. Based on asm-i386/string.h. 3 */ 4#define _STRING_C 5#include <linux/string.h> 6#include <linux/module.h> 7 8#undef memmove 9void *memmove(void *dest, const void *src, size_t count) 10{ 11 if (dest < src) { 12 return memcpy(dest, src, count); 13 } else { 14 char *p = dest + count; 15 const char *s = src + count; 16 while (count--) 17 *--p = *--s; 18 } 19 return dest; 20} 21EXPORT_SYMBOL(memmove); 22