2014-09-05 Hale Wang <hale.wang@arm.com>

* libc/machine/arm/memchr.S: Clean up the wrapper.
        * libc/machine/arm/memcpy.S: Likewise.
        * libc/machine/arm/memchr-stub.c: Delete this redundant file.
        * libc/machine/arm/memcpy-stub.c: Likewise.
        * libc/machine/arm/strcmp.S: Add speed-preferred wrapper.
        * libc/machine/arm/strlen.S: Likewise.
        * libc/machine/arm/Makefile.am: Add dependencies.
        * libc/machine/arm/Makefile.in: Regenerated.
        * libc/machine/arm/configure.in: Add dependencies.
        * libc/machine/arm/configure: Regenerated.
This commit is contained in:
Jeff Johnston 2014-09-05 17:26:42 +00:00
parent bea3ef947a
commit c8a01afd97
11 changed files with 563 additions and 122 deletions

View file

@ -1,3 +1,16 @@
2014-09-05 Hale Wang <hale.wang@arm.com>
* libc/machine/arm/memchr.S: Clean up the wrapper.
* libc/machine/arm/memcpy.S: Likewise.
* libc/machine/arm/memchr-stub.c: Delete this redundant file.
* libc/machine/arm/memcpy-stub.c: Likewise.
* libc/machine/arm/strcmp.S: Add speed-preferred wrapper.
* libc/machine/arm/strlen.S: Likewise.
* libc/machine/arm/Makefile.am: Add dependencies.
* libc/machine/arm/Makefile.in: Regenerated.
* libc/machine/arm/configure.in: Add dependencies.
* libc/machine/arm/configure: Regenerated.
2014-09-05 Bin Cheng <bin.cheng@arm.com>
* libc/stdio/findfp.c (_cleanup_r): Call _fflush_r when configuration

View file

@ -8,12 +8,59 @@ AM_CCASFLAGS = $(INCLUDES)
noinst_LIBRARIES = lib.a
lib_a_SOURCES = setjmp.S access.c strlen.c strcmp.S strcpy.c \
memcpy.S memcpy-stub.c memchr-stub.c memchr.S \
strlen.c strlen-armv7.S aeabi_memcpy.c \
aeabi_memcpy-armv7a.S
if HAVE_THUMB1
if OPT_SIZE
STRCMP_SRC=strcmp.S
STRCMP_OBJ=$(lpfx)strcmp.o
STRLEN_SRC=strlen.c
STRLEN_OBJ=$(lpfx)strlen.o
else
STRCMP_SRC=
STRCMP_OBJ=
STRLEN_SRC=
STRLEN_OBJ=
endif
else
STRCMP_SRC=strcmp.S
STRCMP_OBJ=$(lpfx)strcmp.o
STRLEN_SRC=strlen.c
STRLEN_OBJ=$(lpfx)strlen.o
endif
if HAVE_ARMV7
MEMCHR_SRC=memchr.S
MEMCHR_OBJ=$(lpfx)memchr.o
else
MEMCHR_SRC=
MEMCHR_OBJ=
endif
if OPT_SIZE
MEMCPY_SRC=
MEMCPY_OBJ=
else
if HAVE_ARMV7A
MEMCPY_SRC=memcpy.S
MEMCPY_OBJ=$(lpfx)memcpy.o
else
if HAVE_ARMV7M
MEMCPY_SRC=memcpy.S
MEMCPY_OBJ=$(lpfx)memcpy.o
else
MEMCPY_SRC=
MEMCPY_OBJ=
endif !HAVE_ARMV7M
endif !HAVE_ARMV7A
endif !OPT_SIZE
lib_a_SOURCES = setjmp.S access.c $(STRCMP_SRC) strcpy.c \
$(MEMCPY_SRC) $(MEMCHR_SRC) $(STRLEN_SRC) \
strlen-armv7.S aebi_memcpy.c aeabi_memcpy-armv7a.S
lib_a_CCASFLAGS=$(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS)
lib_a_LIBADD = $(STRCMP_OBJ) $(STRLEN_OBJ) $(MEMCHR_OBJ) $(MEMCPY_OBJ)
lib_a_DEPENDENCIES = $(STRCMP_OBJ) $(STRLEN_OBJ) $(MEMCHR_OBJ) $(MEMCPY_OBJ)
ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host

View file

@ -68,13 +68,28 @@ CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
ARFLAGS = cru
lib_a_AR = $(AR) $(ARFLAGS)
lib_a_LIBADD =
@HAVE_THUMB1_FALSE@am__DEPENDENCIES_1 = $(lpfx)strcmp.o
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@am__DEPENDENCIES_1 = $(lpfx)strcmp.o
@HAVE_THUMB1_FALSE@am__DEPENDENCIES_2 = $(lpfx)strlen.o
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@am__DEPENDENCIES_2 = $(lpfx)strlen.o
@HAVE_ARMV7_TRUE@am__DEPENDENCIES_3 = $(lpfx)memchr.o
@HAVE_ARMV7A_FALSE@@HAVE_ARMV7M_TRUE@@OPT_SIZE_FALSE@am__DEPENDENCIES_4 = $(lpfx)memcpy.o
@HAVE_ARMV7A_TRUE@@OPT_SIZE_FALSE@am__DEPENDENCIES_4 = \
@HAVE_ARMV7A_TRUE@@OPT_SIZE_FALSE@ $(lpfx)memcpy.o
@HAVE_THUMB1_FALSE@am__objects_1 = lib_a-strcmp.$(OBJEXT)
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@am__objects_1 = \
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@ lib_a-strcmp.$(OBJEXT)
@HAVE_ARMV7A_FALSE@@HAVE_ARMV7M_TRUE@@OPT_SIZE_FALSE@am__objects_2 = lib_a-memcpy.$(OBJEXT)
@HAVE_ARMV7A_TRUE@@OPT_SIZE_FALSE@am__objects_2 = \
@HAVE_ARMV7A_TRUE@@OPT_SIZE_FALSE@ lib_a-memcpy.$(OBJEXT)
@HAVE_ARMV7_TRUE@am__objects_3 = lib_a-memchr.$(OBJEXT)
@HAVE_THUMB1_FALSE@am__objects_4 = lib_a-strlen.$(OBJEXT)
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@am__objects_4 = \
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@ lib_a-strlen.$(OBJEXT)
am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-access.$(OBJEXT) \
lib_a-strlen.$(OBJEXT) lib_a-strcmp.$(OBJEXT) \
lib_a-strcpy.$(OBJEXT) lib_a-memcpy.$(OBJEXT) \
lib_a-memcpy-stub.$(OBJEXT) lib_a-memchr-stub.$(OBJEXT) \
lib_a-memchr.$(OBJEXT) lib_a-strlen.$(OBJEXT) \
lib_a-strlen-armv7.$(OBJEXT) lib_a-aeabi_memcpy.$(OBJEXT) \
$(am__objects_1) lib_a-strcpy.$(OBJEXT) $(am__objects_2) \
$(am__objects_3) $(am__objects_4) lib_a-strlen-armv7.$(OBJEXT) \
lib_a-aebi_memcpy.$(OBJEXT) \
lib_a-aeabi_memcpy-armv7a.$(OBJEXT)
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@
@ -106,6 +121,7 @@ CC = @CC@
CCAS = @CCAS@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@ -132,7 +148,6 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
@ -201,13 +216,38 @@ AUTOMAKE_OPTIONS = cygnus
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
AM_CCASFLAGS = $(INCLUDES)
noinst_LIBRARIES = lib.a
lib_a_SOURCES = setjmp.S access.c strlen.c strcmp.S strcpy.c \
memcpy.S memcpy-stub.c memchr-stub.c memchr.S \
strlen.c strlen-armv7.S aeabi_memcpy.c \
aeabi_memcpy-armv7a.S
@HAVE_THUMB1_FALSE@STRCMP_SRC = strcmp.S
@HAVE_THUMB1_TRUE@@OPT_SIZE_FALSE@STRCMP_SRC =
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@STRCMP_SRC = strcmp.S
@HAVE_THUMB1_FALSE@STRCMP_OBJ = $(lpfx)strcmp.o
@HAVE_THUMB1_TRUE@@OPT_SIZE_FALSE@STRCMP_OBJ =
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@STRCMP_OBJ = $(lpfx)strcmp.o
@HAVE_THUMB1_FALSE@STRLEN_SRC = strlen.c
@HAVE_THUMB1_TRUE@@OPT_SIZE_FALSE@STRLEN_SRC =
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@STRLEN_SRC = strlen.c
@HAVE_THUMB1_FALSE@STRLEN_OBJ = $(lpfx)strlen.o
@HAVE_THUMB1_TRUE@@OPT_SIZE_FALSE@STRLEN_OBJ =
@HAVE_THUMB1_TRUE@@OPT_SIZE_TRUE@STRLEN_OBJ = $(lpfx)strlen.o
@HAVE_ARMV7_FALSE@MEMCHR_SRC =
@HAVE_ARMV7_TRUE@MEMCHR_SRC = memchr.S
@HAVE_ARMV7_FALSE@MEMCHR_OBJ =
@HAVE_ARMV7_TRUE@MEMCHR_OBJ = $(lpfx)memchr.o
@HAVE_ARMV7A_FALSE@@HAVE_ARMV7M_FALSE@@OPT_SIZE_FALSE@MEMCPY_SRC =
@HAVE_ARMV7A_FALSE@@HAVE_ARMV7M_TRUE@@OPT_SIZE_FALSE@MEMCPY_SRC = memcpy.S
@HAVE_ARMV7A_TRUE@@OPT_SIZE_FALSE@MEMCPY_SRC = memcpy.S
@OPT_SIZE_TRUE@MEMCPY_SRC =
@HAVE_ARMV7A_FALSE@@HAVE_ARMV7M_FALSE@@OPT_SIZE_FALSE@MEMCPY_OBJ =
@HAVE_ARMV7A_FALSE@@HAVE_ARMV7M_TRUE@@OPT_SIZE_FALSE@MEMCPY_OBJ = $(lpfx)memcpy.o
@HAVE_ARMV7A_TRUE@@OPT_SIZE_FALSE@MEMCPY_OBJ = $(lpfx)memcpy.o
@OPT_SIZE_TRUE@MEMCPY_OBJ =
lib_a_SOURCES = setjmp.S access.c $(STRCMP_SRC) strcpy.c \
$(MEMCPY_SRC) $(MEMCHR_SRC) $(STRLEN_SRC) \
strlen-armv7.S aebi_memcpy.c aeabi_memcpy-armv7a.S
lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS)
lib_a_LIBADD = $(STRCMP_OBJ) $(STRLEN_OBJ) $(MEMCHR_OBJ) $(MEMCPY_OBJ)
lib_a_DEPENDENCIES = $(STRCMP_OBJ) $(STRLEN_OBJ) $(MEMCHR_OBJ) $(MEMCPY_OBJ)
ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
MEMCPY_DEP = memcpy-armv7a.S memcpy-armv7m.S
@ -320,35 +360,23 @@ lib_a-access.o: access.c
lib_a-access.obj: access.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
lib_a-strlen.o: strlen.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strlen.o `test -f 'strlen.c' || echo '$(srcdir)/'`strlen.c
lib_a-strlen.obj: strlen.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strlen.obj `if test -f 'strlen.c'; then $(CYGPATH_W) 'strlen.c'; else $(CYGPATH_W) '$(srcdir)/strlen.c'; fi`
lib_a-strcpy.o: strcpy.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strcpy.o `test -f 'strcpy.c' || echo '$(srcdir)/'`strcpy.c
lib_a-strcpy.obj: strcpy.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strcpy.obj `if test -f 'strcpy.c'; then $(CYGPATH_W) 'strcpy.c'; else $(CYGPATH_W) '$(srcdir)/strcpy.c'; fi`
lib_a-memcpy-stub.o: memcpy-stub.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memcpy-stub.o `test -f 'memcpy-stub.c' || echo '$(srcdir)/'`memcpy-stub.c
lib_a-strlen.o: strlen.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strlen.o `test -f 'strlen.c' || echo '$(srcdir)/'`strlen.c
lib_a-memcpy-stub.obj: memcpy-stub.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memcpy-stub.obj `if test -f 'memcpy-stub.c'; then $(CYGPATH_W) 'memcpy-stub.c'; else $(CYGPATH_W) '$(srcdir)/memcpy-stub.c'; fi`
lib_a-strlen.obj: strlen.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strlen.obj `if test -f 'strlen.c'; then $(CYGPATH_W) 'strlen.c'; else $(CYGPATH_W) '$(srcdir)/strlen.c'; fi`
lib_a-memchr-stub.o: memchr-stub.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memchr-stub.o `test -f 'memchr-stub.c' || echo '$(srcdir)/'`memchr-stub.c
lib_a-aebi_memcpy.o: aebi_memcpy.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-aebi_memcpy.o `test -f 'aebi_memcpy.c' || echo '$(srcdir)/'`aebi_memcpy.c
lib_a-memchr-stub.obj: memchr-stub.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memchr-stub.obj `if test -f 'memchr-stub.c'; then $(CYGPATH_W) 'memchr-stub.c'; else $(CYGPATH_W) '$(srcdir)/memchr-stub.c'; fi`
lib_a-aeabi_memcpy.o: aeabi_memcpy.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-aeabi_memcpy.o `test -f 'aeabi_memcpy.c' || echo '$(srcdir)/'`aeabi_memcpy.c
lib_a-aeabi_memcpy.obj: aeabi_memcpy.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-aeabi_memcpy.obj `if test -f 'aeabi_memcpy.c'; then $(CYGPATH_W) 'aeabi_memcpy.c'; else $(CYGPATH_W) '$(srcdir)/aeabi_memcpy.c'; fi`
lib_a-aebi_memcpy.obj: aebi_memcpy.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-aebi_memcpy.obj `if test -f 'aebi_memcpy.c'; then $(CYGPATH_W) 'aebi_memcpy.c'; else $(CYGPATH_W) '$(srcdir)/aebi_memcpy.c'; fi`
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \

View file

@ -564,6 +564,17 @@ PACKAGE_URL=''
ac_unique_file="Makefile.am"
ac_subst_vars='LTLIBOBJS
LIBOBJS
CFLAGS
HAVE_ARMV7M_FALSE
HAVE_ARMV7M_TRUE
HAVE_ARMV7A_FALSE
HAVE_ARMV7A_TRUE
HAVE_ARMV7_FALSE
HAVE_ARMV7_TRUE
OPT_SIZE_FALSE
OPT_SIZE_TRUE
HAVE_THUMB1_FALSE
HAVE_THUMB1_TRUE
sys_dir
machine_dir
libm_machine_dir
@ -3410,6 +3421,218 @@ OBJEXT=${oext}
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using thumb1" >&5
$as_echo_n "checking whether we are using thumb1... " >&6; }
if ${acnewlib_cv_thumb1_processor+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
#if defined (__thumb__) && !defined (__thumb2__)
#define _THUMB1
#else
#error "not thumb1"
#endif
int main () {
return 0;
}
EOF
if { ac_try='${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
acnewlib_cv_thumb1_processor=yes;
else
acnewlib_cv_thumb1_processor=no;
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_thumb1_processor" >&5
$as_echo "$acnewlib_cv_thumb1_processor" >&6; }
if test x"$acnewlib_cv_thumb1_processor" = x"yes"; then
HAVE_THUMB1_TRUE=
HAVE_THUMB1_FALSE='#'
else
HAVE_THUMB1_TRUE='#'
HAVE_THUMB1_FALSE=
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the size is preferred" >&5
$as_echo_n "checking whether the size is preferred... " >&6; }
if ${acnewlib_cv_opt_size+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
#define OPT_SIZE
#else
#error "not need for size optimization."
#endif
int main () {
return 0;
}
EOF
if { ac_try='${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
acnewlib_cv_opt_size=yes;
else
acnewlib_cv_opt_size=no;
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_opt_size" >&5
$as_echo "$acnewlib_cv_opt_size" >&6; }
if test x"$acnewlib_cv_opt_size" = x"yes"; then
OPT_SIZE_TRUE=
OPT_SIZE_FALSE='#'
else
OPT_SIZE_TRUE='#'
OPT_SIZE_FALSE=
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether armv7 processor is supported" >&5
$as_echo_n "checking whether armv7 processor is supported... " >&6; }
if ${acnewlib_cv_armv7_processor+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
#if defined (_ISA_ARM_7) || defined (__ARM_ARCH_6T2__)
#define HAVE_ARMV7
#else
#error "ARMV7 is not supported."
#endif
int main () {
return 0;
}
EOF
if { ac_try='${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
acnewlib_cv_armv7_processor=yes;
else
acnewlib_cv_armv7_processor=no;
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_armv7_processor" >&5
$as_echo "$acnewlib_cv_armv7_processor" >&6; }
if test x"$acnewlib_cv_armv7_processor" = x"yes"; then
HAVE_ARMV7_TRUE=
HAVE_ARMV7_FALSE='#'
else
HAVE_ARMV7_TRUE='#'
HAVE_ARMV7_FALSE=
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether armv7a processor is supported" >&5
$as_echo_n "checking whether armv7a processor is supported... " >&6; }
if ${acnewlib_cv_armv7a_processor+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
#if defined (__ARM_ARCH_7A__) && defined (__ARM_FEATURE_UNALIGNED)
#define HAVE_ARMV7A
#else
#error "ARMV7A is not supported."
#endif
int main () {
return 0;
}
EOF
if { ac_try='${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
acnewlib_cv_armv7a_processor=yes;
else
acnewlib_cv_armv7a_processor=no;
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_armv7a_processor" >&5
$as_echo "$acnewlib_cv_armv7a_processor" >&6; }
if test x"$acnewlib_cv_armv7a_processor" = x"yes"; then
HAVE_ARMV7A_TRUE=
HAVE_ARMV7A_FALSE='#'
else
HAVE_ARMV7A_TRUE='#'
HAVE_ARMV7A_FALSE=
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether armv7m processor is supported" >&5
$as_echo_n "checking whether armv7m processor is supported... " >&6; }
if ${acnewlib_cv_armv7m_processor+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
#if defined (__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__)
#define HAVE_ARMV7M
#else
#error "ARMV7M is not supported."
#endif
int main () {
return 0;
}
EOF
if { ac_try='${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
acnewlib_cv_armv7m_processor=yes;
else
acnewlib_cv_armv7m_processor=no;
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acnewlib_cv_armv7m_processor" >&5
$as_echo "$acnewlib_cv_armv7m_processor" >&6; }
if test x"$acnewlib_cv_armv7m_processor" = x"yes"; then
HAVE_ARMV7M_TRUE=
HAVE_ARMV7M_FALSE='#'
else
HAVE_ARMV7M_TRUE='#'
HAVE_ARMV7M_FALSE=
fi
ac_config_files="$ac_config_files Makefile"
cat >confcache <<\_ACEOF
@ -3598,6 +3821,26 @@ if test -z "${USE_LIBTOOL_TRUE}" && test -z "${USE_LIBTOOL_FALSE}"; then
as_fn_error $? "conditional \"USE_LIBTOOL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_THUMB1_TRUE}" && test -z "${HAVE_THUMB1_FALSE}"; then
as_fn_error $? "conditional \"HAVE_THUMB1\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${OPT_SIZE_TRUE}" && test -z "${OPT_SIZE_FALSE}"; then
as_fn_error $? "conditional \"OPT_SIZE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_ARMV7_TRUE}" && test -z "${HAVE_ARMV7_FALSE}"; then
as_fn_error $? "conditional \"HAVE_ARMV7\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_ARMV7A_TRUE}" && test -z "${HAVE_ARMV7A_FALSE}"; then
as_fn_error $? "conditional \"HAVE_ARMV7A\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_ARMV7M_TRUE}" && test -z "${HAVE_ARMV7M_FALSE}"; then
as_fn_error $? "conditional \"HAVE_ARMV7M\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0

View file

@ -10,5 +10,133 @@ AC_CONFIG_AUX_DIR(../../../..)
NEWLIB_CONFIGURE(../../..)
dnl Check for Thumb1 supported.
AC_CACHE_CHECK(whether we are using thumb1,
acnewlib_cv_thumb1_processor, [dnl
cat > conftest.c <<EOF
#if defined (__thumb__) && !defined (__thumb2__)
#define _THUMB1
#else
#error "not thumb1"
#endif
int main () {
return 0;
}
EOF
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&AS_MESSAGE_LOG_FD])
then
acnewlib_cv_thumb1_processor=yes;
else
acnewlib_cv_thumb1_processor=no;
fi
rm -f conftest*])
AM_CONDITIONAL(HAVE_THUMB1, test x"$acnewlib_cv_thumb1_processor" = x"yes")
dnl Check for whether the size is preferred.
AC_CACHE_CHECK(whether the size is preferred,
acnewlib_cv_opt_size, [dnl
cat > conftest.c <<EOF
#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
#define OPT_SIZE
#else
#error "not need for size optimization."
#endif
int main () {
return 0;
}
EOF
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&AS_MESSAGE_LOG_FD])
then
acnewlib_cv_opt_size=yes;
else
acnewlib_cv_opt_size=no;
fi
rm -f conftest*])
AM_CONDITIONAL(OPT_SIZE, test x"$acnewlib_cv_opt_size" = x"yes")
dnl Check for whether ARM_7 or ARM_ARCH_6T2 is defined.
dnl This macro is used to support memchr() for old CPU.
AC_CACHE_CHECK(whether armv7 processor is supported,
acnewlib_cv_armv7_processor, [dnl
cat > conftest.c <<EOF
#if defined (_ISA_ARM_7) || defined (__ARM_ARCH_6T2__)
#define HAVE_ARMV7
#else
#error "ARMV7 is not supported."
#endif
int main () {
return 0;
}
EOF
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&AS_MESSAGE_LOG_FD])
then
acnewlib_cv_armv7_processor=yes;
else
acnewlib_cv_armv7_processor=no;
fi
rm -f conftest*])
AM_CONDITIONAL(HAVE_ARMV7, test x"$acnewlib_cv_armv7_processor" = x"yes")
dnl Check for whether ARM_ARCH_7A is defined.
AC_CACHE_CHECK(whether armv7a processor is supported,
acnewlib_cv_armv7a_processor, [dnl
cat > conftest.c <<EOF
#if defined (__ARM_ARCH_7A__) && defined (__ARM_FEATURE_UNALIGNED)
#define HAVE_ARMV7A
#else
#error "ARMV7A is not supported."
#endif
int main () {
return 0;
}
EOF
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&AS_MESSAGE_LOG_FD])
then
acnewlib_cv_armv7a_processor=yes;
else
acnewlib_cv_armv7a_processor=no;
fi
rm -f conftest*])
AM_CONDITIONAL(HAVE_ARMV7A, test x"$acnewlib_cv_armv7a_processor" = x"yes")
dnl Check for whether ARM_ARCH_7M is defined.
AC_CACHE_CHECK(whether armv7m processor is supported,
acnewlib_cv_armv7m_processor, [dnl
cat > conftest.c <<EOF
#if defined (__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__)
#define HAVE_ARMV7M
#else
#error "ARMV7M is not supported."
#endif
int main () {
return 0;
}
EOF
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
1>&AS_MESSAGE_LOG_FD])
then
acnewlib_cv_armv7m_processor=yes;
else
acnewlib_cv_armv7m_processor=no;
fi
rm -f conftest*])
AM_CONDITIONAL(HAVE_ARMV7M, test x"$acnewlib_cv_armv7m_processor" = x"yes")
AC_SUBST(CFLAGS)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View file

@ -1,42 +0,0 @@
/* Copyright (c) 2010-2011, Linaro Limited
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 Linaro Limited 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.
*/
#include "arm_asm.h"
/* Note: This ifdef MUST match the one in memchr.S */
#if defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__)
/* Do nothing - the memchr.S will get used */
#else
/* For an older CPU we just fall back to the .c code */
#include "../../string/memchr.c"
#endif

View file

@ -164,5 +164,19 @@ memchr:
pop {r4,r5,r6,r7}
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.
*/
#endif

View file

@ -1,40 +0,0 @@
/*
* Copyright (c) 2013 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:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``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 ARM LTD 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.
*/
/* The sole purpose of this file is to include the plain memcpy provided
in newlib. An optimized version of memcpy is provided in the assembly
file memcpy.S in this directory. */
#if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
(!((defined (__ARM_ARCH_7A__) && defined (__ARM_FEATURE_UNALIGNED)) \
|| defined (__ARM_ARCH_7EM__) || defined (__ARM_ARCH_7M__))))
#include "../../string/memcpy.c"
#else
/* Do nothing. See memcpy.S in this directory. */
#endif

View file

@ -27,7 +27,19 @@
*/
#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
/* Do nothing here. See memcpy-stub.c in the same directory. */
/* Leave this field blank. So the memcpy() is not defined, and this will
automatically pull in the default C definition of memcpy() from
../../string/memcpy.c. No need to include this file explicitely.
The lib_a-memcpy.o will not be generated, so it won't replace the default
lib_a-memcpy.o which is generated by ../../string/memcpy.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-memcpy.o to be generated.
*/
#elif defined (__ARM_ARCH_7A__) && defined (__ARM_FEATURE_UNALIGNED)
#include "memcpy-armv7a.S"
@ -35,5 +47,5 @@
#include "memcpy-armv7m.S"
#else
/* Do nothing here. See memcpy-stub.c in the same directory. */
/* Leave this filed blank. See the commands above. */
#endif

View file

@ -64,8 +64,27 @@
|| (__ARM_ARCH == 6 && __ARM_ARCH_PROFILE == 'M')
# if defined (__thumb__) && !defined (__thumb2__)
/* Thumb1 only variant. */
# include "strcmp-armv4t.S"
/* Thumb1 only variant. If size is preferred, use strcmp-armv4t.S.
If speed is preferred, the strcmp function in ../../string/strcmp.c
will be used. */
# if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
# include "strcmp-armv4t.S"
# else
/* Leave this field blank. So the strcmp() is not defined, and this will
automatically pull in the default C definition of strcmp() from
../../string/strcmp.c. No need to include this file explicitely.
The lib_a-strcmp.o will not be generated, so it won't replace the
default lib_a-strcmp.o which is generated by ../../string/strcmp.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-strcmp.o to be generated.
*/
# endif
# else
# include "strcmp-arm-tiny.S"
# endif

View file

@ -34,6 +34,24 @@
#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
(defined (__thumb__) && !defined (__thumb2__))
# if !defined (PREFER_SIZE_OVER_SPEED) && !defined (__OPTIMIZE_SIZE__)
/* Thumb1 only variant.
If speed is preferred, the strlen() function in ../../string/strlen.c
will be used.
Leave this field blank. So the strlen() is not defined, and this will
automatically pull in the default C definition of strlen() from
../../string/strlen.c. No need to include this file explicitely.
The lib_a-strlen.o will not be generated, so it won't replace the default
lib_a-strlen.o which is generated by ../../string/strlen.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-strlen.o to be generated.
*/
# else
size_t
strlen (const char* str)
{
@ -43,7 +61,7 @@ strlen (const char* str)
asm ("mov %0, #0\n"
"1:\n\t"
"ldrb %1, [%2, %0]\n\t"
"add %0, %0, #1\n\t"
"add %0, %0, #1\n\t"
"cmp %1, #0\n\t"
"bne 1b"
: "=&r" (len), "=&r" (scratch) : "r" (str) : "memory", "cc");
@ -58,6 +76,7 @@ strlen (const char* str)
return end - str - 1;
#endif
}
#endif
#else
#if !(defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__))