]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/lib/minilibc/ia32/include/memcpy.h
Inital import
[l4.git] / kernel / fiasco / src / lib / minilibc / ia32 / include / memcpy.h
1 #ifndef MLC_MEMCPY_H__
2 #define MLC_MEMCPY_H__
3
4 #include <cdefs.h>
5 #include <stddef.h>
6
7 __BEGIN_DECLS
8
9 extern inline void *memcpy(void *dest, const void *src, size_t n)
10 {
11   unsigned dummy1, dummy2, dummy3;
12
13   asm volatile ("cld                                    \n\t"
14                 "repz movsb %%ds:(%%esi), %%es:(%%edi)  \n\t"
15                 : "=c" (dummy1), "=S" (dummy2), "=D" (dummy3)
16                 : "c" (n), "S" (src), "D" (dest)
17                 : "memory");
18   return dest;
19 }
20
21 __END_DECLS
22
23 #endif // MLC_MEMCPY_H__
24