diff options
author | Marcus Shawcroft <marcus.shawcroft@arm.com> | 2015-11-13 14:26:22 +0000 |
---|---|---|
committer | Marcus Shawcroft <marcus.shawcroft@arm.com> | 2015-11-23 15:21:47 +0000 |
commit | dc38827570d90b048eae55f0a2f21b5c5ca0d79b (patch) | |
tree | bba7c2ba01719872300f2a1c332b0a696367bbe9 /newlib/libc/machine/arm/strlen-stub.c | |
parent | c70d8f454a3639602296f57e247013e4c82a4857 (diff) | |
download | cygnal-dc38827570d90b048eae55f0a2f21b5c5ca0d79b.tar.gz cygnal-dc38827570d90b048eae55f0a2f21b5c5ca0d79b.tar.bz2 cygnal-dc38827570d90b048eae55f0a2f21b5c5ca0d79b.zip |
[ARM] Factor out the thumb2 -Os implementation.
The patch moves the inline ASM thumb2 -Os implementation out into its
own .S file.
Tested by building newlib and comparing libc.a binaries before and
after for all permutations of:
Architectures:
armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6k
armv6z armv6kz armv6t2 armv6-m armv6s-m armv7 armv7-a
armv7ve armv7-r armv7-m armv7e-m armv8-a iwmmxt iwmmxt2
ISAs:
thumb arm
Optimization Levels:
Os O2
Excluding:
armv6s-m -mthumb
armv6-m -mthumb
armv6zk -mthumb
armv6z -mthumb
armv6k -mthumb
armv6j -mthumb
Diffstat (limited to 'newlib/libc/machine/arm/strlen-stub.c')
-rw-r--r-- | newlib/libc/machine/arm/strlen-stub.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/newlib/libc/machine/arm/strlen-stub.c b/newlib/libc/machine/arm/strlen-stub.c index d77c7fc5b..97500e0e8 100644 --- a/newlib/libc/machine/arm/strlen-stub.c +++ b/newlib/libc/machine/arm/strlen-stub.c @@ -36,18 +36,8 @@ /* Implemented in strlen.S. */ #else -size_t -strlen (const char* str) -{ - int scratch; - const char* end; - asm ("1:\n\t" - "ldrb %1, [%0], #1\n\t" - "cmp %1, #0\n\t" - "bne 1b" - : "=&r" (end), "=&r" (scratch) : "0" (str) : "memory", "cc"); - return end - str - 1; -} +/* Implemented in strlen.S. */ + #endif #else /* defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED */ |