diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2016-05-11 17:18:48 -0400 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2016-05-11 17:18:48 -0400 |
commit | 5c02bcc086a96b174e1b9e1445a4a1770070107a (patch) | |
tree | 956bbdab66b9fe112005f5050632d45ceedebfa1 /newlib/libc/machine/arm | |
parent | d1d1378d139a8768ea1eb8ba3be73ac6d4e4d4dc (diff) | |
download | cygnal-5c02bcc086a96b174e1b9e1445a4a1770070107a.tar.gz cygnal-5c02bcc086a96b174e1b9e1445a4a1770070107a.tar.bz2 cygnal-5c02bcc086a96b174e1b9e1445a4a1770070107a.zip |
Fix strlen using Thumb-2 with -Os -marm
2016-04-18 Thomas Preud'homme <thomas.preudhomme@arm.com>
* libc/machine/arm/strlen-stub.c: Check capabilities of architecture
to decide which Thumb implementation to use and fall back to C
implementation for architecture not supporting Thumb mode.
* libc/machine/arm/strlen.S: Likewise.
Diffstat (limited to 'newlib/libc/machine/arm')
-rw-r--r-- | newlib/libc/machine/arm/strlen-stub.c | 7 | ||||
-rw-r--r-- | newlib/libc/machine/arm/strlen.S | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/newlib/libc/machine/arm/strlen-stub.c b/newlib/libc/machine/arm/strlen-stub.c index bcd3d2d46..ea45a3789 100644 --- a/newlib/libc/machine/arm/strlen-stub.c +++ b/newlib/libc/machine/arm/strlen-stub.c @@ -32,12 +32,15 @@ #include <limits.h> #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED -#if defined __thumb__ && !defined __thumb2__ +#if __ARM_ARCH_ISA_THUMB == 2 /* Implemented in strlen.S. */ -#else +#elif defined (__ARM_ARCH_ISA_THUMB) /* Implemented in strlen.S. */ +#else +#include "../../string/strlen.c" + #endif #else /* defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED */ diff --git a/newlib/libc/machine/arm/strlen.S b/newlib/libc/machine/arm/strlen.S index 57371453a..0435fb2de 100644 --- a/newlib/libc/machine/arm/strlen.S +++ b/newlib/libc/machine/arm/strlen.S @@ -27,11 +27,14 @@ #include "acle-compat.h" #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED -#if defined __thumb__ && !defined __thumb2__ +#if __ARM_ARCH_ISA_THUMB == 2 +#include "strlen-thumb2-Os.S" + +#elif defined (__ARM_ARCH_ISA_THUMB) #include "strlen-thumb1-Os.S" #else -#include "strlen-thumb2-Os.S" + /* Implemented in strlen-stub.c. */ #endif |