6
strcpy (char *dest, const char *src)
10
asm (PRELOADSTR ("%0") : : "r" (src));
12
#ifndef __OPTIMIZE_SIZE__
13
if (((long)src & 3) == ((long)dest & 3))
15
/* Skip unaligned part. */
18
if (! (*dest++ = *src++))
22
/* Load two constants:
23
R4 = 0xfefefeff [ == ~(0x80808080 << 1) ]
26
asm ("mov r5, #0x80\n\
28
add r5, r5, #0x8000\n\
29
add r5, r5, r5, lsl #16\n\
39
" PRELOADSTR("%1") "\n\
46
: "=&r" (dest), "=&r" (src)
47
: "0" (dest), "1" (src)
48
: "r1", "r2", "r3", "r4", "r5", "memory", "cc");
52
while (*dest++ = *src++)
53
asm (PRELOADSTR ("%0") : : "r" (src));