summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine/arm/strlen-stub.c
diff options
context:
space:
mode:
authorMarcus Shawcroft <marcus.shawcroft@arm.com>2015-11-13 14:26:22 +0000
committerMarcus Shawcroft <marcus.shawcroft@arm.com>2015-11-23 15:21:47 +0000
commitdc38827570d90b048eae55f0a2f21b5c5ca0d79b (patch)
treebba7c2ba01719872300f2a1c332b0a696367bbe9 /newlib/libc/machine/arm/strlen-stub.c
parentc70d8f454a3639602296f57e247013e4c82a4857 (diff)
downloadcygnal-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.c14
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 */