[PATCH] FT32: add support in newlib
James Bowman
james.bowman@ftdichip.com
Fri Sep 4 16:08:00 GMT 2015
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