3 #include "../../string/memmove.c"
11 do_memcpy (void *dst0
, const void *src0
, size_t len
)
15 #ifndef __OPTIMIZE_SIZE__
41 ldmia %1!, { r3, r4, r5, lr }\n\
48 stmia %0!, { r3, r4, r5, lr }\n\
54 ldmia %1!, { r3, r4 }\n\
61 stmia %0!, { r3, r4 }\n\
77 #endif /* !__OPTIMIZE_SIZE__ */
96 : "=&r" (dummy
), "=&r" (src0
), "=&r" (len
)
97 : "0" (dst0
), "1" (src0
), "2" (len
)
98 : "memory", "lr", "r3", "r4", "r5", "cc");
103 memmove (void *dst
, const void *src
, size_t len
)
108 if (s
< d
&& d
< s
+ len
)
110 /* Destructive overlap...have to copy backwards. */
120 return do_memcpy (dst
, src
, len
);