diff options
Diffstat (limited to 'newlib/libc/machine/xscale/strchr.c')
-rw-r--r-- | newlib/libc/machine/xscale/strchr.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/newlib/libc/machine/xscale/strchr.c b/newlib/libc/machine/xscale/strchr.c index 3b736c53c..6ea5032b0 100644 --- a/newlib/libc/machine/xscale/strchr.c +++ b/newlib/libc/machine/xscale/strchr.c @@ -38,29 +38,29 @@ strchr (const char *s, int c) R6 = 0xfefefeff [ == ~(0x80808080 << 1) ] R5 = 0x80808080 */ - asm (PRELOADSTR ("%0") "\n\ - mov r5, #0x80\n\ - add r5, r5, #0x8000\n\ - add r5, r5, r5, lsl #16\n\ - mvn r6, r5, lsl #1\n\ -\n\ - sub %0, %0, #4\n\ -0:\n\ - ldr r1, [%0, #4]!\n\ -" PRELOADSTR ("%0") "\n\ - add r3, r1, r6\n\ - bic r3, r3, r1\n\ - ands r2, r3, r5\n\ - bne 1f\n\ - eor r2, r1, %1\n\ - add r3, r2, r6\n\ - bic r3, r3, r2\n\ - ands r1, r3, r5\n\ - beq 0b\n\ + asm (PRELOADSTR ("%0") " + mov r5, #0x80 + add r5, r5, #0x8000 + add r5, r5, r5, lsl #16 + mvn r6, r5, lsl #1 + + sub %0, %0, #4 +0: + ldr r1, [%0, #4]! +" PRELOADSTR ("%0") " + add r3, r1, r6 + bic r3, r3, r1 + ands r2, r3, r5 + bne 1f + eor r2, r1, %1 + add r3, r2, r6 + bic r3, r3, r2 + ands r1, r3, r5 + beq 0b 1:" : "=&r" (s) : "r" (c2), "0" (s) - : "r1", "r2", "r3", "r5", "r6", "cc"); + : "r2", "r3", "r5", "r6", "cc"); #endif while (*s && *s != c) |