[PATCH] FT32: add support in newlib
Jeff Johnston
jjohnstn@redhat.com
Fri Sep 4 23:07:00 GMT 2015
Patch applied.
-- Jeff J.
----- Original Message -----
> FT32 is a new high performance 32-bit RISC core developed by FTDI for
> embedded applications.
>
> Support for FT32 has already been added to binutils, gdb and gcc.
> This patch adds newlib support.
>
> I also propose to update config.sub from the gnuconfig project.
>
>
> Please can someone review it, and if appropriate approve it for commit?
>
> The FSF have acknowledged receipt of FTDI's copyright assignment papers.
>
> Thanks very much.
>
> newlib/ChangeLog:
> 2015-09-04 James Bowman <james.bowman@ftdichip.com>
>
> * Add FT32 support
>
> --
> James Bowman
> FTDI Open Source Liaison
>
>
> From: James Bowman <james.bowman@ftdichip.com>
> Date: Fri, 4 Sep 2015 09:02:25 -0700
> Subject: [PATCH] newlib FT32 support
>
> ---
> newlib/configure.host | 15 ++
> newlib/libc/include/machine/ieeefp.h | 4 +
> newlib/libc/include/machine/setjmp.h | 4 +
> newlib/libc/machine/configure.in | 1 +
> newlib/libc/machine/ft32/Makefile.am | 16 ++
> newlib/libc/machine/ft32/Makefile.in | 471
> +++++++++++++++++++++++++++++++++
> newlib/libc/machine/ft32/configure.in | 14 +
> newlib/libc/machine/ft32/memcpy.S | 32 +++
> newlib/libc/machine/ft32/memset.S | 30 +++
> newlib/libc/machine/ft32/setjmp.S | 94 +++++++
> newlib/libc/machine/ft32/stpcmp.S | 22 ++
> newlib/libc/machine/ft32/strcmp.S | 22 ++
> newlib/libc/machine/ft32/strcpy.S | 23 ++
> newlib/libc/machine/ft32/strlen.S | 22 ++
> 14 files changed, 770 insertions(+)
> create mode 100644 newlib/libc/machine/ft32/Makefile.am
> create mode 100644 newlib/libc/machine/ft32/Makefile.in
> create mode 100644 newlib/libc/machine/ft32/configure.in
> create mode 100644 newlib/libc/machine/ft32/memcpy.S
> create mode 100644 newlib/libc/machine/ft32/memset.S
> create mode 100644 newlib/libc/machine/ft32/setjmp.S
> create mode 100644 newlib/libc/machine/ft32/stpcmp.S
> create mode 100644 newlib/libc/machine/ft32/strcmp.S
> create mode 100644 newlib/libc/machine/ft32/strcpy.S
> create mode 100644 newlib/libc/machine/ft32/strlen.S
>
> diff --git a/newlib/configure.host b/newlib/configure.host
> index dac461b..1315d09 100644
> --- a/newlib/configure.host
> +++ b/newlib/configure.host
> @@ -141,6 +141,15 @@ case "${host_cpu}" in
> frv)
> machine_dir=frv
> ;;
> + ft32*)
> + machine_dir=ft32
> + target_optspace=yes
> + # newlib_io_float=no
> + default_newlib_io_long_long="yes"
> + newlib_cflags="-DPREFER_SIZE_OVER_SPEED -Os"
> + CFLAGS="-Os"
> + CCASFLAGS="-Os"
> + ;;
> h8300)
> machine_dir=h8300
> ;;
> @@ -426,6 +435,9 @@ case "${host}" in
> frv*)
> sys_dir=
> ;;
> + ft32*)
> + sys_dir=
> + ;;
> h8300-*-hms*)
> sys_dir=h8300hms
> ;;
> @@ -671,6 +683,9 @@ case "${host}" in
> syscall_dir=syscalls
> default_newlib_io_long_long="yes"
> ;;
> + ft32*-*-*)
> + syscall_dir=syscalls
> + ;;
> h8300*-*-*)
> syscall_dir=syscalls
> default_newlib_io_long_long="yes"
> diff --git a/newlib/libc/include/machine/ieeefp.h
> b/newlib/libc/include/machine/ieeefp.h
> index 04eea11..11ef0dd 100644
> --- a/newlib/libc/include/machine/ieeefp.h
> +++ b/newlib/libc/include/machine/ieeefp.h
> @@ -283,6 +283,10 @@
> #define __IEEE_BIG_ENDIAN
> #endif
>
> +#ifdef __FT32__
> +#define __IEEE_LITTLE_ENDIAN
> +#endif
> +
> #ifdef __mcore__
> #define __IEEE_BIG_ENDIAN
> #endif
> diff --git a/newlib/libc/include/machine/setjmp.h
> b/newlib/libc/include/machine/setjmp.h
> index b25684d..e0bc228 100644
> --- a/newlib/libc/include/machine/setjmp.h
> +++ b/newlib/libc/include/machine/setjmp.h
> @@ -250,6 +250,10 @@ _BEGIN_STD_C
> #define _JBLEN 10
> #endif
>
> +#ifdef __FT32__
> +#define _JBLEN 27
> +#endif
> +
> #ifdef __iq2000__
> #define _JBLEN 32
> #endif
> diff --git a/newlib/libc/machine/configure.in
> b/newlib/libc/machine/configure.in
> index 99b739b..1499eab 100644
> --- a/newlib/libc/machine/configure.in
> +++ b/newlib/libc/machine/configure.in
> @@ -35,6 +35,7 @@ if test -n "${machine_dir}"; then
> epiphany) AC_CONFIG_SUBDIRS(epiphany) ;;
> fr30) AC_CONFIG_SUBDIRS(fr30) ;;
> frv) AC_CONFIG_SUBDIRS(frv) ;;
> + ft32) AC_CONFIG_SUBDIRS(ft32) ;;
> h8300) AC_CONFIG_SUBDIRS(h8300) ;;
> h8500) AC_CONFIG_SUBDIRS(h8500) ;;
> hppa) AC_CONFIG_SUBDIRS(hppa) ;;
> diff --git a/newlib/libc/machine/ft32/Makefile.am
> b/newlib/libc/machine/ft32/Makefile.am
> new file mode 100644
> index 0000000..4aa79b0
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/Makefile.am
> @@ -0,0 +1,16 @@
> +## Process this file with automake to generate Makefile.in
> +
> +AUTOMAKE_OPTIONS = cygnus
> +
> +INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
> +
> +AM_CCASFLAGS = $(INCLUDES)
> +
> +noinst_LIBRARIES = lib.a
> +
> +lib_a_SOURCES = setjmp.S strlen.S memcpy.S strcmp.S memset.S strcpy.S
> +lib_a_CCASFLAGS=$(AM_CCASFLAGS)
> +lib_a_CFLAGS=$(AM_CFLAGS)
> +
> +ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
> +CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
> diff --git a/newlib/libc/machine/ft32/Makefile.in
> b/newlib/libc/machine/ft32/Makefile.in
> new file mode 100644
> index 0000000..990c588
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/Makefile.in
> @@ -0,0 +1,471 @@
> +# Makefile.in generated by automake 1.11.6 from Makefile.am.
> +# @configure_input@
> +
> +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
> +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
> +# Foundation, Inc.
> +# This Makefile.in is free software; the Free Software Foundation
> +# gives unlimited permission to copy and/or distribute it,
> +# with or without modifications, as long as this notice is preserved.
> +
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
> +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
> +# PARTICULAR PURPOSE.
> +
> +@SET_MAKE@
> +
> +VPATH = @srcdir@
> +am__make_dryrun = \
> + { \
> + am__dry=no; \
> + case $$MAKEFLAGS in \
> + *\\[\ \ ]*) \
> + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
> + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
> + *) \
> + for am__flg in $$MAKEFLAGS; do \
> + case $$am__flg in \
> + *=*|--*) ;; \
> + *n*) am__dry=yes; break;; \
> + esac; \
> + done;; \
> + esac; \
> + test $$am__dry = yes; \
> + }
> +pkgdatadir = $(datadir)/@PACKAGE@
> +pkgincludedir = $(includedir)/@PACKAGE@
> +pkglibdir = $(libdir)/@PACKAGE@
> +pkglibexecdir = $(libexecdir)/@PACKAGE@
> +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
> +install_sh_DATA = $(install_sh) -c -m 644
> +install_sh_PROGRAM = $(install_sh) -c
> +install_sh_SCRIPT = $(install_sh) -c
> +INSTALL_HEADER = $(INSTALL_DATA)
> +transform = $(program_transform_name)
> +NORMAL_INSTALL = :
> +PRE_INSTALL = :
> +POST_INSTALL = :
> +NORMAL_UNINSTALL = :
> +PRE_UNINSTALL = :
> +POST_UNINSTALL = :
> +build_triplet = @build@
> +host_triplet = @host@
> +subdir = .
> +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
> + $(top_srcdir)/configure $(am__configure_deps) \
> + $(srcdir)/../../../../mkinstalldirs
> +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
> +am__aclocal_m4_deps = $(top_srcdir)/../../../acinclude.m4 \
> + $(top_srcdir)/configure.in
> +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
> + $(ACLOCAL_M4)
> +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
> + configure.lineno config.status.lineno
> +mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
> +CONFIG_CLEAN_FILES =
> +CONFIG_CLEAN_VPATH_FILES =
> +LIBRARIES = $(noinst_LIBRARIES)
> +ARFLAGS = cru
> +lib_a_AR = $(AR) $(ARFLAGS)
> +lib_a_LIBADD =
> +am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-strlen.$(OBJEXT) \
> + lib_a-memcpy.$(OBJEXT) lib_a-strcmp.$(OBJEXT) \
> + lib_a-memset.$(OBJEXT) lib_a-strcpy.$(OBJEXT)
> +lib_a_OBJECTS = $(am_lib_a_OBJECTS)
> +DEFAULT_INCLUDES = -I.@am__isrc@
> +depcomp =
> +am__depfiles_maybe =
> +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
> + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
> +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
> + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
> +CCLD = $(CC)
> +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
> +SOURCES = $(lib_a_SOURCES)
> +am__can_run_installinfo = \
> + case $$AM_UPDATE_INFO_DIR in \
> + n|no|NO) false;; \
> + *) (install-info --version) >/dev/null 2>&1;; \
> + esac
> +ETAGS = etags
> +CTAGS = ctags
> +ACLOCAL = @ACLOCAL@
> +AMTAR = @AMTAR@
> +AR = @AR@
> +AS = @AS@
> +AUTOCONF = @AUTOCONF@
> +AUTOHEADER = @AUTOHEADER@
> +AUTOMAKE = @AUTOMAKE@
> +AWK = @AWK@
> +CC = @CC@
> +CCAS = @CCAS@
> +CCASFLAGS = @CCASFLAGS@
> +CCDEPMODE = @CCDEPMODE@
> +CYGPATH_W = @CYGPATH_W@
> +DEFS = @DEFS@
> +DEPDIR = @DEPDIR@
> +ECHO_C = @ECHO_C@
> +ECHO_N = @ECHO_N@
> +ECHO_T = @ECHO_T@
> +INSTALL = @INSTALL@
> +INSTALL_DATA = @INSTALL_DATA@
> +INSTALL_PROGRAM = @INSTALL_PROGRAM@
> +INSTALL_SCRIPT = @INSTALL_SCRIPT@
> +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
> +LDFLAGS = @LDFLAGS@
> +LIBOBJS = @LIBOBJS@
> +LIBS = @LIBS@
> +LTLIBOBJS = @LTLIBOBJS@
> +MAINT = @MAINT@
> +MAKEINFO = @MAKEINFO@
> +MKDIR_P = @MKDIR_P@
> +NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
> +NO_INCLUDE_LIST = @NO_INCLUDE_LIST@
> +OBJEXT = @OBJEXT@
> +PACKAGE = @PACKAGE@
> +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
> +PACKAGE_NAME = @PACKAGE_NAME@
> +PACKAGE_STRING = @PACKAGE_STRING@
> +PACKAGE_TARNAME = @PACKAGE_TARNAME@
> +PACKAGE_VERSION = @PACKAGE_VERSION@
> +PATH_SEPARATOR = @PATH_SEPARATOR@
> +RANLIB = @RANLIB@
> +READELF = @READELF@
> +SET_MAKE = @SET_MAKE@
> +SHELL = @SHELL@
> +STRIP = @STRIP@
> +VERSION = @VERSION@
> +abs_builddir = @abs_builddir@
> +abs_srcdir = @abs_srcdir@
> +abs_top_builddir = @abs_top_builddir@
> +abs_top_srcdir = @abs_top_srcdir@
> +aext = @aext@
> +am__include = @am__include@
> +am__leading_dot = @am__leading_dot@
> +am__quote = @am__quote@
> +am__tar = @am__tar@
> +am__untar = @am__untar@
> +bindir = @bindir@
> +build = @build@
> +build_alias = @build_alias@
> +build_cpu = @build_cpu@
> +build_os = @build_os@
> +build_vendor = @build_vendor@
> +builddir = @builddir@
> +datadir = @datadir@
> +datarootdir = @datarootdir@
> +docdir = @docdir@
> +dvidir = @dvidir@
> +exec_prefix = @exec_prefix@
> +host = @host@
> +host_alias = @host_alias@
> +host_cpu = @host_cpu@
> +host_os = @host_os@
> +host_vendor = @host_vendor@
> +htmldir = @htmldir@
> +includedir = @includedir@
> +infodir = @infodir@
> +install_sh = @install_sh@
> +libdir = @libdir@
> +libexecdir = @libexecdir@
> +libm_machine_dir = @libm_machine_dir@
> +localedir = @localedir@
> +localstatedir = @localstatedir@
> +lpfx = @lpfx@
> +machine_dir = @machine_dir@
> +mandir = @mandir@
> +mkdir_p = @mkdir_p@
> +newlib_basedir = @newlib_basedir@
> +oext = @oext@
> +oldincludedir = @oldincludedir@
> +pdfdir = @pdfdir@
> +prefix = @prefix@
> +program_transform_name = @program_transform_name@
> +psdir = @psdir@
> +sbindir = @sbindir@
> +sharedstatedir = @sharedstatedir@
> +srcdir = @srcdir@
> +sys_dir = @sys_dir@
> +sysconfdir = @sysconfdir@
> +target_alias = @target_alias@
> +top_build_prefix = @top_build_prefix@
> +top_builddir = @top_builddir@
> +top_srcdir = @top_srcdir@
> +AUTOMAKE_OPTIONS = cygnus
> +INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
> +AM_CCASFLAGS = $(INCLUDES)
> +noinst_LIBRARIES = lib.a
> +lib_a_SOURCES = setjmp.S strlen.S memcpy.S strcmp.S memset.S strcpy.S
> +lib_a_CCASFLAGS = $(AM_CCASFLAGS)
> +lib_a_CFLAGS = $(AM_CFLAGS)
> +ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
> +CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
> +all: all-am
> +
> +.SUFFIXES:
> +.SUFFIXES: .S .o .obj
> +am--refresh: Makefile
> + @:
> +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am
> $(am__configure_deps)
> + @for dep in $?; do \
> + case '$(am__configure_deps)' in \
> + *$$dep*) \
> + echo ' cd $(srcdir) && $(AUTOMAKE) --cygnus'; \
> + $(am__cd) $(srcdir) && $(AUTOMAKE) --cygnus \
> + && exit 0; \
> + exit 1;; \
> + esac; \
> + done; \
> + echo ' cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile'; \
> + $(am__cd) $(top_srcdir) && \
> + $(AUTOMAKE) --cygnus Makefile
> +.PRECIOUS: Makefile
> +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
> + @case '$?' in \
> + *config.status*) \
> + echo ' $(SHELL) ./config.status'; \
> + $(SHELL) ./config.status;; \
> + *) \
> + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@
> $(am__depfiles_maybe)'; \
> + cd $(top_builddir) && $(SHELL) ./config.status $@
> $(am__depfiles_maybe);; \
> + esac;
> +
> +$(top_builddir)/config.status: $(top_srcdir)/configure
> $(CONFIG_STATUS_DEPENDENCIES)
> + $(SHELL) ./config.status --recheck
> +
> +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
> + $(am__cd) $(srcdir) && $(AUTOCONF)
> +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
> + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
> +$(am__aclocal_m4_deps):
> +
> +clean-noinstLIBRARIES:
> + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
> +lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES) $(EXTRA_lib_a_DEPENDENCIES)
> + -rm -f lib.a
> + $(lib_a_AR) lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
> + $(RANLIB) lib.a
> +
> +mostlyclean-compile:
> + -rm -f *.$(OBJEXT)
> +
> +distclean-compile:
> + -rm -f *.tab.c
> +
> +.S.o:
> + $(CPPASCOMPILE) -c -o $@ $<
> +
> +.S.obj:
> + $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
> +
> +lib_a-setjmp.o: setjmp.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-setjmp.o `test -f 'setjmp.S' ||
> echo '$(srcdir)/'`setjmp.S
> +
> +lib_a-setjmp.obj: setjmp.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-setjmp.obj `if test -f
> 'setjmp.S'; then $(CYGPATH_W) 'setjmp.S'; else $(CYGPATH_W)
> '$(srcdir)/setjmp.S'; fi`
> +
> +lib_a-strlen.o: strlen.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-strlen.o `test -f 'strlen.S' ||
> echo '$(srcdir)/'`strlen.S
> +
> +lib_a-strlen.obj: strlen.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-strlen.obj `if test -f
> 'strlen.S'; then $(CYGPATH_W) 'strlen.S'; else $(CYGPATH_W)
> '$(srcdir)/strlen.S'; fi`
> +
> +lib_a-memcpy.o: memcpy.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-memcpy.o `test -f 'memcpy.S' ||
> echo '$(srcdir)/'`memcpy.S
> +
> +lib_a-memcpy.obj: memcpy.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-memcpy.obj `if test -f
> 'memcpy.S'; then $(CYGPATH_W) 'memcpy.S'; else $(CYGPATH_W)
> '$(srcdir)/memcpy.S'; fi`
> +
> +lib_a-strcmp.o: strcmp.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-strcmp.o `test -f 'strcmp.S' ||
> echo '$(srcdir)/'`strcmp.S
> +
> +lib_a-strcmp.obj: strcmp.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-strcmp.obj `if test -f
> 'strcmp.S'; then $(CYGPATH_W) 'strcmp.S'; else $(CYGPATH_W)
> '$(srcdir)/strcmp.S'; fi`
> +
> +lib_a-memset.o: memset.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-memset.o `test -f 'memset.S' ||
> echo '$(srcdir)/'`memset.S
> +
> +lib_a-memset.obj: memset.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-memset.obj `if test -f
> 'memset.S'; then $(CYGPATH_W) 'memset.S'; else $(CYGPATH_W)
> '$(srcdir)/memset.S'; fi`
> +
> +lib_a-strcpy.o: strcpy.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-strcpy.o `test -f 'strcpy.S' ||
> echo '$(srcdir)/'`strcpy.S
> +
> +lib_a-strcpy.obj: strcpy.S
> + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
> $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-strcpy.obj `if test -f
> 'strcpy.S'; then $(CYGPATH_W) 'strcpy.S'; else $(CYGPATH_W)
> '$(srcdir)/strcpy.S'; fi`
> +
> +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
> + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
> + unique=`for i in $$list; do \
> + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
> + done | \
> + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
> + END { if (nonempty) { for (i in files) print i; }; }'`; \
> + mkid -fID $$unique
> +tags: TAGS
> +
> +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
> + $(TAGS_FILES) $(LISP)
> + set x; \
> + here=`pwd`; \
> + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
> + unique=`for i in $$list; do \
> + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
> + done | \
> + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
> + END { if (nonempty) { for (i in files) print i; }; }'`; \
> + shift; \
> + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
> + test -n "$$unique" || unique=$$empty_fix; \
> + if test $$# -gt 0; then \
> + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
> + "$$@" $$unique; \
> + else \
> + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
> + $$unique; \
> + fi; \
> + fi
> +ctags: CTAGS
> +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
> + $(TAGS_FILES) $(LISP)
> + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
> + unique=`for i in $$list; do \
> + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
> + done | \
> + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
> + END { if (nonempty) { for (i in files) print i; }; }'`; \
> + test -z "$(CTAGS_ARGS)$$unique" \
> + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
> + $$unique
> +
> +GTAGS:
> + here=`$(am__cd) $(top_builddir) && pwd` \
> + && $(am__cd) $(top_srcdir) \
> + && gtags -i $(GTAGS_ARGS) "$$here"
> +
> +distclean-tags:
> + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
> +check-am:
> +check: check-am
> +all-am: Makefile $(LIBRARIES)
> +installdirs:
> +install: install-am
> +install-exec: install-exec-am
> +install-data: install-data-am
> +uninstall: uninstall-am
> +
> +install-am: all-am
> + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
> +
> +installcheck: installcheck-am
> +install-strip:
> + if test -z '$(STRIP)'; then \
> + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
> + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
> + install; \
> + else \
> + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
> + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
> + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
> + fi
> +mostlyclean-generic:
> +
> +clean-generic:
> +
> +distclean-generic:
> + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
> + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f
> $(CONFIG_CLEAN_VPATH_FILES)
> +
> +maintainer-clean-generic:
> + @echo "This command is intended for maintainers to use"
> + @echo "it deletes files that may require special tools to rebuild."
> +clean: clean-am
> +
> +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
> +
> +distclean: distclean-am
> + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
> + -rm -f Makefile
> +distclean-am: clean-am distclean-compile distclean-generic \
> + distclean-tags
> +
> +dvi: dvi-am
> +
> +dvi-am:
> +
> +html: html-am
> +
> +html-am:
> +
> +info: info-am
> +
> +info-am:
> +
> +install-data-am:
> +
> +install-dvi: install-dvi-am
> +
> +install-dvi-am:
> +
> +install-exec-am:
> +
> +install-html: install-html-am
> +
> +install-html-am:
> +
> +install-info: install-info-am
> +
> +install-info-am:
> +
> +install-man:
> +
> +install-pdf: install-pdf-am
> +
> +install-pdf-am:
> +
> +install-ps: install-ps-am
> +
> +install-ps-am:
> +
> +installcheck-am:
> +
> +maintainer-clean: maintainer-clean-am
> + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
> + -rm -rf $(top_srcdir)/autom4te.cache
> + -rm -f Makefile
> +maintainer-clean-am: distclean-am maintainer-clean-generic
> +
> +mostlyclean: mostlyclean-am
> +
> +mostlyclean-am: mostlyclean-compile mostlyclean-generic
> +
> +pdf: pdf-am
> +
> +pdf-am:
> +
> +ps: ps-am
> +
> +ps-am:
> +
> +uninstall-am:
> +
> +.MAKE: install-am install-strip
> +
> +.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
> + clean-generic clean-noinstLIBRARIES ctags distclean \
> + distclean-compile distclean-generic distclean-tags dvi dvi-am \
> + html html-am info info-am install install-am install-data \
> + install-data-am install-dvi install-dvi-am install-exec \
> + install-exec-am install-html install-html-am install-info \
> + install-info-am install-man install-pdf install-pdf-am \
> + install-ps install-ps-am install-strip installcheck \
> + installcheck-am installdirs maintainer-clean \
> + maintainer-clean-generic mostlyclean mostlyclean-compile \
> + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
> + uninstall-am
> +
> +
> +# Tell versions [3.59,3.63) of GNU make to not export all variables.
> +# Otherwise a system limit (for SysV at least) may be exceeded.
> +.NOEXPORT:
> diff --git a/newlib/libc/machine/ft32/configure.in
> b/newlib/libc/machine/ft32/configure.in
> new file mode 100644
> index 0000000..1a19430
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/configure.in
> @@ -0,0 +1,14 @@
> +dnl This is the newlib/libc/machine/arm configure.in file.
> +dnl Process this file with autoconf to produce a configure script.
> +
> +AC_PREREQ(2.59)
> +AC_INIT([newlib],[NEWLIB_VERSION])
> +AC_CONFIG_SRCDIR([Makefile.am])
> +
> +dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
> +AC_CONFIG_AUX_DIR(../../../..)
> +
> +NEWLIB_CONFIGURE(../../..)
> +
> +AC_CONFIG_FILES([Makefile])
> +AC_OUTPUT
> diff --git a/newlib/libc/machine/ft32/memcpy.S
> b/newlib/libc/machine/ft32/memcpy.S
> new file mode 100644
> index 0000000..03b01a6
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/memcpy.S
> @@ -0,0 +1,32 @@
> +/* A memcpy.c for FT32
> + Copyright (C) 2014 FTDI (support@ftdichip.com)
> +
> + The authors hereby grant permission to use, copy, modify, distribute,
> + and license this software and its documentation for any purpose, provided
> + that existing copyright notices are retained in all copies and that this
> + notice is included verbatim in any distributions. No written agreement,
> + license, or royalty fee is required for any of the authorized uses.
> + Modifications to this software may be copyrighted by their authors
> + and need not follow the licensing terms described here, provided that
> + the new terms are clearly indicated on the first page of each file where
> + they apply. */
> +
> + .text
> + .global memcpy
> + .type memcpy,@function
> +memcpy:
> + ldk $r3,32764
> +1:
> + cmp $r2,$r3
> + jmpc lte,2f
> + memcpy.b $r0,$r1,$r3
> + add $r0,$r0,$r3
> + add $r1,$r1,$r3
> + sub $r2,$r2,$r3
> + jmp 1b
> +2:
> + memcpy.b $r0,$r1,$r2
> + return
> +.Lend2:
> + .size memcpy,.Lend2-memcpy
> +
> diff --git a/newlib/libc/machine/ft32/memset.S
> b/newlib/libc/machine/ft32/memset.S
> new file mode 100644
> index 0000000..07b733f
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/memset.S
> @@ -0,0 +1,30 @@
> +/* A memset.c for FT32
> + Copyright (C) 2014 FTDI (support@ftdichip.com)
> +
> + The authors hereby grant permission to use, copy, modify, distribute,
> + and license this software and its documentation for any purpose, provided
> + that existing copyright notices are retained in all copies and that this
> + notice is included verbatim in any distributions. No written agreement,
> + license, or royalty fee is required for any of the authorized uses.
> + Modifications to this software may be copyrighted by their authors
> + and need not follow the licensing terms described here, provided that
> + the new terms are clearly indicated on the first page of each file where
> + they apply. */
> +
> + .text
> + .global memset
> + .type memset,@function
> +memset:
> + ldk $r3,32764
> +1:
> + cmp $r2,$r3
> + jmpc lte,2f
> + memset.b $r0,$r1,$r3
> + add $r0,$r0,$r3
> + sub $r2,$r2,$r3
> + jmp 1b
> +2:
> + memset.b $r0,$r1,$r2
> + return
> +.Lend2:
> + .size memset,.Lend2-memset
> diff --git a/newlib/libc/machine/ft32/setjmp.S
> b/newlib/libc/machine/ft32/setjmp.S
> new file mode 100644
> index 0000000..4fcdfef
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/setjmp.S
> @@ -0,0 +1,94 @@
> +/* A setjmp.c for FT32
> + Copyright (C) 2014 FTDI (support@ftdichip.com)
> +
> + The authors hereby grant permission to use, copy, modify, distribute,
> + and license this software and its documentation for any purpose, provided
> + that existing copyright notices are retained in all copies and that this
> + notice is included verbatim in any distributions. No written agreement,
> + license, or royalty fee is required for any of the authorized uses.
> + Modifications to this software may be copyrighted by their authors
> + and need not follow the licensing terms described here, provided that
> + the new terms are clearly indicated on the first page of each file where
> + they apply. */
> +
> +# setjmp/longjmp for FT32.
> +# Total jumpbuf size is 108 bytes, or 27 words.
> +#
> +
> + .text
> + .global setjmp
> + .type setjmp,@function
> +setjmp:
> + pop.l $r5 # return address in $r5
> + sti.l $r0,0,$r5
> + sti.l $r0,4,$r6
> + sti.l $r0,8,$r7
> + sti.l $r0,12,$r8
> + sti.l $r0,16,$r9
> + sti.l $r0,20,$r10
> + sti.l $r0,24,$r11
> + sti.l $r0,28,$r12
> + sti.l $r0,32,$r13
> + sti.l $r0,36,$r14
> + sti.l $r0,40,$r15
> + sti.l $r0,44,$r16
> + sti.l $r0,48,$r17
> + sti.l $r0,52,$r18
> + sti.l $r0,56,$r19
> + sti.l $r0,60,$r20
> + sti.l $r0,64,$r21
> + sti.l $r0,68,$r22
> + sti.l $r0,72,$r23
> + sti.l $r0,76,$r24
> + sti.l $r0,80,$r25
> + sti.l $r0,84,$r26
> + sti.l $r0,88,$r27
> + sti.l $r0,92,$r28
> + sti.l $r0,96,$r29
> + sti.l $r0,100,$r30
> + sti.l $r0,104,$r31
> + ldk.l $r0,0
> + jmpi $r5
> +
> +.Lend1:
> + .size setjmp,.Lend1-setjmp
> +
> + .global longjmp
> + .type longjmp,@function
> +longjmp:
> + cmp.l $r1,0
> + jmpc nz,.nonz
> + ldk.l $r1,1
> +.nonz:
> + ldi.l $r5,$r0,0
> + ldi.l $r6,$r0,4
> + ldi.l $r7,$r0,8
> + ldi.l $r8,$r0,12
> + ldi.l $r9,$r0,16
> + ldi.l $r10,$r0,20
> + ldi.l $r11,$r0,24
> + ldi.l $r12,$r0,28
> + ldi.l $r13,$r0,32
> + ldi.l $r14,$r0,36
> + ldi.l $r15,$r0,40
> + ldi.l $r16,$r0,44
> + ldi.l $r17,$r0,48
> + ldi.l $r18,$r0,52
> + ldi.l $r19,$r0,56
> + ldi.l $r20,$r0,60
> + ldi.l $r21,$r0,64
> + ldi.l $r22,$r0,68
> + ldi.l $r23,$r0,72
> + ldi.l $r24,$r0,76
> + ldi.l $r25,$r0,80
> + ldi.l $r26,$r0,84
> + ldi.l $r27,$r0,88
> + ldi.l $r28,$r0,92
> + ldi.l $r29,$r0,96
> + ldi.l $r30,$r0,100
> + ldi.l $r31,$r0,104
> + move.l $r0,$r1
> + jmpi $r5
> +
> +.Lend2:
> + .size longjmp,.Lend2-longjmp
> diff --git a/newlib/libc/machine/ft32/stpcmp.S
> b/newlib/libc/machine/ft32/stpcmp.S
> new file mode 100644
> index 0000000..1522656
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/stpcmp.S
> @@ -0,0 +1,22 @@
> +/* A strlen.c for FT32
> + Copyright (C) 2014 FTDI (support@ftdichip.com)
> +
> + The authors hereby grant permission to use, copy, modify, distribute,
> + and license this software and its documentation for any purpose, provided
> + that existing copyright notices are retained in all copies and that this
> + notice is included verbatim in any distributions. No written agreement,
> + license, or royalty fee is required for any of the authorized uses.
> + Modifications to this software may be copyrighted by their authors
> + and need not follow the licensing terms described here, provided that
> + the new terms are clearly indicated on the first page of each file where
> + they apply. */
> +
> + .text
> + .global strlen
> + .type strlen,@function
> +strlen:
> + strlen.b $r0,$r0
> + return
> +.Lend2:
> + .size strlen,.Lend2-strlen
> +
> diff --git a/newlib/libc/machine/ft32/strcmp.S
> b/newlib/libc/machine/ft32/strcmp.S
> new file mode 100644
> index 0000000..9d64dfa
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/strcmp.S
> @@ -0,0 +1,22 @@
> +/* A strcmp.c for FT32
> + Copyright (C) 2014 FTDI (support@ftdichip.com)
> +
> + The authors hereby grant permission to use, copy, modify, distribute,
> + and license this software and its documentation for any purpose, provided
> + that existing copyright notices are retained in all copies and that this
> + notice is included verbatim in any distributions. No written agreement,
> + license, or royalty fee is required for any of the authorized uses.
> + Modifications to this software may be copyrighted by their authors
> + and need not follow the licensing terms described here, provided that
> + the new terms are clearly indicated on the first page of each file where
> + they apply. */
> +
> + .text
> + .global strcmp
> + .type strcmp,@function
> +strcmp:
> + strcmp.b $r0,$r0,$r1
> + return
> +.Lend2:
> + .size strcmp,.Lend2-strcmp
> +
> diff --git a/newlib/libc/machine/ft32/strcpy.S
> b/newlib/libc/machine/ft32/strcpy.S
> new file mode 100644
> index 0000000..a431ef6
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/strcpy.S
> @@ -0,0 +1,23 @@
> +/* A strcpy.c for FT32
> + Copyright (C) 2014 FTDI (support@ftdichip.com)
> +
> + The authors hereby grant permission to use, copy, modify, distribute,
> + and license this software and its documentation for any purpose, provided
> + that existing copyright notices are retained in all copies and that this
> + notice is included verbatim in any distributions. No written agreement,
> + license, or royalty fee is required for any of the authorized uses.
> + Modifications to this software may be copyrighted by their authors
> + and need not follow the licensing terms described here, provided that
> + the new terms are clearly indicated on the first page of each file where
> + they apply. */
> +
> + .text
> + .global strcpy
> + .type strcpy,@function
> +strcpy:
> + move.l $r5,$r0
> + stpcpy.b $r5,$r1
> + return
> +.Lend2:
> + .size strcpy,.Lend2-strcpy
> +
> diff --git a/newlib/libc/machine/ft32/strlen.S
> b/newlib/libc/machine/ft32/strlen.S
> new file mode 100644
> index 0000000..1522656
> --- /dev/null
> +++ b/newlib/libc/machine/ft32/strlen.S
> @@ -0,0 +1,22 @@
> +/* A strlen.c for FT32
> + Copyright (C) 2014 FTDI (support@ftdichip.com)
> +
> + The authors hereby grant permission to use, copy, modify, distribute,
> + and license this software and its documentation for any purpose, provided
> + that existing copyright notices are retained in all copies and that this
> + notice is included verbatim in any distributions. No written agreement,
> + license, or royalty fee is required for any of the authorized uses.
> + Modifications to this software may be copyrighted by their authors
> + and need not follow the licensing terms described here, provided that
> + the new terms are clearly indicated on the first page of each file where
> + they apply. */
> +
> + .text
> + .global strlen
> + .type strlen,@function
> +strlen:
> + strlen.b $r0,$r0
> + return
> +.Lend2:
> + .size strlen,.Lend2-strlen
> +
> --
> 1.7.9.5
>
>
More information about the Newlib
mailing list