Add support for Intel's XScale processor
This commit is contained in:
		| @@ -1,3 +1,22 @@ | ||||
| 2000-11-29  Nick Clifton  <nickc@redhat.com> | ||||
|  | ||||
| 	* configure.host: Add xscale target. | ||||
| 	* libc/machine/xscale: New directory. | ||||
| 	* libc/machine/xscale/Makefile.am: New file. | ||||
| 	* libc/machine/xscale/Makefile.in: New file. | ||||
| 	* libc/machine/xscale/aclocal.m4: New file. | ||||
| 	* libc/machine/xscale/configure: New file. | ||||
| 	* libc/machine/xscale/configure.in: New file. | ||||
| 	* libc/machine/xscale/memchr.S: New file. | ||||
| 	* libc/machine/xscale/memcmp.S: New file. | ||||
| 	* libc/machine/xscale/memcpy.S: New file. | ||||
| 	* libc/machine/xscale/memmove.S: New file. | ||||
| 	* libc/machine/xscale/memset.S: New file. | ||||
| 	* libc/machine/xscale/strchr.S: New file. | ||||
| 	* libc/machine/xscale/strcmp.S: New file. | ||||
| 	* libc/machine/xscale/strcpy.S: New file. | ||||
| 	* libc/machine/xscale/strlen.S: New file. | ||||
|  | ||||
| Sat Nov 25 11:24:00 2000  Corinna Vinschen <vinschen@cygnus.com> | ||||
|  | ||||
| 	* libc/include/sys/types.h: Change i to `__i' in FD_ZERO macro to | ||||
|   | ||||
| @@ -145,6 +145,9 @@ case "${host_cpu}" in | ||||
|   strongarm) | ||||
| 	machine_dir=arm | ||||
| 	;; | ||||
|   xscale) | ||||
| 	machine_dir=xscale | ||||
| 	;; | ||||
|   thumb) | ||||
| 	machine_dir=arm | ||||
| 	;; | ||||
| @@ -263,6 +266,9 @@ case "${host}" in | ||||
|   strongarm-*-*) | ||||
| 	sys_dir=arm  | ||||
| 	;; | ||||
|   xscale-*-*) | ||||
| 	sys_dir=arm  | ||||
| 	;; | ||||
|   thumb-*-*) | ||||
| 	sys_dir=arm  | ||||
| 	;; | ||||
| @@ -422,6 +428,11 @@ case "${host}" in | ||||
| 	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY" | ||||
| 	newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR" | ||||
| 	;; | ||||
|   xscale-*-*) | ||||
| 	syscall_dir=syscalls | ||||
| 	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY" | ||||
| 	newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR" | ||||
| 	;; | ||||
|   thumb-*-pe) | ||||
| 	syscall_dir=syscalls | ||||
| 	newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY" | ||||
|   | ||||
							
								
								
									
										14
									
								
								newlib/libc/machine/xscale/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								newlib/libc/machine/xscale/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| ## Process this file with automake to generate Makefile.in | ||||
|  | ||||
| AUTOMAKE_OPTIONS = cygnus | ||||
|  | ||||
| INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) | ||||
|  | ||||
| noinst_LIBRARIES = lib.a | ||||
|  | ||||
| lib_a_SOURCES = \ | ||||
| 	memchr.c memcmp.c memcpy.c memmove.c memset.c \ | ||||
| 	strchr.c strcmp.c strcpy.c strlen.c | ||||
|  | ||||
| ACLOCAL_AMFLAGS = -I ../../.. | ||||
| CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host | ||||
							
								
								
									
										322
									
								
								newlib/libc/machine/xscale/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								newlib/libc/machine/xscale/Makefile.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,322 @@ | ||||
| # Makefile.in generated automatically by automake 1.4 from Makefile.am | ||||
|  | ||||
| # Copyright (C) 1994, 1995-8, 1999 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. | ||||
|  | ||||
|  | ||||
| SHELL = @SHELL@ | ||||
|  | ||||
| srcdir = @srcdir@ | ||||
| top_srcdir = @top_srcdir@ | ||||
| VPATH = @srcdir@ | ||||
| prefix = @prefix@ | ||||
| exec_prefix = @exec_prefix@ | ||||
|  | ||||
| bindir = @bindir@ | ||||
| sbindir = @sbindir@ | ||||
| libexecdir = @libexecdir@ | ||||
| datadir = @datadir@ | ||||
| sysconfdir = @sysconfdir@ | ||||
| sharedstatedir = @sharedstatedir@ | ||||
| localstatedir = @localstatedir@ | ||||
| libdir = @libdir@ | ||||
| infodir = @infodir@ | ||||
| mandir = @mandir@ | ||||
| includedir = @includedir@ | ||||
| oldincludedir = /usr/include | ||||
|  | ||||
| DESTDIR = | ||||
|  | ||||
| pkgdatadir = $(datadir)/@PACKAGE@ | ||||
| pkglibdir = $(libdir)/@PACKAGE@ | ||||
| pkgincludedir = $(includedir)/@PACKAGE@ | ||||
|  | ||||
| top_builddir = . | ||||
|  | ||||
| ACLOCAL = @ACLOCAL@ | ||||
| AUTOCONF = @AUTOCONF@ | ||||
| AUTOMAKE = @AUTOMAKE@ | ||||
| AUTOHEADER = @AUTOHEADER@ | ||||
|  | ||||
| INSTALL = @INSTALL@ | ||||
| INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) | ||||
| INSTALL_DATA = @INSTALL_DATA@ | ||||
| INSTALL_SCRIPT = @INSTALL_SCRIPT@ | ||||
| transform = @program_transform_name@ | ||||
|  | ||||
| NORMAL_INSTALL = : | ||||
| PRE_INSTALL = : | ||||
| POST_INSTALL = : | ||||
| NORMAL_UNINSTALL = : | ||||
| PRE_UNINSTALL = : | ||||
| POST_UNINSTALL = : | ||||
| host_alias = @host_alias@ | ||||
| host_triplet = @host@ | ||||
| AR = @AR@ | ||||
| AS = @AS@ | ||||
| CC = @CC@ | ||||
| CPP = @CPP@ | ||||
| EXEEXT = @EXEEXT@ | ||||
| MAINT = @MAINT@ | ||||
| MAKEINFO = @MAKEINFO@ | ||||
| NEWLIB_CFLAGS = @NEWLIB_CFLAGS@ | ||||
| PACKAGE = @PACKAGE@ | ||||
| RANLIB = @RANLIB@ | ||||
| VERSION = @VERSION@ | ||||
| machine_dir = @machine_dir@ | ||||
| newlib_basedir = @newlib_basedir@ | ||||
| sys_dir = @sys_dir@ | ||||
|  | ||||
| AUTOMAKE_OPTIONS = cygnus | ||||
|  | ||||
| INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) | ||||
|  | ||||
| noinst_LIBRARIES = lib.a | ||||
|  | ||||
| lib_a_SOURCES = \ | ||||
| 	memchr.c memcmp.c memcpy.c memmove.c memset.c \ | ||||
| 	strchr.c strcmp.c strcpy.c strlen.c | ||||
|  | ||||
|  | ||||
| ACLOCAL_AMFLAGS = -I ../../.. | ||||
| CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs | ||||
| CONFIG_CLEAN_FILES =  | ||||
| LIBRARIES =  $(noinst_LIBRARIES) | ||||
|  | ||||
|  | ||||
| DEFS = @DEFS@ -I. -I$(srcdir)  | ||||
| CPPFLAGS = @CPPFLAGS@ | ||||
| LDFLAGS = @LDFLAGS@ | ||||
| LIBS = @LIBS@ | ||||
| lib_a_LIBADD =  | ||||
| lib_a_OBJECTS =  memchr.o memcmp.o memcpy.o memmove.o memset.o strchr.o \ | ||||
| strcmp.o strcpy.o strlen.o | ||||
| CFLAGS = @CFLAGS@ | ||||
| COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||||
| CCLD = $(CC) | ||||
| LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ | ||||
| DIST_COMMON =  Makefile.am Makefile.in aclocal.m4 configure configure.in | ||||
|  | ||||
|  | ||||
| DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) | ||||
|  | ||||
| TAR = tar | ||||
| GZIP_ENV = --best | ||||
| SOURCES = $(lib_a_SOURCES) | ||||
| OBJECTS = $(lib_a_OBJECTS) | ||||
|  | ||||
| all: all-redirect | ||||
| .SUFFIXES: | ||||
| .SUFFIXES: .S .c .o .s | ||||
| $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)  | ||||
| 	cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile | ||||
|  | ||||
| Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status | ||||
| 	cd $(top_builddir) \ | ||||
| 	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status | ||||
|  | ||||
| $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in  \ | ||||
| 		../../../acinclude.m4 ../../../aclocal.m4 | ||||
| 	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) | ||||
|  | ||||
| config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) | ||||
| 	$(SHELL) ./config.status --recheck | ||||
| $(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) | ||||
| 	cd $(srcdir) && $(AUTOCONF) | ||||
|  | ||||
| mostlyclean-noinstLIBRARIES: | ||||
|  | ||||
| clean-noinstLIBRARIES: | ||||
| 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) | ||||
|  | ||||
| distclean-noinstLIBRARIES: | ||||
|  | ||||
| maintainer-clean-noinstLIBRARIES: | ||||
|  | ||||
| .c.o: | ||||
| 	$(COMPILE) -c $< | ||||
|  | ||||
| .s.o: | ||||
| 	$(COMPILE) -c $< | ||||
|  | ||||
| .S.o: | ||||
| 	$(COMPILE) -c $< | ||||
|  | ||||
| mostlyclean-compile: | ||||
| 	-rm -f *.o core *.core | ||||
|  | ||||
| clean-compile: | ||||
|  | ||||
| distclean-compile: | ||||
| 	-rm -f *.tab.c | ||||
|  | ||||
| maintainer-clean-compile: | ||||
|  | ||||
| lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES) | ||||
| 	-rm -f lib.a | ||||
| 	$(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD) | ||||
| 	$(RANLIB) lib.a | ||||
|  | ||||
| tags: TAGS | ||||
|  | ||||
| ID: $(HEADERS) $(SOURCES) $(LISP) | ||||
| 	list='$(SOURCES) $(HEADERS)'; \ | ||||
| 	unique=`for i in $$list; do echo $$i; done | \ | ||||
| 	  awk '    { files[$$0] = 1; } \ | ||||
| 	       END { for (i in files) print i; }'`; \ | ||||
| 	here=`pwd` && cd $(srcdir) \ | ||||
| 	  && mkid -f$$here/ID $$unique $(LISP) | ||||
|  | ||||
| TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP) | ||||
| 	tags=; \ | ||||
| 	here=`pwd`; \ | ||||
| 	list='$(SOURCES) $(HEADERS)'; \ | ||||
| 	unique=`for i in $$list; do echo $$i; done | \ | ||||
| 	  awk '    { files[$$0] = 1; } \ | ||||
| 	       END { for (i in files) print i; }'`; \ | ||||
| 	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ | ||||
| 	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS) | ||||
|  | ||||
| mostlyclean-tags: | ||||
|  | ||||
| clean-tags: | ||||
|  | ||||
| distclean-tags: | ||||
| 	-rm -f TAGS ID | ||||
|  | ||||
| maintainer-clean-tags: | ||||
|  | ||||
| distdir = $(PACKAGE)-$(VERSION) | ||||
| top_distdir = $(distdir) | ||||
|  | ||||
| # This target untars the dist file and tries a VPATH configuration.  Then | ||||
| # it guarantees that the distribution is self-contained by making another | ||||
| # tarfile. | ||||
| distcheck: dist | ||||
| 	-rm -rf $(distdir) | ||||
| 	GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz | ||||
| 	mkdir $(distdir)/=build | ||||
| 	mkdir $(distdir)/=inst | ||||
| 	dc_install_base=`cd $(distdir)/=inst && pwd`; \ | ||||
| 	cd $(distdir)/=build \ | ||||
| 	  && ../configure --srcdir=.. --prefix=$$dc_install_base \ | ||||
| 	  && $(MAKE) $(AM_MAKEFLAGS) \ | ||||
| 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \ | ||||
| 	  && $(MAKE) $(AM_MAKEFLAGS) check \ | ||||
| 	  && $(MAKE) $(AM_MAKEFLAGS) install \ | ||||
| 	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \ | ||||
| 	  && $(MAKE) $(AM_MAKEFLAGS) dist | ||||
| 	-rm -rf $(distdir) | ||||
| 	@banner="$(distdir).tar.gz is ready for distribution"; \ | ||||
| 	dashes=`echo "$$banner" | sed s/./=/g`; \ | ||||
| 	echo "$$dashes"; \ | ||||
| 	echo "$$banner"; \ | ||||
| 	echo "$$dashes" | ||||
| dist: distdir | ||||
| 	-chmod -R a+r $(distdir) | ||||
| 	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) | ||||
| 	-rm -rf $(distdir) | ||||
| dist-all: distdir | ||||
| 	-chmod -R a+r $(distdir) | ||||
| 	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) | ||||
| 	-rm -rf $(distdir) | ||||
| distdir: $(DISTFILES) | ||||
| 	-rm -rf $(distdir) | ||||
| 	mkdir $(distdir) | ||||
| 	-chmod 777 $(distdir) | ||||
| 	@for file in $(DISTFILES); do \ | ||||
| 	  if test -f $$file; then d=.; else d=$(srcdir); fi; \ | ||||
| 	  if test -d $$d/$$file; then \ | ||||
| 	    cp -pr $$d/$$file $(distdir)/$$file; \ | ||||
| 	  else \ | ||||
| 	    test -f $(distdir)/$$file \ | ||||
| 	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ | ||||
| 	    || cp -p $$d/$$file $(distdir)/$$file || :; \ | ||||
| 	  fi; \ | ||||
| 	done | ||||
| info-am: | ||||
| info: info-am | ||||
| dvi-am: | ||||
| dvi: dvi-am | ||||
| check-am: | ||||
| check: check-am | ||||
| installcheck-am: | ||||
| installcheck: installcheck-am | ||||
| install-info-am:  | ||||
| install-info: install-info-am | ||||
| install-exec-am: | ||||
| install-exec: install-exec-am | ||||
|  | ||||
| install-data-am: | ||||
| install-data: install-data-am | ||||
|  | ||||
| install-am: all-am | ||||
| 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am | ||||
| install: install-am | ||||
| uninstall-am: | ||||
| uninstall: uninstall-am | ||||
| all-am: Makefile $(LIBRARIES) | ||||
| all-redirect: all-am | ||||
| install-strip: | ||||
| 	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install | ||||
| installdirs: | ||||
|  | ||||
|  | ||||
| mostlyclean-generic: | ||||
|  | ||||
| clean-generic: | ||||
|  | ||||
| distclean-generic: | ||||
| 	-rm -f Makefile $(CONFIG_CLEAN_FILES) | ||||
| 	-rm -f config.cache config.log stamp-h stamp-h[0-9]* | ||||
|  | ||||
| maintainer-clean-generic: | ||||
| mostlyclean-am:  mostlyclean-noinstLIBRARIES mostlyclean-compile \ | ||||
| 		mostlyclean-tags mostlyclean-generic | ||||
|  | ||||
| mostlyclean: mostlyclean-am | ||||
|  | ||||
| clean-am:  clean-noinstLIBRARIES clean-compile clean-tags clean-generic \ | ||||
| 		mostlyclean-am | ||||
|  | ||||
| clean: clean-am | ||||
|  | ||||
| distclean-am:  distclean-noinstLIBRARIES distclean-compile \ | ||||
| 		distclean-tags distclean-generic clean-am | ||||
|  | ||||
| distclean: distclean-am | ||||
| 	-rm -f config.status | ||||
|  | ||||
| maintainer-clean-am:  maintainer-clean-noinstLIBRARIES \ | ||||
| 		maintainer-clean-compile maintainer-clean-tags \ | ||||
| 		maintainer-clean-generic distclean-am | ||||
| 	@echo "This command is intended for maintainers to use;" | ||||
| 	@echo "it deletes files that may require special tools to rebuild." | ||||
|  | ||||
| maintainer-clean: maintainer-clean-am | ||||
| 	-rm -f config.status | ||||
|  | ||||
| .PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \ | ||||
| clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ | ||||
| mostlyclean-compile distclean-compile clean-compile \ | ||||
| maintainer-clean-compile tags mostlyclean-tags distclean-tags \ | ||||
| clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ | ||||
| check-am installcheck-am installcheck install-info-am install-info \ | ||||
| install-exec-am install-exec install-data-am install-data install-am \ | ||||
| install uninstall-am uninstall all-redirect all-am all installdirs \ | ||||
| mostlyclean-generic distclean-generic clean-generic \ | ||||
| maintainer-clean-generic clean mostlyclean distclean maintainer-clean | ||||
|  | ||||
|  | ||||
| # 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: | ||||
							
								
								
									
										282
									
								
								newlib/libc/machine/xscale/aclocal.m4
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										282
									
								
								newlib/libc/machine/xscale/aclocal.m4
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,282 @@ | ||||
| dnl aclocal.m4 generated automatically by aclocal 1.4 | ||||
|  | ||||
| dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. | ||||
| dnl This file is free software; the Free Software Foundation | ||||
| dnl gives unlimited permission to copy and/or distribute it, | ||||
| dnl with or without modifications, as long as this notice is preserved. | ||||
|  | ||||
| dnl This program is distributed in the hope that it will be useful, | ||||
| dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without | ||||
| dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A | ||||
| dnl PARTICULAR PURPOSE. | ||||
|  | ||||
| dnl This provides configure definitions used by all the newlib | ||||
| dnl configure.in files. | ||||
|  | ||||
| dnl Basic newlib configury.  This calls basic introductory stuff, | ||||
| dnl including AM_INIT_AUTOMAKE and AC_CANONICAL_HOST.  It also runs | ||||
| dnl configure.host.  The only argument is the relative path to the top | ||||
| dnl newlib directory. | ||||
|  | ||||
| AC_DEFUN(NEWLIB_CONFIGURE, | ||||
| [ | ||||
| dnl Default to --enable-multilib | ||||
| AC_ARG_ENABLE(multilib, | ||||
| [  --enable-multilib         build many library versions (default)], | ||||
| [case "${enableval}" in | ||||
|   yes) multilib=yes ;; | ||||
|   no)  multilib=no ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for multilib option) ;; | ||||
|  esac], [multilib=yes])dnl | ||||
|  | ||||
| dnl Support --enable-target-optspace | ||||
| AC_ARG_ENABLE(target-optspace, | ||||
| [  --enable-target-optspace  optimize for space], | ||||
| [case "${enableval}" in | ||||
|   yes) target_optspace=yes ;; | ||||
|   no)  target_optspace=no ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for target-optspace option) ;; | ||||
|  esac], [target_optspace=])dnl | ||||
|  | ||||
| dnl Support --enable-newlib-mb | ||||
| AC_ARG_ENABLE(newlib-mb, | ||||
| [  --enable-newlib-mb        enable multibyte support], | ||||
| [case "${enableval}" in | ||||
|   yes) newlib_mb=yes ;; | ||||
|   no)  newlib_mb=no ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for newlib-mb option) ;; | ||||
|  esac], [newlib_mb=no])dnl | ||||
|  | ||||
| dnl We may get other options which we don't document: | ||||
| dnl --with-target-subdir, --with-multisrctop, --with-multisubdir | ||||
|  | ||||
| test -z "[$]{with_target_subdir}" && with_target_subdir=. | ||||
|  | ||||
| if test "[$]{srcdir}" = "."; then | ||||
|   if test "[$]{with_target_subdir}" != "."; then | ||||
|     newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1" | ||||
|   else | ||||
|     newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}$1" | ||||
|   fi | ||||
| else | ||||
|   newlib_basedir="[$]{srcdir}/$1" | ||||
| fi | ||||
| AC_SUBST(newlib_basedir) | ||||
|  | ||||
| AC_CANONICAL_HOST | ||||
|  | ||||
| AM_INIT_AUTOMAKE(newlib, 1.8.2) | ||||
|  | ||||
| # FIXME: We temporarily define our own version of AC_PROG_CC.  This is | ||||
| # copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS.  We | ||||
| # are probably using a cross compiler, which will not be able to fully | ||||
| # link an executable.  This should really be fixed in autoconf | ||||
| # itself. | ||||
|  | ||||
| AC_DEFUN(LIB_AC_PROG_CC, | ||||
| [AC_BEFORE([$0], [AC_PROG_CPP])dnl | ||||
| AC_CHECK_PROG(CC, gcc, gcc) | ||||
| if test -z "$CC"; then | ||||
|   AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc) | ||||
|   test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) | ||||
| fi | ||||
|  | ||||
| AC_PROG_CC_GNU | ||||
|  | ||||
| if test $ac_cv_prog_gcc = yes; then | ||||
|   GCC=yes | ||||
| dnl Check whether -g works, even if CFLAGS is set, in case the package | ||||
| dnl plays around with CFLAGS (such as to build both debugging and | ||||
| dnl normal versions of a library), tasteless as that idea is. | ||||
|   ac_test_CFLAGS="${CFLAGS+set}" | ||||
|   ac_save_CFLAGS="$CFLAGS" | ||||
|   CFLAGS= | ||||
|   AC_PROG_CC_G | ||||
|   if test "$ac_test_CFLAGS" = set; then | ||||
|     CFLAGS="$ac_save_CFLAGS" | ||||
|   elif test $ac_cv_prog_cc_g = yes; then | ||||
|     CFLAGS="-g -O2" | ||||
|   else | ||||
|     CFLAGS="-O2" | ||||
|   fi | ||||
| else | ||||
|   GCC= | ||||
|   test "${CFLAGS+set}" = set || CFLAGS="-g" | ||||
| fi | ||||
| ]) | ||||
|  | ||||
| LIB_AC_PROG_CC | ||||
|  | ||||
| # AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD).  If we don't | ||||
| # run it explicitly here, it will be run implicitly before | ||||
| # NEWLIB_CONFIGURE, which doesn't work because that means that it will | ||||
| # be run before AC_CANONICAL_HOST. | ||||
| AC_CANONICAL_BUILD | ||||
|  | ||||
| AC_CHECK_TOOL(AS, as) | ||||
| AC_CHECK_TOOL(AR, ar) | ||||
| AC_CHECK_TOOL(RANLIB, ranlib, :) | ||||
|  | ||||
| AC_PROG_INSTALL | ||||
|  | ||||
| AM_MAINTAINER_MODE | ||||
|  | ||||
| # We need AC_EXEEXT to keep automake happy in cygnus mode.  However, | ||||
| # at least currently, we never actually build a program, so we never | ||||
| # need to use $(EXEEXT).  Moreover, the test for EXEEXT normally | ||||
| # fails, because we are probably configuring with a cross compiler | ||||
| # which can't create executables.  So we include AC_EXEEXT to keep | ||||
| # automake happy, but we don't execute it, since we don't care about | ||||
| # the result. | ||||
| if false; then | ||||
|   AC_EXEEXT | ||||
| fi | ||||
|  | ||||
| . [$]{newlib_basedir}/configure.host | ||||
|  | ||||
| case [$]{newlib_basedir} in | ||||
| /* | [A-Za-z]:[/\\]*) newlib_flagbasedir=[$]{newlib_basedir} ;; | ||||
| *) newlib_flagbasedir='[$](top_builddir)/'[$]{newlib_basedir} ;; | ||||
| esac | ||||
|  | ||||
| newlib_cflags="[$]{newlib_cflags} -I"'[$](top_builddir)'"/$1/targ-include -I[$]{newlib_flagbasedir}/libc/include" | ||||
| case "${host}" in | ||||
|   *-*-cygwin*) | ||||
|     newlib_cflags="[$]{newlib_cflags} -I[$]{newlib_flagbasedir}/../winsup/cygwin/include  -I[$]{newlib_flagbasedir}/../winsup/w32api/include" | ||||
|     ;; | ||||
| esac | ||||
|  | ||||
| newlib_cflags="[$]{newlib_cflags} -fno-builtin" | ||||
|  | ||||
| NEWLIB_CFLAGS=${newlib_cflags} | ||||
| AC_SUBST(NEWLIB_CFLAGS) | ||||
|  | ||||
| AC_SUBST(machine_dir) | ||||
| AC_SUBST(sys_dir) | ||||
| ]) | ||||
|  | ||||
| # Do all the work for Automake.  This macro actually does too much -- | ||||
| # some checks are only needed if your package does certain things. | ||||
| # But this isn't really a big deal. | ||||
|  | ||||
| # serial 1 | ||||
|  | ||||
| dnl Usage: | ||||
| dnl AM_INIT_AUTOMAKE(package,version, [no-define]) | ||||
|  | ||||
| AC_DEFUN(AM_INIT_AUTOMAKE, | ||||
| [AC_REQUIRE([AC_PROG_INSTALL]) | ||||
| PACKAGE=[$1] | ||||
| AC_SUBST(PACKAGE) | ||||
| VERSION=[$2] | ||||
| AC_SUBST(VERSION) | ||||
| dnl test to see if srcdir already configured | ||||
| if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then | ||||
|   AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) | ||||
| fi | ||||
| ifelse([$3],, | ||||
| AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) | ||||
| AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) | ||||
| AC_REQUIRE([AM_SANITY_CHECK]) | ||||
| AC_REQUIRE([AC_ARG_PROGRAM]) | ||||
| dnl FIXME This is truly gross. | ||||
| missing_dir=`cd $ac_aux_dir && pwd` | ||||
| AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) | ||||
| AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) | ||||
| AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) | ||||
| AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) | ||||
| AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) | ||||
| AC_REQUIRE([AC_PROG_MAKE_SET])]) | ||||
|  | ||||
| # | ||||
| # Check to make sure that the build environment is sane. | ||||
| # | ||||
|  | ||||
| AC_DEFUN(AM_SANITY_CHECK, | ||||
| [AC_MSG_CHECKING([whether build environment is sane]) | ||||
| # Just in case | ||||
| sleep 1 | ||||
| echo timestamp > conftestfile | ||||
| # Do `set' in a subshell so we don't clobber the current shell's | ||||
| # arguments.  Must try -L first in case configure is actually a | ||||
| # symlink; some systems play weird games with the mod time of symlinks | ||||
| # (eg FreeBSD returns the mod time of the symlink's containing | ||||
| # directory). | ||||
| if ( | ||||
|    set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` | ||||
|    if test "[$]*" = "X"; then | ||||
|       # -L didn't work. | ||||
|       set X `ls -t $srcdir/configure conftestfile` | ||||
|    fi | ||||
|    if test "[$]*" != "X $srcdir/configure conftestfile" \ | ||||
|       && test "[$]*" != "X conftestfile $srcdir/configure"; then | ||||
|  | ||||
|       # If neither matched, then we have a broken ls.  This can happen | ||||
|       # if, for instance, CONFIG_SHELL is bash and it inherits a | ||||
|       # broken ls alias from the environment.  This has actually | ||||
|       # happened.  Such a system could not be considered "sane". | ||||
|       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken | ||||
| alias in your environment]) | ||||
|    fi | ||||
|  | ||||
|    test "[$]2" = conftestfile | ||||
|    ) | ||||
| then | ||||
|    # Ok. | ||||
|    : | ||||
| else | ||||
|    AC_MSG_ERROR([newly created file is older than distributed files! | ||||
| Check your system clock]) | ||||
| fi | ||||
| rm -f conftest* | ||||
| AC_MSG_RESULT(yes)]) | ||||
|  | ||||
| dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) | ||||
| dnl The program must properly implement --version. | ||||
| AC_DEFUN(AM_MISSING_PROG, | ||||
| [AC_MSG_CHECKING(for working $2) | ||||
| # Run test in a subshell; some versions of sh will print an error if | ||||
| # an executable is not found, even if stderr is redirected. | ||||
| # Redirect stdin to placate older versions of autoconf.  Sigh. | ||||
| if ($2 --version) < /dev/null > /dev/null 2>&1; then | ||||
|    $1=$2 | ||||
|    AC_MSG_RESULT(found) | ||||
| else | ||||
|    $1="$3/missing $2" | ||||
|    AC_MSG_RESULT(missing) | ||||
| fi | ||||
| AC_SUBST($1)]) | ||||
|  | ||||
| # Add --enable-maintainer-mode option to configure. | ||||
| # From Jim Meyering | ||||
|  | ||||
| # serial 1 | ||||
|  | ||||
| AC_DEFUN(AM_MAINTAINER_MODE, | ||||
| [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) | ||||
|   dnl maintainer-mode is disabled by default | ||||
|   AC_ARG_ENABLE(maintainer-mode, | ||||
| [  --enable-maintainer-mode enable make rules and dependencies not useful | ||||
|                           (and sometimes confusing) to the casual installer], | ||||
|       USE_MAINTAINER_MODE=$enableval, | ||||
|       USE_MAINTAINER_MODE=no) | ||||
|   AC_MSG_RESULT($USE_MAINTAINER_MODE) | ||||
|   AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) | ||||
|   MAINT=$MAINTAINER_MODE_TRUE | ||||
|   AC_SUBST(MAINT)dnl | ||||
| ] | ||||
| ) | ||||
|  | ||||
| # Define a conditional. | ||||
|  | ||||
| AC_DEFUN(AM_CONDITIONAL, | ||||
| [AC_SUBST($1_TRUE) | ||||
| AC_SUBST($1_FALSE) | ||||
| if $2; then | ||||
|   $1_TRUE= | ||||
|   $1_FALSE='#' | ||||
| else | ||||
|   $1_TRUE='#' | ||||
|   $1_FALSE= | ||||
| fi]) | ||||
|  | ||||
							
								
								
									
										1687
									
								
								newlib/libc/machine/xscale/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										1687
									
								
								newlib/libc/machine/xscale/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12
									
								
								newlib/libc/machine/xscale/configure.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								newlib/libc/machine/xscale/configure.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| dnl This is the newlib/libc/machine/strongarm2 configure.in file. | ||||
| dnl Process this file with autoconf to produce a configure script. | ||||
|  | ||||
| AC_PREREQ(2.5) | ||||
| AC_INIT(Makefile.am) | ||||
|  | ||||
| dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.  | ||||
| AC_CONFIG_AUX_DIR(../../../..) | ||||
|  | ||||
| NEWLIB_CONFIGURE(../../..) | ||||
|  | ||||
| AC_OUTPUT(Makefile) | ||||
							
								
								
									
										102
									
								
								newlib/libc/machine/xscale/memchr.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								newlib/libc/machine/xscale/memchr.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/memchr.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| void * | ||||
| memchr (const void *start, int c, size_t len) | ||||
| { | ||||
|   const char *str = start; | ||||
|  | ||||
|   if (len == 0) | ||||
|     return 0; | ||||
|  | ||||
|   asm (PRELOADSTR ("%0") : : "r" (start)); | ||||
|  | ||||
|   c &= 0xff; | ||||
|  | ||||
| #ifndef __OPTIMIZE_SIZE__ | ||||
|   /* Skip unaligned part.  */ | ||||
|   if ((long)str & 3) | ||||
|     { | ||||
|       str--; | ||||
|       do | ||||
| 	{ | ||||
| 	  if (*++str == c) | ||||
| 	    return (void *)str; | ||||
| 	} | ||||
|       while (((long)str & 3) != 0 && --len > 0); | ||||
|     } | ||||
|  | ||||
|   if (len > 3) | ||||
|     { | ||||
|       unsigned int c2 = c + (c << 8); | ||||
|       c2 += c2 << 16; | ||||
|  | ||||
|       /* Load two constants: | ||||
|          R7 = 0xfefefeff [ == ~(0x80808080 << 1) ] | ||||
|          R6 = 0x80808080  */ | ||||
|  | ||||
|       asm ( | ||||
|        "mov	r6, #0x80 | ||||
| 	add	r6, r6, #0x8000 | ||||
| 	add	r6, r6, r6, lsl #16 | ||||
| 	mvn	r7, r6, lsl #1 | ||||
|  | ||||
| 0: | ||||
| 	cmp	%1, #0x7 | ||||
| 	bls	1f | ||||
|  | ||||
| 	ldmia	%0!, { r3, r9 } | ||||
| "	PRELOADSTR ("%0") " | ||||
| 	sub	%1, %1, #8 | ||||
| 	eor	r3, r3, %2 | ||||
| 	eor	r9, r9, %2 | ||||
| 	add	r2, r3, r7 | ||||
| 	add	r8, r9, r7 | ||||
| 	bic	r2, r2, r3 | ||||
| 	bic	r8, r8,	r9 | ||||
| 	and	r1, r2, r6 | ||||
| 	and	r9, r8, r6 | ||||
| 	orrs	r1, r1, r9 | ||||
| 	beq	0b | ||||
|  | ||||
| 	add	%1, %1, #8 | ||||
| 	sub	%0, %0, #8 | ||||
| 1: | ||||
| 	cmp	%1, #0x3 | ||||
| 	bls	2f | ||||
|  | ||||
| 	ldr	r3, [%0], #4 | ||||
| "	PRELOADSTR ("%0") " | ||||
| 	sub	%1, %1, #4 | ||||
| 	eor	r3, r3, %2 | ||||
| 	add	r2, r3, r7 | ||||
| 	bic	r2, r2, r3 | ||||
| 	ands	r1, r2, r6 | ||||
| 	beq	1b | ||||
|  | ||||
| 	sub	%0, %0, #4 | ||||
| 	add	%1, %1, #4 | ||||
| 2: | ||||
| " | ||||
|        : "=&r" (str), "=&r" (len) | ||||
|        : "r" (c2), "0" (str), "1" (len) | ||||
|        : "r1", "r2", "r3", "r6", "r7", "r8", "r9", "cc"); | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|   while (len-- > 0) | ||||
|     {  | ||||
|       if (*str == c) | ||||
|         return (void *)str; | ||||
|       str++; | ||||
|     }  | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										109
									
								
								newlib/libc/machine/xscale/memcmp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								newlib/libc/machine/xscale/memcmp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/memcmp.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| int | ||||
| memcmp (const void *s1, const void *s2, size_t len) | ||||
| { | ||||
|   int result; | ||||
|   asm ( | ||||
| #ifndef __OPTIMIZE_SIZE__  | ||||
| "		 | ||||
| 	cmp	%2, #0x3 | ||||
| 	bls	6f | ||||
| 	and	r2, %0, #0x3 | ||||
| 	and	r3, %1, #0x3 | ||||
| 	cmp	r2, r3 | ||||
| 	bne	6f | ||||
| 	mov	lr, %0 | ||||
| 	mov	r4, %1 | ||||
| 	cmp	r2, #0x0 | ||||
| 	beq	3f | ||||
| 	b	1f | ||||
| 0: | ||||
| 	ldrb	r2, [lr], #1	@ zero_extendqisi2 | ||||
| "	PRELOADSTR("lr") " | ||||
| 	ldrb	r3, [r4], #1	@ zero_extendqisi2 | ||||
| "	PRELOADSTR("r4") " | ||||
| 	cmp	r2, r3 | ||||
| 	bne	5f | ||||
| 	tst	lr, #0x3 | ||||
| 	beq	3f | ||||
| 1: | ||||
| 	sub	%2, %2, #1 | ||||
| 	cmn	%2, #0x1 | ||||
| 	bne	0b | ||||
| 	b	4f | ||||
|  | ||||
| 0: | ||||
| 	cmp	%2, #0x7 | ||||
| 	bls	3f | ||||
| 	ldmia	lr,{r2, r3} | ||||
| 	ldmia	r4,{r5, r6} | ||||
| 	sub	%2, %2, #0x4 | ||||
| 	cmp	r2, r5 | ||||
| 	bne	1f | ||||
| 	sub	%2, %2, #0x4 | ||||
| 	add	lr, lr, #0x4 | ||||
| 	add	r4, r4, #0x4 | ||||
| 	cmp	r3, r6 | ||||
| 	beq	0b | ||||
| 1: | ||||
| 	add	%2, %2, #0x4 | ||||
| 	sub	%0, lr, #0x4 | ||||
| 	sub	%1, r4, #0x4 | ||||
| 	b	6f | ||||
| 3: | ||||
| 	cmp	%2, #0x3 | ||||
| 	bls	1f | ||||
| 	ldr	r2, [lr], #4 | ||||
| 	ldr	r3, [r4], #4 | ||||
| 	sub	%2, %2, #4 | ||||
| 	cmp	r2, r3 | ||||
| 	bne	1f | ||||
| 0: | ||||
| 	cmp	%2, #0x3 | ||||
| 	bls	1f | ||||
| 	ldr	r2, [lr], #4 | ||||
| "	PRELOADSTR("lr") " | ||||
| 	ldr	r3, [r4], #4 | ||||
| "	PRELOADSTR("r4") " | ||||
| 	sub	%2, %2, #4 | ||||
| 	cmp	r2, r3 | ||||
| 	beq	0b | ||||
| 1: | ||||
| 	sub	%0, lr, #0x4 | ||||
| 	sub	%1, r4, #0x4 | ||||
| 	add	%2, %2, #4 | ||||
| " | ||||
| #endif /* !__OPTIMIZE_SIZE__ */ | ||||
| " | ||||
| 6:				 | ||||
| 	sub	%2, %2, #1 | ||||
| 	cmn	%2, #0x1 | ||||
| 	beq	4f | ||||
| 0: | ||||
| 	ldrb	r2, [%0], #1	@ zero_extendqisi2 | ||||
| "	PRELOADSTR("%0") " | ||||
| 	ldrb	r3, [%1], #1	@ zero_extendqisi2 | ||||
| "	PRELOADSTR("%1") " | ||||
| 	cmp	r2, r3 | ||||
| 	bne	5f | ||||
| 	sub	%2, %2, #1 | ||||
| 	cmn	%2, #0x1 | ||||
| 	bne	0b | ||||
| 4:		 | ||||
| 	mov	r3, r2 | ||||
| 5:		 | ||||
| 	rsb	%0, r3, r2" | ||||
|        : "=r" (result), "=&r" (s2), "=&r" (len) | ||||
|        : "0" (s1), "1" (s2), "2" (len) | ||||
|        : "r2", "r3", "r4", "r5", "r6", "cc"); | ||||
|   return result; | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										101
									
								
								newlib/libc/machine/xscale/memcpy.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								newlib/libc/machine/xscale/memcpy.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/memcpy.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| void * | ||||
| memcpy (void *dst0, const void *src0, size_t len) | ||||
| { | ||||
|   int dummy; | ||||
|   asm volatile ( | ||||
| #ifndef __OPTIMIZE_SIZE__ | ||||
|        "cmp	%2, #0x3 | ||||
| 	bls	3f | ||||
| 	and	lr, %1, #0x3 | ||||
| 	and	r3, %0, #0x3 | ||||
| 	cmp	lr, r3 | ||||
| 	bne	3f | ||||
| 	cmp	lr, #0x0 | ||||
| 	beq	2f | ||||
| 	b	1f | ||||
| 0: | ||||
| 	ldrb	r3, [%1], #1 | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
| 	tst	%1, #0x3 | ||||
| 	strb	r3, [%0], #1 | ||||
| 	beq	3f | ||||
| 1: | ||||
| 	sub	%2, %2, #1 | ||||
| 	cmn	%2, #1 | ||||
| 	bne	0b | ||||
| 2: | ||||
| 	cmp	%2, #0xf | ||||
| 	bls	1f | ||||
| 0: | ||||
| 	ldmia	%1!, { r3, r4, r5, lr } | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
|  | ||||
| 	sub	%2, %2, #16 | ||||
| 	cmp	%2, #0xf | ||||
| 	stmia	%0!, { r3, r4, r5, lr } | ||||
| 	bhi	0b | ||||
| 1: | ||||
| 	cmp	%2, #0x7 | ||||
| 	bls	1f | ||||
| 0: | ||||
| 	ldmia	%1!, { r3, r4 } | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
|  | ||||
| 	sub	%2, %2, #8 | ||||
| 	cmp	%2, #0x7 | ||||
| 	stmia	%0!, { r3, r4 } | ||||
| 	bhi	0b | ||||
| 1: | ||||
| 	cmp	%2, #0x3 | ||||
| 	bls	3f | ||||
| 0: | ||||
| 	sub	%2, %2, #4 | ||||
| 	ldr	r3, [%1], #4 | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
|  | ||||
| 	cmp	%2, #0x3 | ||||
| 	str	r3, [%0], #4 | ||||
| 	bhi	0b | ||||
| " | ||||
| #endif /* !__OPTIMIZE_SIZE__ */ | ||||
| " | ||||
| 3: | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
| 	sub	%2, %2, #1 | ||||
| 	cmn	%2, #1 | ||||
| 	beq	1f | ||||
| 0: | ||||
| 	sub	%2, %2, #1 | ||||
| 	ldrb	r3, [%1], #1 | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
| 	cmn	%2, #1 | ||||
| 	strb	r3, [%0], #1 | ||||
| 	bne	0b | ||||
| 1:" | ||||
|        : "=&r" (dummy), "=&r" (src0), "=&r" (len) | ||||
|        : "0" (dst0), "1" (src0), "2" (len) | ||||
|        : "memory", "lr", "r3", "r4", "r5", "cc"); | ||||
|   return dst0; | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										122
									
								
								newlib/libc/machine/xscale/memmove.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								newlib/libc/machine/xscale/memmove.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/memmove.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| static inline void * | ||||
| do_memcpy (void *dst0, const void *src0, size_t len) | ||||
| { | ||||
|   int dummy; | ||||
|   asm volatile ( | ||||
| #ifndef __OPTIMIZE_SIZE__ | ||||
|        "cmp	%2, #0x3 | ||||
| 	bls	3f | ||||
| 	and	lr, %1, #0x3 | ||||
| 	and	r3, %0, #0x3 | ||||
| 	cmp	lr, r3 | ||||
| 	bne	3f | ||||
| 	cmp	lr, #0x0 | ||||
| 	beq	2f | ||||
| 	b	1f | ||||
| 0: | ||||
| 	ldrb	r3, [%1], #1 | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
| 	tst	%1, #0x3 | ||||
| 	strb	r3, [%0], #1 | ||||
| 	beq	3f | ||||
| 1: | ||||
| 	sub	%2, %2, #1 | ||||
| 	cmn	%2, #1 | ||||
| 	bne	0b | ||||
| 2: | ||||
| 	cmp	%2, #0xf | ||||
| 	bls	1f | ||||
| 0: | ||||
| 	ldmia	%1!, { r3, r4, r5, lr } | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
|  | ||||
| 	sub	%2, %2, #16 | ||||
| 	cmp	%2, #0xf | ||||
| 	stmia	%0!, { r3, r4, r5, lr } | ||||
| 	bhi	0b | ||||
| 1: | ||||
| 	cmp	%2, #0x7 | ||||
| 	bls	1f | ||||
| 0: | ||||
| 	ldmia	%1!, { r3, r4 } | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
|  | ||||
| 	sub	%2, %2, #8 | ||||
| 	cmp	%2, #0x7 | ||||
| 	stmia	%0!, { r3, r4 } | ||||
| 	bhi	0b | ||||
| 1: | ||||
| 	cmp	%2, #0x3 | ||||
| 	bls	3f | ||||
| 0: | ||||
| 	sub	%2, %2, #4 | ||||
| 	ldr	r3, [%1], #4 | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
|  | ||||
| 	cmp	%2, #0x3 | ||||
| 	str	r3, [%0], #4 | ||||
| 	bhi	0b | ||||
| " | ||||
| #endif /* !__OPTIMIZE_SIZE__ */ | ||||
| " | ||||
| 3: | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
| 	sub	%2, %2, #1 | ||||
| 	cmn	%2, #1 | ||||
| 	beq	1f | ||||
| 0: | ||||
| 	sub	%2, %2, #1 | ||||
| 	ldrb	r3, [%1], #1 | ||||
| " | ||||
| 	PRELOADSTR ("%1") | ||||
| " | ||||
| 	cmn	%2, #1 | ||||
| 	strb	r3, [%0], #1 | ||||
| 	bne	0b | ||||
| 1:" | ||||
|        : "=&r" (dummy), "=&r" (src0), "=&r" (len) | ||||
|        : "0" (dst0), "1" (src0), "2" (len) | ||||
|        : "memory", "lr", "r3", "r4", "r5", "cc"); | ||||
|   return dst0; | ||||
| } | ||||
|  | ||||
| void * | ||||
| memmove (void *dst, const void *src, size_t len) | ||||
| { | ||||
|   char *d = dst; | ||||
|   const char *s = src; | ||||
|  | ||||
|   if (s < d && d < s + len) | ||||
|     { | ||||
|       /* Destructive overlap...have to copy backwards.  */ | ||||
|       s += len; | ||||
|       d += len; | ||||
|  | ||||
|       while (len--) | ||||
| 	*--d = *--s; | ||||
|  | ||||
|       return dst; | ||||
|     } | ||||
|   else | ||||
|     return do_memcpy (dst, src, len); | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										80
									
								
								newlib/libc/machine/xscale/memset.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								newlib/libc/machine/xscale/memset.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/memset.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| void * | ||||
| memset (void *dst, int c, size_t len) | ||||
| { | ||||
|   int dummy; | ||||
|   asm volatile ("tst	%0, #0x3" | ||||
| #ifndef __OPTIMIZE_SIZE__ | ||||
| " | ||||
| 	beq	1f | ||||
| 	b	2f | ||||
| 0: | ||||
| 	strb	%1, [%0], #1 | ||||
| 	tst	%0, #0x3 | ||||
| 	beq	1f | ||||
| 2: | ||||
| 	movs	r3, %2 | ||||
| 	sub	%2, %2, #1 | ||||
| 	bne	0b | ||||
| 1: | ||||
| 	cmp	%2, #0x3 | ||||
| 	bls	2f | ||||
| 	and	%1, %1, #0xff | ||||
| 	orr	lr, %1, %1, asl #8 | ||||
| 	cmp	%2, #0xf | ||||
| 	orr	lr, lr, lr, asl #16 | ||||
| 	bls	1f | ||||
| 	mov	r3, lr | ||||
| 	mov	r4, lr | ||||
| 	mov	r5, lr | ||||
| 0: | ||||
| 	sub	%2, %2, #16 | ||||
| 	stmia	%0!, { r3, r4, r5, lr } | ||||
| 	cmp	%2, #0xf | ||||
| 	bhi	0b | ||||
| 1: | ||||
| 	cmp	%2, #0x7 | ||||
| 	bls	1f | ||||
| 	mov	r3, lr | ||||
| 0: | ||||
| 	sub	%2, %2, #8 | ||||
| 	stmia	%0!, { r3, lr } | ||||
| 	cmp	%2, #0x7 | ||||
| 	bhi	0b | ||||
| 1: | ||||
| 	cmp	%2, #0x3 | ||||
| 	bls	2f | ||||
| 0: | ||||
| 	sub	%2, %2, #4 | ||||
| 	str	lr, [%0], #4 | ||||
| 	cmp	%2, #0x3 | ||||
| 	bhi	0b | ||||
| " | ||||
| #endif /* !__OPTIMIZE_SIZE__ */ | ||||
| " | ||||
| 2: | ||||
| 	movs	r3, %2 | ||||
| 	sub	%2, %2, #1 | ||||
| 	beq	1f | ||||
| 0: | ||||
| 	movs	r3, %2 | ||||
| 	sub	%2, %2, #1 | ||||
| 	strb	%1, [%0], #1 | ||||
| 	bne	0b | ||||
| 1:" | ||||
|  | ||||
|        : "=&r" (dummy), "=&r" (c), "=&r" (len) | ||||
|        : "0" (dst), "1" (c), "2" (len) | ||||
|        : "memory", "r3", "r4", "r5", "lr"); | ||||
|   return dst; | ||||
| } | ||||
|   | ||||
| #endif | ||||
							
								
								
									
										73
									
								
								newlib/libc/machine/xscale/strchr.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								newlib/libc/machine/xscale/strchr.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/strchr.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| char * | ||||
| strchr (const char *s, int c) | ||||
| { | ||||
|   unsigned int c2; | ||||
|   asm (PRELOADSTR ("%0") : : "r" (s)); | ||||
|  | ||||
|   c &= 0xff; | ||||
|  | ||||
| #ifndef __OPTIMIZE_SIZE__ | ||||
|   /* Skip unaligned part.  */ | ||||
|   if ((long)s & 3) | ||||
|     { | ||||
|       s--; | ||||
|       do | ||||
| 	{ | ||||
| 	  int c2 = *++s; | ||||
| 	  if (c2 == c) | ||||
| 	    return (char *)s; | ||||
| 	  if (c2 == '\0') | ||||
| 	    return 0; | ||||
| 	} | ||||
|       while (((long)s & 3) != 0); | ||||
|     } | ||||
|  | ||||
|   c2 = c + (c << 8); | ||||
|   c2 += c2 << 16; | ||||
|  | ||||
|   /* Load two constants: | ||||
|      R6 = 0xfefefeff [ == ~(0x80808080 << 1) ] | ||||
|      R5 = 0x80808080  */ | ||||
|  | ||||
|   asm (PRELOADSTR ("%0") " | ||||
| 	mov	r5, #0x80 | ||||
| 	add	r5, r5, #0x8000 | ||||
| 	add	r5, r5, r5, lsl #16 | ||||
| 	mvn	r6, r5, lsl #1 | ||||
|  | ||||
| 	sub	%0, %0, #4 | ||||
| 0: | ||||
| 	ldr	r1, [%0, #4]! | ||||
| "	PRELOADSTR ("%0") " | ||||
| 	add	r3, r1, r6 | ||||
| 	bic	r3, r3, r1 | ||||
| 	ands	r2, r3, r5 | ||||
| 	bne	1f | ||||
| 	eor	r2, r1, %1 | ||||
| 	add	r3, r2, r6 | ||||
| 	bic	r3, r3, r2 | ||||
| 	ands	r1, r3, r5 | ||||
| 	beq	0b | ||||
| 1:" | ||||
|        : "=&r" (s) | ||||
|        : "r" (c2), "0" (s) | ||||
|        : "r2", "r3", "r5", "r6", "cc"); | ||||
| #endif | ||||
|  | ||||
|   while (*s && *s != c) | ||||
|     s++; | ||||
|   if (*s == c) | ||||
|     return (char *)s; | ||||
|   return NULL; | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										107
									
								
								newlib/libc/machine/xscale/strcmp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								newlib/libc/machine/xscale/strcmp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,107 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/strcmp.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| int | ||||
| strcmp (const char *s1, const char *s2) | ||||
| { | ||||
|   asm (PRELOADSTR ("%0") : : "r" (s1)); | ||||
|   asm (PRELOADSTR ("%0") : : "r" (s2)); | ||||
|  | ||||
| #ifndef __OPTIMIZE_SIZE__ | ||||
|   if (((long)s1 & 3) == ((long)s2 & 3)) | ||||
|     { | ||||
|       int result; | ||||
|  | ||||
|       /* Skip unaligned part.  */ | ||||
|       while ((long)s1 & 3) | ||||
| 	{ | ||||
| 	  if (*s1 == '\0' || *s1 != *s2) | ||||
| 	    goto out; | ||||
| 	  s1++; | ||||
| 	  s2++; | ||||
| 	} | ||||
|  | ||||
|   /* Load two constants: | ||||
|      lr = 0xfefefeff [ == ~(0x80808080 << 1) ] | ||||
|      ip = 0x80808080  */ | ||||
|  | ||||
|       asm ( | ||||
|        "ldr	r2, [%1, #0] | ||||
| 	ldr	r3, [%2, #0] | ||||
| 	cmp	r2, r3 | ||||
| 	bne	2f | ||||
|  | ||||
| 	mov	ip, #0x80 | ||||
| 	add	ip, ip, #0x8000 | ||||
| 	add	ip, ip, ip, lsl #16 | ||||
| 	mvn	lr, ip, lsl #1 | ||||
|  | ||||
| 0: | ||||
| 	ldr	r2, [%1, #0] | ||||
| 	add	r3, r2, lr | ||||
| 	bic	r3, r3, r2 | ||||
| 	tst	r3, ip | ||||
| 	beq	1f | ||||
| 	mov	%0, #0x0 | ||||
| 	b	3f | ||||
| 1: | ||||
| 	ldr	r2, [%1, #4]! | ||||
| 	ldr	r3, [%2, #4]! | ||||
| "	PRELOADSTR("%1") " | ||||
| "	PRELOADSTR("%2") " | ||||
| 	cmp	r2, r3 | ||||
| 	beq	0b" | ||||
|  | ||||
|        /* The following part could be done in a C loop as well, but it needs | ||||
| 	  to be assembler to save some cycles in the case where the optimized | ||||
| 	  loop above finds the strings to be equal.  */ | ||||
| " | ||||
| 2: | ||||
| 	ldrb	r2, [%1, #0] | ||||
| "	PRELOADSTR("%1") " | ||||
| "	PRELOADSTR("%2") " | ||||
| 	cmp	r2, #0x0 | ||||
| 	beq	1f | ||||
| 	ldrb	r3, [%2, #0] | ||||
| 	cmp	r2, r3 | ||||
| 	bne	1f | ||||
| 0: | ||||
| 	ldrb	r3, [%1, #1]! | ||||
| 	add	%2, %2, #1 | ||||
| 	ands	ip, r3, #0xff | ||||
| 	beq	1f | ||||
| 	ldrb	r3, [%2] | ||||
| 	cmp	ip, r3 | ||||
| 	beq	0b | ||||
| 1: | ||||
| 	ldrb	lr, [%1, #0] | ||||
| 	ldrb	ip, [%2, #0] | ||||
| 	rsb	%0, ip, lr | ||||
| 3: | ||||
| " | ||||
|  | ||||
|        : "=r" (result), "=&r" (s1), "=&r" (s2) | ||||
|        : "1" (s1), "2" (s2) | ||||
|        : "lr", "ip", "r2", "r3", "cc"); | ||||
|       return result; | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|   while (*s1 != '\0' && *s1 == *s2) | ||||
|     { | ||||
|       asm (PRELOADSTR("%0") : : "r" (s1)); | ||||
|       asm (PRELOADSTR("%0") : : "r" (s2)); | ||||
|       s1++; | ||||
|       s2++; | ||||
|     } | ||||
|  out: | ||||
|   return (*(unsigned char *) s1) - (*(unsigned char *) s2); | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										62
									
								
								newlib/libc/machine/xscale/strcpy.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								newlib/libc/machine/xscale/strcpy.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| #if defined __thumb__ | ||||
|  | ||||
| #include "../../string/strcpy.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| char * | ||||
| strcpy (char *dest, const char *src) | ||||
| { | ||||
|   char *dest0 = dest; | ||||
|  | ||||
|   asm (PRELOADSTR ("%0") : : "r" (src)); | ||||
|  | ||||
| #ifndef __OPTIMIZE_SIZE__ | ||||
|   if (((long)src & 3) == ((long)dest & 3)) | ||||
|     { | ||||
|       /* Skip unaligned part.  */ | ||||
|       while ((long)src & 3) | ||||
| 	{ | ||||
| 	  if (! (*dest++ = *src++)) | ||||
| 	    return dest0; | ||||
| 	} | ||||
|  | ||||
|   /* Load two constants: | ||||
|      R4 = 0xfefefeff [ == ~(0x80808080 << 1) ] | ||||
|      R5 = 0x80808080  */ | ||||
|  | ||||
|   asm ("mov	r5, #0x80 | ||||
| 	ldr	r1, [%1, #0] | ||||
| 	add	r5, r5, #0x8000 | ||||
| 	add	r5, r5, r5, lsl #16 | ||||
| 	mvn	r4, r5, lsl #1 | ||||
|  | ||||
| 	add	r3, r1, r5 | ||||
| 	bic	r3, r3, r1 | ||||
| 	ands	r2, r3, r4 | ||||
| 	bne	1f | ||||
| 0: | ||||
| 	ldr	r3, [%1, #0] | ||||
| 	ldr	r1, [%1, #4]! | ||||
| "	PRELOADSTR("%1") " | ||||
| 	str	r3, [%0], #4 | ||||
| 	add	r2, r1, r4 | ||||
| 	bic	r2, r2, r1 | ||||
| 	ands	r3, r2, r5 | ||||
| 	beq	0b | ||||
| 1:" | ||||
|        : "=&r" (dest), "=&r" (src) | ||||
|        : "0" (dest), "1" (src) | ||||
|        : "r1", "r2", "r3", "r4", "r5", "memory", "cc"); | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|   while (*dest++ = *src++) | ||||
|     asm (PRELOADSTR ("%0") : : "r" (src)); | ||||
|   return dest0; | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										100
									
								
								newlib/libc/machine/xscale/strlen.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								newlib/libc/machine/xscale/strlen.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| #if defined __thumb__ || defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) | ||||
|  | ||||
| #include "../../string/strlen.c" | ||||
|  | ||||
| #else | ||||
|  | ||||
| #include <string.h> | ||||
| #include "xscale.h" | ||||
|  | ||||
| size_t | ||||
| strlen (const char *str) | ||||
| { | ||||
|   _CONST char *start = str; | ||||
|  | ||||
|   /* Skip unaligned part.  */ | ||||
|   if ((long)str & 3) | ||||
|     { | ||||
|       str--; | ||||
|       do | ||||
| 	{ | ||||
| 	  if (*++str == '\0') | ||||
| 	    goto out; | ||||
| 	} | ||||
|       while ((long)str & 3); | ||||
|     } | ||||
|  | ||||
|   /* Load two constants: | ||||
|      R4 = 0xfefefeff [ == ~(0x80808080 << 1) ] | ||||
|      R5 = 0x80808080  */ | ||||
|  | ||||
|   asm ("mov	r5, #0x80 | ||||
| 	add	r5, r5, #0x8000 | ||||
| 	add	r5, r5, r5, lsl #16 | ||||
| 	mvn	r4, r5, lsl #1 | ||||
| " | ||||
|  | ||||
| #if defined __ARM_ARCH_5__ || defined __ARM_ARCH_5T__ || defined __ARM_ARCH_5E__ || defined __ARM_ARCH_5TE__ | ||||
|  | ||||
| "	tst	%0, #0x7 | ||||
| 	ldreqd	r6, [%0] | ||||
| 	beq	1f | ||||
| 	ldr	r2, [%0] | ||||
|         add     r3, r2, r4 | ||||
|         bic     r3, r3, r2 | ||||
|         ands    r2, r3, r5 | ||||
| 	bne	2f | ||||
| 	sub	%0, %0, #4 | ||||
|  | ||||
| 0: | ||||
| 	ldrd	r6, [%0, #8]! | ||||
| " | ||||
| 	PRELOADSTR ("%0") | ||||
| " | ||||
| 1: | ||||
| 	add	r3, r6, r4 | ||||
| 	add	r2, r7, r4 | ||||
| 	bic	r3, r3, r6 | ||||
| 	bic	r2, r2, r7 | ||||
| 	and	r3, r3, r5 | ||||
| 	and	r2, r2, r5 | ||||
| 	orrs	r3, r2, r3 | ||||
| 	beq	0b | ||||
| " | ||||
| #else | ||||
|  | ||||
| "	sub	%0, %0, #4 | ||||
|  | ||||
| 0: | ||||
| 	ldr	r6, [%0, #4]! | ||||
| " | ||||
| 	PRELOADSTR ("%0") | ||||
| " | ||||
| 	add	r3, r6, r4 | ||||
| 	bic	r3, r3, r6 | ||||
| 	ands	r3, r3, r5 | ||||
| 	beq	0b | ||||
| " | ||||
| #endif /* __ARM_ARCH_5[T][E]__ */ | ||||
| " | ||||
| 2: | ||||
| 	ldrb	r3, [%0] | ||||
| 	cmp	r3, #0x0 | ||||
| 	beq	1f | ||||
|  | ||||
| 0: | ||||
| 	ldrb	r3, [%0, #1]! | ||||
| " | ||||
| 	PRELOADSTR ("%0") | ||||
| " | ||||
| 	cmp	r3, #0x0 | ||||
| 	bne	0b | ||||
| 1: | ||||
| " | ||||
|        : "=r" (str) : "0" (str) : "r2", "r3", "r4", "r5", "r6", "r7"); | ||||
|  | ||||
|   out: | ||||
|   return str - start; | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										31
									
								
								newlib/libc/machine/xscale/xscale.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								newlib/libc/machine/xscale/xscale.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| #ifndef __XSCALE_MACH_H__ | ||||
| #define __XSCALE_MACH_H__ | ||||
|  | ||||
| /* These are predefined by new versions of GNU cpp.  */ | ||||
|  | ||||
| #ifndef __USER_LABEL_PREFIX__ | ||||
| #define __USER_LABEL_PREFIX__ _ | ||||
| #endif | ||||
|  | ||||
| #ifndef __REGISTER_PREFIX__ | ||||
| #define __REGISTER_PREFIX__ | ||||
| #endif | ||||
|  | ||||
| /* ANSI concatenation macros.  */ | ||||
|  | ||||
| #define CONCAT1(a, b) CONCAT2(a, b) | ||||
| #define CONCAT2(a, b) a##b | ||||
|  | ||||
| /* Use the right prefix for global labels.  */ | ||||
|  | ||||
| #define SYM(x) CONCAT1(__USER_LABEL_PREFIX__, x) | ||||
|  | ||||
| #ifdef __XSCALE__ | ||||
| #define PRELOAD(X) pld	[X] | ||||
| #define PRELOADSTR(X) "	pld	[" X "]" | ||||
| #else | ||||
| #define PRELOAD(X) | ||||
| #define PRELOADSTR(X) "" | ||||
| #endif /* __XSCALE__ */ | ||||
|  | ||||
| #endif /* !__XSCALE_MACH_H__ */ | ||||
		Reference in New Issue
	
	Block a user