5
memchr (const void *start, int c, size_t len)
7
const char *str = start;
12
asm (PRELOADSTR ("%0") : : "r" (start));
16
#ifndef __OPTIMIZE_SIZE__
17
/* Skip unaligned part. */
26
while (((long)str & 3) != 0 && --len > 0);
31
unsigned int c2 = c + (c << 8);
34
/* Load two constants:
35
R7 = 0xfefefeff [ == ~(0x80808080 << 1) ]
40
add r6, r6, #0x8000\n\
41
add r6, r6, r6, lsl #16\n\
48
ldmia %0!, { r3, r9 }\n\
49
" PRELOADSTR ("%0") "\n\
69
" PRELOADSTR ("%0") "\n\
81
: "=&r" (str), "=&r" (len)
82
: "r" (c2), "0" (str), "1" (len)
83
: "r1", "r2", "r3", "r6", "r7", "r8", "r9", "cc");