diff options
Diffstat (limited to 'newlib/libc/machine/arm/memchr.S')
-rw-r--r-- | newlib/libc/machine/arm/memchr.S | 51 |
1 files changed, 35 insertions, 16 deletions
diff --git a/newlib/libc/machine/arm/memchr.S b/newlib/libc/machine/arm/memchr.S index a17dfa314..8103c8aa5 100644 --- a/newlib/libc/machine/arm/memchr.S +++ b/newlib/libc/machine/arm/memchr.S @@ -35,6 +35,32 @@ an optimised path for large data sets; the worst case is finding the match early in a large data set. */ +/* Copyright (c) 2015 ARM Ltd. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Linaro nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + @ 2011-02-07 david.gilbert@linaro.org @ Extracted from local git a5b438d861 @ 2011-07-14 david.gilbert@linaro.org @@ -48,12 +74,18 @@ @ This code requires armv6t2 or later. Uses Thumb2. .syntax unified - .arch armv6t2 +#include "acle-compat.h" #include "arm_asm.h" @ NOTE: This ifdef MUST match the one in memchr-stub.c -#if defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__) +#if __ARM_ARCH_ISA_THUMB >= 2 && defined (__ARM_FEATURE_DSP) + +#if __ARM_ARCH_PROFILE == 'M' + .arch armv7e-m +#else + .arch armv6t2 +#endif @ this lets us check a flag in a 00/ff byte easily in either endianness #ifdef __ARMEB__ @@ -165,18 +197,5 @@ memchr: subs r0,r0,#1 bx lr #else - /* For an older CPU we just fall back to the .c code. */ - - /* Leave this field blank. So the memchr() is not defined, and this will - automatically pull in the default C definition of memchr() from - ../../string/memchr.c. No need to include this file explicitely. - The lib_a-memchr.o will not be generated, so it won't replace the - default lib_a-memchr.o which is generated by ../../string/memchr.c. - See the commands in configure.in and Makefile.am for more details. - - However, if we need to rewrite this function to be more efficient, we - can add the corresponding assembly code into this field and change the - commands in configure.in and Makefile.am to allow the corresponding - lib_a-memchr.o to be generated. - */ + /* Defined in memchr-stub.c. */ #endif |