]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #include <linux/config.h> |
2 | #include <linux/string.h> | |
3 | #include <linux/module.h> | |
4 | ||
5 | #undef memcpy | |
6 | #undef memset | |
7 | ||
8 | void *memcpy(void *to, const void *from, size_t n) | |
9 | { | |
10 | #ifdef CONFIG_X86_USE_3DNOW | |
11 | return __memcpy3d(to, from, n); | |
12 | #else | |
13 | return __memcpy(to, from, n); | |
14 | #endif | |
15 | } | |
16 | EXPORT_SYMBOL(memcpy); | |
17 | ||
18 | void *memset(void *s, int c, size_t count) | |
19 | { | |
20 | return __memset(s, c, count); | |
21 | } | |
22 | EXPORT_SYMBOL(memset); | |
23 | ||
24 | void *memmove(void *dest, const void *src, size_t n) | |
25 | { | |
26 | int d0, d1, d2; | |
27 | ||
28 | if (dest < src) { | |
29 | memcpy(dest,src,n); | |
30 | } else { | |
31 | __asm__ __volatile__( | |
32 | "std\n\t" | |
33 | "rep\n\t" | |
34 | "movsb\n\t" | |
35 | "cld" | |
36 | : "=&c" (d0), "=&S" (d1), "=&D" (d2) | |
37 | :"0" (n), | |
38 | "1" (n-1+(const char *)src), | |
39 | "2" (n-1+(char *)dest) | |
40 | :"memory"); | |
41 | } | |
42 | return dest; | |
43 | } | |
44 | EXPORT_SYMBOL(memmove); |