2005-01-27 Hans-Peter Nilsson <hp@axis.com>
* configure.host: Add support for cris-*-* and crisv32-*-*.
        * libc/include/machine/ieeefp.h: Ditto.
        * libc/include/machine/setjmp.h: Ditto.
        * libc/machine/cris/configure.in, libc/machine/cris/Makefile.am,
        libc/machine/cris/libcdtor.c, libc/machine/cris/setjmp.c,
        libc/machine/cris/memmove.c, libc/machine/cris/memcpy.c,
        libc/machine/cris/memset.c, libc/machine/cris/include/pthread.h,
        libc/machine/cris/sys/signal.h, libc/machine/cris/sys/fcntl.h,
        libc/machine/cris/sys/errno.h, libc/machine/cris/aclocal.m4,
        libc/machine/cris/configure, libc/machine/cris/Makefile.in: New
        files.
			
			
This commit is contained in:
		| @@ -1,3 +1,17 @@ | ||||
| 2005-01-27  Hans-Peter Nilsson  <hp@axis.com> | ||||
|  | ||||
| 	* configure.host: Add support for cris-*-* and crisv32-*-*. | ||||
| 	* libc/include/machine/ieeefp.h: Ditto. | ||||
| 	* libc/include/machine/setjmp.h: Ditto. | ||||
| 	* libc/machine/cris/configure.in, libc/machine/cris/Makefile.am, | ||||
| 	libc/machine/cris/libcdtor.c, libc/machine/cris/setjmp.c, | ||||
| 	libc/machine/cris/memmove.c, libc/machine/cris/memcpy.c, | ||||
| 	libc/machine/cris/memset.c, libc/machine/cris/include/pthread.h, | ||||
| 	libc/machine/cris/sys/signal.h, libc/machine/cris/sys/fcntl.h, | ||||
| 	libc/machine/cris/sys/errno.h, libc/machine/cris/aclocal.m4, | ||||
| 	libc/machine/cris/configure, libc/machine/cris/Makefile.in: New | ||||
| 	files. | ||||
|  | ||||
| 2005-01-27  Hans-Peter Nilsson  <hp@axis.com> | ||||
|  | ||||
| 	* testsuite/newlib.string/memmove1.c: New test. | ||||
|   | ||||
| @@ -93,6 +93,9 @@ case "${host_cpu}" in | ||||
|   avr*) | ||||
| 	newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mcall-prologues" | ||||
| 	;; | ||||
|   cris | crisv32) | ||||
| 	machine_dir=cris | ||||
| 	;; | ||||
|   crx*) | ||||
| 	machine_dir=crx | ||||
| 	;; | ||||
| @@ -502,6 +505,10 @@ case "${host}" in | ||||
|   avr*) | ||||
| 	newlib_cflags="${newlib_cflags} -DNO_EXEC -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES" | ||||
| 	;; | ||||
|   cris-*-* | crisv32-*-*) | ||||
| 	newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_GETTIMEOFDAY -D_USE_WRITE" | ||||
| 	syscall_dir=syscalls | ||||
| 	;; | ||||
|   crx-*-*) | ||||
|   	newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DMISSING_SYSCALL_NAMES" | ||||
| 	syscall_dir= | ||||
|   | ||||
| @@ -265,6 +265,10 @@ | ||||
| #endif /* __ARMEL__ */ | ||||
| #endif /* __MAVERICK__ */ | ||||
|  | ||||
| #ifdef __CRIS__ | ||||
| #define __IEEE_LITTLE_ENDIAN | ||||
| #endif | ||||
|  | ||||
| #ifndef __IEEE_BIG_ENDIAN | ||||
| #ifndef __IEEE_LITTLE_ENDIAN | ||||
| #error Endianess not declared!! | ||||
|   | ||||
| @@ -205,6 +205,10 @@ _BEGIN_STD_C | ||||
| #define _JBLEN 8 | ||||
| #endif | ||||
|  | ||||
| #ifdef __CRIS__ | ||||
| #define _JBLEN 18 | ||||
| #endif | ||||
|  | ||||
| #ifdef _JBLEN | ||||
| #ifdef _JBTYPE | ||||
| typedef	_JBTYPE jmp_buf[_JBLEN]; | ||||
|   | ||||
							
								
								
									
										21
									
								
								newlib/libc/machine/cris/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								newlib/libc/machine/cris/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| ## Process this file with automake to generate Makefile.in | ||||
|  | ||||
| AUTOMAKE_OPTIONS = cygnus | ||||
|  | ||||
| INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) | ||||
|  | ||||
| noinst_LIBRARIES = lib.a | ||||
|  | ||||
| # We also make a library with just the useful | ||||
| # machine-but-not-system-specific functions, usable as an add-on | ||||
| # by itself together with e.g. uclibc. | ||||
| toollib_LIBRARIES = libic.a | ||||
|  | ||||
| lib_a_SOURCES = setjmp.c memcpy.c memset.c memmove.c libcdtor.c | ||||
|  | ||||
| libic_a_SOURCES = setjmp.c memcpy.c memset.c memmove.c libcdtor.c | ||||
| tooldir = $(exec_prefix)/$(host_alias) | ||||
| toollibdir = $(tooldir)/lib$(MULTISUBDIR) | ||||
|  | ||||
| ACLOCAL_AMFLAGS = -I ../../.. | ||||
| CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host | ||||
							
								
								
									
										382
									
								
								newlib/libc/machine/cris/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										382
									
								
								newlib/libc/machine/cris/Makefile.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,382 @@ | ||||
| # Makefile.in generated automatically by automake 1.4-p6 from Makefile.am | ||||
|  | ||||
| # Copyright (C) 1994, 1995-8, 1999, 2001 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 = : | ||||
| build_alias = @build_alias@ | ||||
| build_triplet = @build@ | ||||
| host_alias = @host_alias@ | ||||
| host_triplet = @host@ | ||||
| target_alias = @target_alias@ | ||||
| target_triplet = @target@ | ||||
| AR = @AR@ | ||||
| AS = @AS@ | ||||
| CC = @CC@ | ||||
| CPP = @CPP@ | ||||
| EXEEXT = @EXEEXT@ | ||||
| LDFLAGS = @LDFLAGS@ | ||||
| MAINT = @MAINT@ | ||||
| MAKEINFO = @MAKEINFO@ | ||||
| NEWLIB_CFLAGS = @NEWLIB_CFLAGS@ | ||||
| OBJEXT = @OBJEXT@ | ||||
| PACKAGE = @PACKAGE@ | ||||
| RANLIB = @RANLIB@ | ||||
| VERSION = @VERSION@ | ||||
| aext = @aext@ | ||||
| libm_machine_dir = @libm_machine_dir@ | ||||
| machine_dir = @machine_dir@ | ||||
| newlib_basedir = @newlib_basedir@ | ||||
| oext = @oext@ | ||||
| sys_dir = @sys_dir@ | ||||
|  | ||||
| AUTOMAKE_OPTIONS = cygnus | ||||
|  | ||||
| INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) | ||||
|  | ||||
| noinst_LIBRARIES = lib.a | ||||
|  | ||||
| # We also make a library with just the useful | ||||
| # machine-but-not-system-specific functions, usable as an add-on | ||||
| # by itself together with e.g. uclibc. | ||||
| toollib_LIBRARIES = libic.a | ||||
|  | ||||
| lib_a_SOURCES = setjmp.c memcpy.c memset.c memmove.c libcdtor.c | ||||
|  | ||||
| libic_a_SOURCES = setjmp.c memcpy.c memset.c memmove.c libcdtor.c | ||||
| tooldir = $(exec_prefix)/$(host_alias) | ||||
| toollibdir = $(tooldir)/lib$(MULTISUBDIR) | ||||
|  | ||||
| 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) $(toollib_LIBRARIES) | ||||
|  | ||||
|  | ||||
| DEFS = @DEFS@ -I. -I$(srcdir)  | ||||
| CPPFLAGS = @CPPFLAGS@ | ||||
| LIBS = @LIBS@ | ||||
| lib_a_LIBADD =  | ||||
| lib_a_OBJECTS =  setjmp.o memcpy.o memset.o memmove.o libcdtor.o | ||||
| libic_a_LIBADD =  | ||||
| libic_a_OBJECTS =  setjmp.o memcpy.o memset.o memmove.o libcdtor.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 = gtar | ||||
| GZIP_ENV = --best | ||||
| SOURCES = $(lib_a_SOURCES) $(libic_a_SOURCES) | ||||
| OBJECTS = $(lib_a_OBJECTS) $(libic_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 \ | ||||
| 		../../../libtool.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: | ||||
|  | ||||
| mostlyclean-toollibLIBRARIES: | ||||
|  | ||||
| clean-toollibLIBRARIES: | ||||
| 	-test -z "$(toollib_LIBRARIES)" || rm -f $(toollib_LIBRARIES) | ||||
|  | ||||
| distclean-toollibLIBRARIES: | ||||
|  | ||||
| maintainer-clean-toollibLIBRARIES: | ||||
|  | ||||
| install-toollibLIBRARIES: $(toollib_LIBRARIES) | ||||
| 	@$(NORMAL_INSTALL) | ||||
| 	$(mkinstalldirs) $(DESTDIR)$(toollibdir) | ||||
| 	@list='$(toollib_LIBRARIES)'; for p in $$list; do \ | ||||
| 	  if test -f $$p; then \ | ||||
| 	    echo " $(INSTALL_DATA) $$p $(DESTDIR)$(toollibdir)/$$p"; \ | ||||
| 	    $(INSTALL_DATA) $$p $(DESTDIR)$(toollibdir)/$$p; \ | ||||
| 	  else :; fi; \ | ||||
| 	done | ||||
| 	@$(POST_INSTALL) | ||||
| 	@list='$(toollib_LIBRARIES)'; for p in $$list; do \ | ||||
| 	  if test -f $$p; then \ | ||||
| 	    echo " $(RANLIB) $(DESTDIR)$(toollibdir)/$$p"; \ | ||||
| 	    $(RANLIB) $(DESTDIR)$(toollibdir)/$$p; \ | ||||
| 	  else :; fi; \ | ||||
| 	done | ||||
|  | ||||
| uninstall-toollibLIBRARIES: | ||||
| 	@$(NORMAL_UNINSTALL) | ||||
| 	list='$(toollib_LIBRARIES)'; for p in $$list; do \ | ||||
| 	  rm -f $(DESTDIR)$(toollibdir)/$$p; \ | ||||
| 	done | ||||
|  | ||||
| .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 | ||||
|  | ||||
| libic.a: $(libic_a_OBJECTS) $(libic_a_DEPENDENCIES) | ||||
| 	-rm -f libic.a | ||||
| 	$(AR) cru libic.a $(libic_a_OBJECTS) $(libic_a_LIBADD) | ||||
| 	$(RANLIB) libic.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-toollibLIBRARIES | ||||
| install-data: install-data-am | ||||
|  | ||||
| install-am: all-am | ||||
| 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am | ||||
| install: install-am | ||||
| uninstall-am: uninstall-toollibLIBRARIES | ||||
| uninstall: uninstall-am | ||||
| all-am: Makefile $(LIBRARIES) | ||||
| all-redirect: all-am | ||||
| install-strip: | ||||
| 	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install | ||||
| installdirs: | ||||
| 	$(mkinstalldirs)  $(DESTDIR)$(toollibdir) | ||||
|  | ||||
|  | ||||
| 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-toollibLIBRARIES mostlyclean-compile \ | ||||
| 		mostlyclean-tags mostlyclean-generic | ||||
|  | ||||
| mostlyclean: mostlyclean-am | ||||
|  | ||||
| clean-am:  clean-noinstLIBRARIES clean-toollibLIBRARIES clean-compile \ | ||||
| 		clean-tags clean-generic mostlyclean-am | ||||
|  | ||||
| clean: clean-am | ||||
|  | ||||
| distclean-am:  distclean-noinstLIBRARIES distclean-toollibLIBRARIES \ | ||||
| 		distclean-compile distclean-tags distclean-generic \ | ||||
| 		clean-am | ||||
|  | ||||
| distclean: distclean-am | ||||
| 	-rm -f config.status | ||||
|  | ||||
| maintainer-clean-am:  maintainer-clean-noinstLIBRARIES \ | ||||
| 		maintainer-clean-toollibLIBRARIES \ | ||||
| 		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-toollibLIBRARIES distclean-toollibLIBRARIES \ | ||||
| clean-toollibLIBRARIES maintainer-clean-toollibLIBRARIES \ | ||||
| uninstall-toollibLIBRARIES install-toollibLIBRARIES 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: | ||||
							
								
								
									
										366
									
								
								newlib/libc/machine/cris/aclocal.m4
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										366
									
								
								newlib/libc/machine/cris/aclocal.m4
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,366 @@ | ||||
| dnl aclocal.m4 generated automatically by aclocal 1.4-p6 | ||||
|  | ||||
| dnl Copyright (C) 1994, 1995-8, 1999, 2001 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-malloc-debugging - currently only supported for Cygwin | ||||
| AC_ARG_ENABLE(malloc-debugging, | ||||
| [  --enable-malloc-debugging indicate malloc debugging requested], | ||||
| [case "${enableval}" in | ||||
|   yes) malloc_debugging=yes ;; | ||||
|   no)  malloc_debugging=no ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for malloc-debugging option) ;; | ||||
|  esac], [malloc_debugging=])dnl | ||||
|  | ||||
| dnl Support --enable-newlib-multithread | ||||
| AC_ARG_ENABLE(newlib-multithread, | ||||
| [  --enable-newlib-multithread        enable support for multiple threads], | ||||
| [case "${enableval}" in | ||||
|   yes) newlib_multithread=yes ;; | ||||
|   no)  newlib_multithread=no ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for newlib-multithread option) ;; | ||||
|  esac], [newlib_multithread=yes])dnl | ||||
|  | ||||
| dnl Support --enable-newlib-iconv | ||||
| AC_ARG_ENABLE(newlib-iconv, | ||||
| [  --enable-newlib-iconv     enable iconv library support], | ||||
| [if test "${newlib_iconv+set}" != set; then | ||||
|    case "${enableval}" in | ||||
|      yes) newlib_iconv=yes ;; | ||||
|      no)  newlib_iconv=no ;; | ||||
|      *)   AC_MSG_ERROR(bad value ${enableval} for newlib-iconv option) ;; | ||||
|    esac | ||||
|  fi], [newlib_iconv=${newlib_iconv}])dnl | ||||
|  | ||||
| dnl Support --enable-newlib-elix-level | ||||
| AC_ARG_ENABLE(newlib-elix-level, | ||||
| [  --enable-newlib-elix-level         supply desired elix library level (1-4)], | ||||
| [case "${enableval}" in | ||||
|   0)   newlib_elix_level=0 ;; | ||||
|   1)   newlib_elix_level=1 ;; | ||||
|   2)   newlib_elix_level=2 ;; | ||||
|   3)   newlib_elix_level=3 ;; | ||||
|   4)   newlib_elix_level=4 ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for newlib-elix-level option) ;; | ||||
|  esac], [newlib_elix_level=0])dnl | ||||
|  | ||||
| dnl Support --disable-newlib-io-float | ||||
| AC_ARG_ENABLE(newlib-io-float, | ||||
| [  --disable-newlib-io-float disable printf/scanf family float support], | ||||
| [case "${enableval}" in | ||||
|   yes) newlib_io_float=yes ;; | ||||
|   no)  newlib_io_float=no ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for newlib-io-float option) ;; | ||||
|  esac], [newlib_io_float=yes])dnl | ||||
|  | ||||
| dnl Support --disable-newlib-supplied-syscalls | ||||
| AC_ARG_ENABLE(newlib-supplied-syscalls, | ||||
| [  --disable-newlib-supplied-syscalls disable newlib from supplying syscalls], | ||||
| [case "${enableval}" in | ||||
|   yes) newlib_may_supply_syscalls=yes ;; | ||||
|   no)  newlib_may_supply_syscalls=no ;; | ||||
|   *)   AC_MSG_ERROR(bad value ${enableval} for newlib-supplied-syscalls option) ;; | ||||
|  esac], [newlib_may_supply_syscalls=yes])dnl | ||||
|  | ||||
| AM_CONDITIONAL(MAY_SUPPLY_SYSCALLS, test x[$]{newlib_may_supply_syscalls} = xyes) | ||||
|  | ||||
| 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_SYSTEM | ||||
|  | ||||
| AM_INIT_AUTOMAKE(newlib, 1.13.0) | ||||
|  | ||||
| # 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(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 | ||||
|  | ||||
| newlib_cflags="[$]{newlib_cflags} -fno-builtin" | ||||
|  | ||||
| NEWLIB_CFLAGS=${newlib_cflags} | ||||
| AC_SUBST(NEWLIB_CFLAGS) | ||||
|  | ||||
| LDFLAGS=${ldflags} | ||||
| AC_SUBST(LDFLAGS) | ||||
|  | ||||
| AM_CONDITIONAL(ELIX_LEVEL_0, test x[$]{newlib_elix_level} = x0) | ||||
| AM_CONDITIONAL(ELIX_LEVEL_1, test x[$]{newlib_elix_level} = x1) | ||||
| AM_CONDITIONAL(ELIX_LEVEL_2, test x[$]{newlib_elix_level} = x2) | ||||
| AM_CONDITIONAL(ELIX_LEVEL_3, test x[$]{newlib_elix_level} = x3) | ||||
| AM_CONDITIONAL(ELIX_LEVEL_4, test x[$]{newlib_elix_level} = x4) | ||||
|  | ||||
| AM_CONDITIONAL(USE_LIBTOOL, test x[$]{use_libtool} = xyes) | ||||
|  | ||||
| # Hard-code OBJEXT.  Normally it is set by AC_OBJEXT, but we | ||||
| # use oext, which is set in configure.host based on the target platform. | ||||
| OBJEXT=${oext} | ||||
|  | ||||
| AC_SUBST(OBJEXT) | ||||
| AC_SUBST(oext) | ||||
| AC_SUBST(aext) | ||||
|  | ||||
| AC_SUBST(libm_machine_dir) | ||||
| 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([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl | ||||
| 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-${am__api_version}, $missing_dir) | ||||
| AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) | ||||
| AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir) | ||||
| AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) | ||||
| AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) | ||||
| AC_REQUIRE([AC_PROG_MAKE_SET])]) | ||||
|  | ||||
| # Copyright 2002  Free Software Foundation, Inc. | ||||
|  | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation; either version 2, or (at your option) | ||||
| # any later version. | ||||
|  | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with this program; if not, write to the Free Software | ||||
| # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | ||||
|  | ||||
| # AM_AUTOMAKE_VERSION(VERSION) | ||||
| # ---------------------------- | ||||
| # Automake X.Y traces this macro to ensure aclocal.m4 has been | ||||
| # generated from the m4 files accompanying Automake X.Y. | ||||
| AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"]) | ||||
|  | ||||
| # AM_SET_CURRENT_AUTOMAKE_VERSION | ||||
| # ------------------------------- | ||||
| # Call AM_AUTOMAKE_VERSION so it can be traced. | ||||
| # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. | ||||
| AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], | ||||
| 	 [AM_AUTOMAKE_VERSION([1.4-p6])]) | ||||
|  | ||||
| # | ||||
| # 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)]) | ||||
|  | ||||
| # 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]) | ||||
|  | ||||
| # 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 | ||||
| ] | ||||
| ) | ||||
|  | ||||
							
								
								
									
										1880
									
								
								newlib/libc/machine/cris/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										1880
									
								
								newlib/libc/machine/cris/configure
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12
									
								
								newlib/libc/machine/cris/configure.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								newlib/libc/machine/cris/configure.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| dnl This is the newlib/libc/machine/cris configure.in file. | ||||
| dnl Process this file with autoconf to produce a configure script. | ||||
|  | ||||
| AC_PREREQ(2.5) | ||||
| AC_INIT(setjmp.c) | ||||
|  | ||||
| dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.  | ||||
| AC_CONFIG_AUX_DIR(../../../..) | ||||
|  | ||||
| NEWLIB_CONFIGURE(../../..) | ||||
|  | ||||
| AC_OUTPUT(Makefile) | ||||
							
								
								
									
										93
									
								
								newlib/libc/machine/cris/include/pthread.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								newlib/libc/machine/cris/include/pthread.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| /* pthread.h dummy. | ||||
|    Copyright (C) 2001, 2004, 2005 Axis Communications AB. | ||||
|    All rights reserved. | ||||
|  | ||||
|    Redistribution and use in source and binary forms, with or without | ||||
|    modification, are permitted provided that the following conditions | ||||
|    are met: | ||||
|  | ||||
|    1. Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
|    2. Neither the name of Axis Communications nor the names of its | ||||
|       contributors may be used to endorse or promote products derived | ||||
|       from this software without specific prior written permission. | ||||
|  | ||||
|    THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS | ||||
|    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
|    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
|    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS | ||||
|    COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||
|    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
|    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||||
|    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||||
|    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
|    POSSIBILITY OF SUCH DAMAGE.  */ | ||||
|  | ||||
| /* Simple fallback-include to enable thread-enabled exception support | ||||
|    for libgcc, but with posix-interface to a default-dummy, so a posix | ||||
|    library can optionally be linked in, which isn't possible if | ||||
|    gthr-single.h is used.  No other use is supported; *DO NOT* think | ||||
|    this gives you a valid pthread interface to use in your applications.  */ | ||||
|  | ||||
| #ifndef _PTHREAD_FAKE | ||||
| #define _PTHREAD_FAKE | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| # ifndef __THROW | ||||
| #  define __THROW throw () | ||||
| # endif | ||||
| #else | ||||
| # ifndef __THROW | ||||
| #  define __THROW | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| typedef int pthread_once_t; | ||||
| typedef unsigned int pthread_key_t; | ||||
|  | ||||
| /* This must be layout-compatible with the linuxthreads type.  */ | ||||
| typedef struct | ||||
| { | ||||
|   int a, b; | ||||
|   void *c; | ||||
|   int d; | ||||
|   struct { long int e; int f; } g; | ||||
| } pthread_mutex_t; | ||||
|  | ||||
| /* This give bits equal to the linuxthreads initializer.  */ | ||||
| #define PTHREAD_MUTEX_INITIALIZER \ | ||||
|   {0, 0, 0, 0, {0, 0}} | ||||
|  | ||||
| #define PTHREAD_ONCE_INIT 0 | ||||
|  | ||||
| /* This isn't the right prototype, but it let's us get away with not | ||||
|    defining a lot of datatypes.  */ | ||||
| extern int pthread_create (void) __THROW; | ||||
|  | ||||
| extern int pthread_once (pthread_once_t *, void (*) (void)) __THROW; | ||||
|  | ||||
| extern int pthread_key_create (pthread_key_t *, void (*) (void *)) __THROW; | ||||
|  | ||||
| extern int pthread_setspecific (pthread_key_t, const void *) __THROW; | ||||
|  | ||||
| extern void *pthread_getspecific (pthread_key_t) __THROW; | ||||
|  | ||||
| extern int pthread_mutex_lock (pthread_mutex_t *) __THROW; | ||||
|  | ||||
| extern int pthread_key_delete (pthread_key_t) __THROW; | ||||
|  | ||||
| extern int pthread_mutex_trylock (pthread_mutex_t *) __THROW; | ||||
|  | ||||
| extern int pthread_mutex_unlock (pthread_mutex_t *) __THROW; | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #undef __THROW | ||||
|  | ||||
| #endif /* not _PTHREAD_FAKE */ | ||||
							
								
								
									
										88
									
								
								newlib/libc/machine/cris/libcdtor.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								newlib/libc/machine/cris/libcdtor.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| /* Call ctors and dtors from elinux a.out shared libraries. | ||||
|    Copyright (C) 1999, 2000, 2003, 2004, 2005 Axis Communications. | ||||
|    All rights reserved. | ||||
|  | ||||
|    Redistribution and use in source and binary forms, with or without | ||||
|    modification, are permitted provided that the following conditions | ||||
|    are met: | ||||
|  | ||||
|    1. Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
|    2. Neither the name of Axis Communications nor the names of its | ||||
|       contributors may be used to endorse or promote products derived | ||||
|       from this software without specific prior written permission. | ||||
|  | ||||
|    THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS | ||||
|    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
|    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
|    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS | ||||
|    COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||
|    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
|    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||||
|    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||||
|    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
|    POSSIBILITY OF SUCH DAMAGE.  */ | ||||
|  | ||||
| typedef void (*vfnp) (void); | ||||
|  | ||||
| /* The guts of the _Libctors and _Libdtors is "optimized" away into | ||||
|    empty functions when the definition is visible as well.  Simplest | ||||
|    solution is to emit the definitions as asm.  We have no .previous | ||||
|    directive in a.out, so we rely on the fact that everything in this | ||||
|    file goes into the .text section.  */ | ||||
| __asm__ | ||||
| ( | ||||
|  ".text\n\t.global .$global.lib.ctors\n.$global.lib.ctors:\n\t.dword 0" | ||||
| ); | ||||
| __asm__ | ||||
| ( | ||||
|  ".text\n\t.global .$global.lib.dtors\n.$global.lib.dtors:\n\t.dword 0" | ||||
| ); | ||||
|  | ||||
| extern vfnp * const _Ctors asm(".$global.lib.ctors"); | ||||
| extern vfnp * const _Dtors asm(".$global.lib.dtors"); | ||||
|  | ||||
| /* We better provide weak empty ctor and dtor lists, since they are not | ||||
|    created if the main program does not have ctor/dtors.  */ | ||||
|  | ||||
| static vfnp const defaultors[] = {0, 0}; | ||||
|  | ||||
| extern vfnp * __CTOR_LIST__ __attribute__ ((weak, alias ("defaultors"))); | ||||
| extern vfnp * __DTOR_LIST__ __attribute__ ((weak, alias ("defaultors"))); | ||||
|  | ||||
| void | ||||
| _Libctors (void) | ||||
| { | ||||
|   const vfnp *firstor = _Ctors; | ||||
|   const vfnp *ctors; | ||||
|  | ||||
|   /* Have to find the last ctor; they will run in opposite order as in | ||||
|      the table. */ | ||||
|   if (firstor != 0 && *firstor != 0) | ||||
|     { | ||||
|       for (ctors = firstor; *ctors != 0; ctors++) | ||||
| 	; | ||||
|  | ||||
|       while (--ctors != firstor) | ||||
| 	{ | ||||
| 	  (**ctors)(); | ||||
| 	} | ||||
|  | ||||
|       (**ctors)(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void | ||||
| _Libdtors(void) | ||||
| { | ||||
|   const vfnp *dtors = _Dtors; | ||||
|  | ||||
|   if (dtors) | ||||
|     while (*dtors != 0) | ||||
|       { | ||||
| 	(**dtors++) (); | ||||
|       } | ||||
| } | ||||
							
								
								
									
										236
									
								
								newlib/libc/machine/cris/memcpy.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										236
									
								
								newlib/libc/machine/cris/memcpy.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,236 @@ | ||||
| /* A memcpy for CRIS. | ||||
|    Copyright (C) 1994-2005 Axis Communications. | ||||
|    All rights reserved. | ||||
|  | ||||
|    Redistribution and use in source and binary forms, with or without | ||||
|    modification, are permitted provided that the following conditions | ||||
|    are met: | ||||
|  | ||||
|    1. Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
|    2. Neither the name of Axis Communications nor the names of its | ||||
|       contributors may be used to endorse or promote products derived | ||||
|       from this software without specific prior written permission. | ||||
|  | ||||
|    THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS | ||||
|    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
|    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
|    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS | ||||
|    COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||
|    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
|    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||||
|    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||||
|    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
|    POSSIBILITY OF SUCH DAMAGE.  */ | ||||
|  | ||||
| /* FIXME: This file should really only be used for reference, as the | ||||
|    result is somewhat depending on gcc generating what we expect rather | ||||
|    than what we describe.  An assembly file should be used instead.  */ | ||||
|  | ||||
| #include <stddef.h> | ||||
|  | ||||
| /* Break even between movem and move16 is really at 38.7 * 2, but | ||||
|    modulo 44, so up to the next multiple of 44, we use ordinary code.  */ | ||||
| #define MEMCPY_BY_BLOCK_THRESHOLD (44 * 2) | ||||
|  | ||||
| /* No name ambiguities in this file.  */ | ||||
| __asm__ (".syntax no_register_prefix"); | ||||
|  | ||||
| void * | ||||
| memcpy(void *pdst, const void *psrc, size_t pn) | ||||
| { | ||||
|   /* Now we want the parameters put in special registers. | ||||
|      Make sure the compiler is able to make something useful of this. | ||||
|      As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop). | ||||
|  | ||||
|      If gcc was allright, it really would need no temporaries, and no | ||||
|      stack space to save stuff on.  */ | ||||
|  | ||||
|   register void *return_dst __asm__ ("r10") = pdst; | ||||
|   register unsigned char *dst __asm__ ("r13") = pdst; | ||||
|   register unsigned const char *src __asm__ ("r11") = psrc; | ||||
|   register int n __asm__ ("r12") = pn; | ||||
|  | ||||
|   /* When src is aligned but not dst, this makes a few extra needless | ||||
|      cycles.  I believe it would take as many to check that the | ||||
|      re-alignment was unnecessary.  */ | ||||
|   if (((unsigned long) dst & 3) != 0 | ||||
|       /* Don't align if we wouldn't copy more than a few bytes; so we | ||||
| 	 don't have to check further for overflows.  */ | ||||
|       && n >= 3) | ||||
|   { | ||||
|     if ((unsigned long) dst & 1) | ||||
|       { | ||||
| 	n--; | ||||
| 	*dst = *src; | ||||
| 	src++; | ||||
| 	dst++; | ||||
|       } | ||||
|  | ||||
|     if ((unsigned long) dst & 2) | ||||
|       { | ||||
| 	n -= 2; | ||||
| 	*(short *) dst = *(short *) src; | ||||
| 	src += 2; | ||||
| 	dst += 2; | ||||
|       } | ||||
|   } | ||||
|  | ||||
|   /* Decide which copying method to use.  */ | ||||
|   if (n >= MEMCPY_BY_BLOCK_THRESHOLD) | ||||
|     { | ||||
|       /* It is not optimal to tell the compiler about clobbering any | ||||
| 	 registers; that will move the saving/restoring of those registers | ||||
| 	 to the function prologue/epilogue, and make non-movem sizes | ||||
| 	 suboptimal.  */ | ||||
|       __asm__ volatile | ||||
| 	("\ | ||||
| 	 ;; GCC does promise correct register allocations, but let's	\n\ | ||||
| 	 ;; make sure it keeps its promises.				\n\ | ||||
| 	 .ifnc %0-%1-%2,$r13-$r11-$r12					\n\ | ||||
| 	 .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\"	\n\ | ||||
| 	 .endif								\n\ | ||||
| 									\n\ | ||||
| 	 ;; Save the registers we'll use in the movem process		\n\ | ||||
| 	 ;; on the stack.						\n\ | ||||
| 	 subq	11*4,sp							\n\ | ||||
| 	 movem	r10,[sp]						\n\ | ||||
| 									\n\ | ||||
| 	 ;; Now we've got this:						\n\ | ||||
| 	 ;; r11 - src							\n\ | ||||
| 	 ;; r13 - dst							\n\ | ||||
| 	 ;; r12 - n							\n\ | ||||
| 									\n\ | ||||
| 	 ;; Update n for the first loop.				\n\ | ||||
| 	 subq	 44,r12							\n\ | ||||
| 0:									\n\ | ||||
| " | ||||
| #ifdef __arch_common_v10_v32 | ||||
| 	 /* Cater to branch offset difference between v32 and v10.  We | ||||
| 	    assume the branch below has an 8-bit offset.  */ | ||||
| "	 setf\n" | ||||
| #endif | ||||
| "	 movem	[r11+],r10						\n\ | ||||
| 	 subq	44,r12							\n\ | ||||
| 	 bge	 0b							\n\ | ||||
| 	 movem	r10,[r13+]						\n\ | ||||
| 									\n\ | ||||
| 	 ;; Compensate for last loop underflowing n.			\n\ | ||||
| 	 addq	44,r12							\n\ | ||||
| 									\n\ | ||||
| 	 ;; Restore registers from stack.				\n\ | ||||
| 	 movem [sp+],r10" | ||||
|  | ||||
| 	 /* Outputs.  */ | ||||
| 	 : "=r" (dst), "=r" (src), "=r" (n) | ||||
|  | ||||
| 	 /* Inputs.  */ | ||||
| 	 : "0" (dst), "1" (src), "2" (n)); | ||||
|     } | ||||
|  | ||||
|   while (n >= 16) | ||||
|     { | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|  | ||||
|       n -= 16; | ||||
|     } | ||||
|  | ||||
|   switch (n) | ||||
|     { | ||||
|     case 0: | ||||
|       break; | ||||
|  | ||||
|     case 1: | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 2: | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 3: | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 4: | ||||
|       *(long *) dst = *(long *) src; | ||||
|       break; | ||||
|  | ||||
|     case 5: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 6: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 7: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 8: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; | ||||
|       break; | ||||
|  | ||||
|     case 9: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 10: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 11: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 12: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; | ||||
|       break; | ||||
|  | ||||
|     case 13: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 14: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 15: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|   return return_dst; | ||||
| } | ||||
							
								
								
									
										257
									
								
								newlib/libc/machine/cris/memmove.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										257
									
								
								newlib/libc/machine/cris/memmove.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,257 @@ | ||||
| /* A memmove for CRIS. | ||||
|    Copyright (C) 2000-2005 Axis Communications. | ||||
|    All rights reserved. | ||||
|  | ||||
|    Redistribution and use in source and binary forms, with or without | ||||
|    modification, are permitted provided that the following conditions | ||||
|    are met: | ||||
|  | ||||
|    1. Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
|    2. Neither the name of Axis Communications nor the names of its | ||||
|       contributors may be used to endorse or promote products derived | ||||
|       from this software without specific prior written permission. | ||||
|  | ||||
|    THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS | ||||
|    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
|    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
|    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS | ||||
|    COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||
|    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
|    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||||
|    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||||
|    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
|    POSSIBILITY OF SUCH DAMAGE.  */ | ||||
|  | ||||
| /* FIXME: This file should really only be used for reference, as the | ||||
|    result is somewhat depending on gcc generating what we expect rather | ||||
|    than what we describe.  An assembly file should be used instead. | ||||
|  | ||||
|    Even worse, we base it on memcpy, on the assumption that overlapping | ||||
|    moves are rare, and we will do no worse than the generic memmove.  */ | ||||
|  | ||||
| #include <stddef.h> | ||||
|  | ||||
| /* Break even between movem and move16 is really at 38.7 * 2, but | ||||
|    modulo 44, so up to the next multiple of 44, we use ordinary code.  */ | ||||
| #define MEMMOVE_BY_BLOCK_THRESHOLD (44 * 2) | ||||
|  | ||||
| /* No name ambiguities in this file.  */ | ||||
| __asm__ (".syntax no_register_prefix"); | ||||
|  | ||||
| void * | ||||
| memmove(void *pdst, const void *psrc, size_t pn) | ||||
| { | ||||
|   /* Now we want the parameters put in special registers. | ||||
|      Make sure the compiler is able to make something useful of this. | ||||
|      As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop). | ||||
|  | ||||
|      If gcc was allright, it really would need no temporaries, and no | ||||
|      stack space to save stuff on.  */ | ||||
|  | ||||
|   register void *return_dst __asm__ ("r10") = pdst; | ||||
|   register unsigned char *dst __asm__ ("r13") = pdst; | ||||
|   register unsigned const char *src __asm__ ("r11") = psrc; | ||||
|   register int n __asm__ ("r12") = pn; | ||||
|  | ||||
|   /* Check and handle overlap.  */ | ||||
|   if (src < dst && dst < src + n) | ||||
|     { | ||||
|       /* Destructive overlap.  We could optimize this, but we don't (for | ||||
| 	 the moment).  */ | ||||
|       src += n; | ||||
|       dst += n; | ||||
|       while (n--) | ||||
| 	{ | ||||
| 	  *--dst = *--src; | ||||
| 	} | ||||
|  | ||||
|       return return_dst; | ||||
|     } | ||||
|   /* Whew, no overlap.  Proceed as with memcpy.  We could call it instead | ||||
|      of having a copy here.  That would spoil some of the optimization, so | ||||
|      we take the trouble with having two copies.  */ | ||||
|  | ||||
|   /* When src is aligned but not dst, this makes a few extra needless | ||||
|      cycles.  I believe it would take as many to check that the | ||||
|      re-alignment was unnecessary.  */ | ||||
|   if (((unsigned long) dst & 3) != 0 | ||||
|       /* Don't align if we wouldn't copy more than a few bytes; so we | ||||
| 	 don't have to check further for overflows.  */ | ||||
|       && n >= 3) | ||||
|   { | ||||
|     if ((unsigned long) dst & 1) | ||||
|       { | ||||
| 	n--; | ||||
| 	*dst = *src; | ||||
| 	src++; | ||||
| 	dst++; | ||||
|       } | ||||
|  | ||||
|     if ((unsigned long) dst & 2) | ||||
|       { | ||||
| 	n -= 2; | ||||
| 	*(short *) dst = *(short *) src; | ||||
| 	src += 2; | ||||
| 	dst += 2; | ||||
|       } | ||||
|   } | ||||
|  | ||||
|   /* Decide which copying method to use.  */ | ||||
|   if (n >= MEMMOVE_BY_BLOCK_THRESHOLD) | ||||
|     { | ||||
|       /* It is not optimal to tell the compiler about clobbering any | ||||
| 	 registers; that will move the saving/restoring of those registers | ||||
| 	 to the function prologue/epilogue, and make non-movem sizes | ||||
| 	 suboptimal.  */ | ||||
|       __asm__ volatile | ||||
| 	("\ | ||||
| 	 ;; GCC does promise correct register allocations, but let's	\n\ | ||||
| 	 ;; make sure it keeps its promises.				\n\ | ||||
| 	 .ifnc %0-%1-%2,$r13-$r11-$r12					\n\ | ||||
| 	 .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\"	\n\ | ||||
| 	 .endif								\n\ | ||||
| 									\n\ | ||||
| 	 ;; Save the registers we'll use in the movem process		\n\ | ||||
| 	 ;; on the stack.						\n\ | ||||
| 	 subq	11*4,sp							\n\ | ||||
| 	 movem	r10,[sp]						\n\ | ||||
| 									\n\ | ||||
| 	 ;; Now we've got this:						\n\ | ||||
| 	 ;; r11 - src							\n\ | ||||
| 	 ;; r13 - dst							\n\ | ||||
| 	 ;; r12 - n							\n\ | ||||
| 									\n\ | ||||
| 	 ;; Update n for the first loop.				\n\ | ||||
| 	 subq	 44,r12							\n\ | ||||
| 0:									\n\ | ||||
| " | ||||
| #ifdef __arch_common_v10_v32 | ||||
| 	 /* Cater to branch offset difference between v32 and v10.  We | ||||
| 	    assume the branch below has an 8-bit offset.  */ | ||||
| "	 setf\n" | ||||
| #endif | ||||
| "	 movem	[r11+],r10						\n\ | ||||
| 	 subq	44,r12							\n\ | ||||
| 	 bge	 0b							\n\ | ||||
| 	 movem	r10,[r13+]						\n\ | ||||
| 									\n\ | ||||
| 	 ;; Compensate for last loop underflowing n.			\n\ | ||||
| 	 addq	44,r12							\n\ | ||||
| 									\n\ | ||||
| 	 ;; Restore registers from stack.				\n\ | ||||
| 	 movem [sp+],r10" | ||||
|  | ||||
| 	 /* Outputs.  */ | ||||
| 	 : "=r" (dst), "=r" (src), "=r" (n) | ||||
|  | ||||
| 	 /* Inputs.  */ | ||||
| 	 : "0" (dst), "1" (src), "2" (n)); | ||||
|     } | ||||
|  | ||||
|   while (n >= 16) | ||||
|     { | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|  | ||||
|       n -= 16; | ||||
|     } | ||||
|  | ||||
|   switch (n) | ||||
|     { | ||||
|     case 0: | ||||
|       break; | ||||
|  | ||||
|     case 1: | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 2: | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 3: | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 4: | ||||
|       *(long *) dst = *(long *) src; | ||||
|       break; | ||||
|  | ||||
|     case 5: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 6: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 7: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 8: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; | ||||
|       break; | ||||
|  | ||||
|     case 9: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 10: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 11: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 12: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; | ||||
|       break; | ||||
|  | ||||
|     case 13: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|  | ||||
|     case 14: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; | ||||
|       break; | ||||
|  | ||||
|     case 15: | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(long *) dst = *(long *) src; dst += 4; src += 4; | ||||
|       *(short *) dst = *(short *) src; dst += 2; src += 2; | ||||
|       *dst = *src; | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|   return return_dst; | ||||
| } | ||||
							
								
								
									
										259
									
								
								newlib/libc/machine/cris/memset.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										259
									
								
								newlib/libc/machine/cris/memset.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,259 @@ | ||||
| /* A memset for CRIS. | ||||
|    Copyright (C) 1999-2005 Axis Communications. | ||||
|    All rights reserved. | ||||
|  | ||||
|    Redistribution and use in source and binary forms, with or without | ||||
|    modification, are permitted provided that the following conditions | ||||
|    are met: | ||||
|  | ||||
|    1. Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
|    2. Neither the name of Axis Communications nor the names of its | ||||
|       contributors may be used to endorse or promote products derived | ||||
|       from this software without specific prior written permission. | ||||
|  | ||||
|    THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS | ||||
|    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
|    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
|    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS | ||||
|    COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||
|    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
|    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||||
|    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||||
|    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
|    POSSIBILITY OF SUCH DAMAGE.  */ | ||||
|  | ||||
| /* FIXME: This file should really only be used for reference, as the | ||||
|    result is somewhat depending on gcc generating what we expect rather | ||||
|    than what we describe.  An assembly file should be used instead.  */ | ||||
|  | ||||
| /* Note the multiple occurrence of the expression "12*4", including the | ||||
|    asm.  It is hard to get it into the asm in a good way.  Thus better to | ||||
|    expose the problem everywhere: no macro.  */ | ||||
|  | ||||
| /* Assuming one cycle per dword written or read (ok, not really true; the | ||||
|    world is not ideal), and one cycle per instruction, then 43+3*(n/48-1) | ||||
|    <= 24+24*(n/48-1) so n >= 45.7; n >= 0.9; we win on the first full | ||||
|    48-byte block to set.  */ | ||||
|  | ||||
| #define MEMSET_BY_BLOCK_THRESHOLD (1 * 48) | ||||
|  | ||||
| /* No name ambiguities in this file.  */ | ||||
| __asm__ (".syntax no_register_prefix"); | ||||
|  | ||||
| void *memset(void *pdst, int c, unsigned int plen) | ||||
| { | ||||
|   /* Now we want the parameters in special registers.  Make sure the | ||||
|      compiler does something usable with this.  */ | ||||
|  | ||||
|   register char *return_dst __asm__ ("r10") = pdst; | ||||
|   register int n __asm__ ("r12") = plen; | ||||
|   register int lc __asm__ ("r11") = c; | ||||
|  | ||||
|   /* Most apps use memset sanely.  Memsetting about 3..4 bytes or less get | ||||
|      penalized here compared to the generic implementation.  */ | ||||
|  | ||||
|   /* This is fragile performancewise at best.  Check with newer GCC | ||||
|      releases, if they compile cascaded "x |= x << 8" to sane code.  */ | ||||
|   __asm__("movu.b %0,r13						\n\ | ||||
| 	   lslq 8,r13							\n\ | ||||
| 	   move.b %0,r13						\n\ | ||||
| 	   move.d r13,%0						\n\ | ||||
| 	   lslq 16,r13							\n\ | ||||
| 	   or.d r13,%0" | ||||
|           : "=r" (lc)		/* Inputs.  */ | ||||
| 	  : "0" (lc)		/* Outputs.  */ | ||||
| 	  : "r13");		/* Trash.  */ | ||||
|  | ||||
|   { | ||||
|     register char *dst __asm__ ("r13") = pdst; | ||||
|  | ||||
|     if (((unsigned long) pdst & 3) != 0 | ||||
| 	/* Oops! n = 0 must be a valid call, regardless of alignment.  */ | ||||
| 	&& n >= 3) | ||||
|       { | ||||
| 	if ((unsigned long) dst & 1) | ||||
| 	  { | ||||
| 	    *dst = (char) lc; | ||||
| 	    n--; | ||||
| 	    dst++; | ||||
| 	  } | ||||
|  | ||||
| 	if ((unsigned long) dst & 2) | ||||
| 	  { | ||||
| 	    *(short *) dst = lc; | ||||
| 	    n -= 2; | ||||
| 	    dst += 2; | ||||
| 	  } | ||||
|       } | ||||
|  | ||||
|     /* Decide which setting method to use.  */ | ||||
|     if (n >= MEMSET_BY_BLOCK_THRESHOLD) | ||||
|       { | ||||
| 	/* It is not optimal to tell the compiler about clobbering any | ||||
| 	   registers; that will move the saving/restoring of those registers | ||||
| 	   to the function prologue/epilogue, and make non-block sizes | ||||
| 	   suboptimal.  */ | ||||
| 	__asm__ volatile | ||||
| 	  ("\ | ||||
| 	   ;; GCC does promise correct register allocations, but let's	\n\ | ||||
| 	   ;; make sure it keeps its promises.				\n\ | ||||
| 	   .ifnc %0-%1-%4,$r13-$r12-$r11				\n\ | ||||
| 	   .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\"	\n\ | ||||
| 	   .endif							\n\ | ||||
| 									\n\ | ||||
| 	   ;; Save the registers we'll clobber in the movem process	\n\ | ||||
| 	   ;; on the stack.  Don't mention them to gcc, it will only be	\n\ | ||||
| 	   ;; upset.							\n\ | ||||
| 	   subq	   11*4,sp						\n\ | ||||
| 	   movem   r10,[sp]						\n\ | ||||
| 									\n\ | ||||
| 	   move.d  r11,r0						\n\ | ||||
| 	   move.d  r11,r1						\n\ | ||||
| 	   move.d  r11,r2						\n\ | ||||
| 	   move.d  r11,r3						\n\ | ||||
| 	   move.d  r11,r4						\n\ | ||||
| 	   move.d  r11,r5						\n\ | ||||
| 	   move.d  r11,r6						\n\ | ||||
| 	   move.d  r11,r7						\n\ | ||||
| 	   move.d  r11,r8						\n\ | ||||
| 	   move.d  r11,r9						\n\ | ||||
| 	   move.d  r11,r10						\n\ | ||||
| 									\n\ | ||||
| 	   ;; Now we've got this:					\n\ | ||||
| 	   ;; r13 - dst							\n\ | ||||
| 	   ;; r12 - n							\n\ | ||||
| 									\n\ | ||||
| 	   ;; Update n for the first loop				\n\ | ||||
| 	   subq	   12*4,r12						\n\ | ||||
| 0:									\n\ | ||||
| " | ||||
| #ifdef __arch_common_v10_v32 | ||||
| 	   /* Cater to branch offset difference between v32 and v10.  We | ||||
| 	      assume the branch below has an 8-bit offset.  */ | ||||
| "	   setf\n" | ||||
| #endif | ||||
| "	   subq	  12*4,r12						\n\ | ||||
| 	   bge	   0b							\n\ | ||||
| 	   movem	r11,[r13+]					\n\ | ||||
| 									\n\ | ||||
| 	   ;; Compensate for last loop underflowing n.			\n\ | ||||
| 	   addq	  12*4,r12						\n\ | ||||
| 									\n\ | ||||
| 	   ;; Restore registers from stack.				\n\ | ||||
| 	   movem [sp+],r10" | ||||
|  | ||||
| 	   /* Outputs.	*/ | ||||
| 	   : "=r" (dst), "=r" (n) | ||||
|  | ||||
| 	   /* Inputs.  */ | ||||
| 	   : "0" (dst), "1" (n), "r" (lc)); | ||||
|       } | ||||
|  | ||||
|     /* An ad-hoc unroll, used for 4*12-1..16 bytes. */ | ||||
|     while (n >= 16) | ||||
|       { | ||||
| 	*(long *) dst = lc; dst += 4; | ||||
| 	*(long *) dst = lc; dst += 4; | ||||
| 	*(long *) dst = lc; dst += 4; | ||||
| 	*(long *) dst = lc; dst += 4; | ||||
| 	n -= 16; | ||||
|       } | ||||
|  | ||||
|     switch (n) | ||||
|       { | ||||
|       case 0: | ||||
|         break; | ||||
|  | ||||
|       case 1: | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|  | ||||
|       case 2: | ||||
|         *(short *) dst = (short) lc; | ||||
|         break; | ||||
|  | ||||
|       case 3: | ||||
|         *(short *) dst = (short) lc; dst += 2; | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|  | ||||
|       case 4: | ||||
|         *(long *) dst = lc; | ||||
|         break; | ||||
|  | ||||
|       case 5: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|  | ||||
|       case 6: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(short *) dst = (short) lc; | ||||
|         break; | ||||
|  | ||||
|       case 7: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(short *) dst = (short) lc; dst += 2; | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|  | ||||
|       case 8: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; | ||||
|         break; | ||||
|  | ||||
|       case 9: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|  | ||||
|       case 10: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(short *) dst = (short) lc; | ||||
|         break; | ||||
|  | ||||
|       case 11: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(short *) dst = (short) lc; dst += 2; | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|  | ||||
|       case 12: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; | ||||
|         break; | ||||
|  | ||||
|       case 13: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|  | ||||
|       case 14: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(short *) dst = (short) lc; | ||||
|         break; | ||||
|  | ||||
|       case 15: | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(long *) dst = lc; dst += 4; | ||||
|         *(short *) dst = (short) lc; dst += 2; | ||||
|         *dst = (char) lc; | ||||
|         break; | ||||
|       } | ||||
|   } | ||||
|  | ||||
|   return return_dst; | ||||
| } | ||||
							
								
								
									
										212
									
								
								newlib/libc/machine/cris/setjmp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								newlib/libc/machine/cris/setjmp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,212 @@ | ||||
| /* A setjmp.c for CRIS | ||||
|    Copyright (C) 1993-2005 Axis Communications. | ||||
|    All rights reserved. | ||||
|  | ||||
|    Redistribution and use in source and binary forms, with or without | ||||
|    modification, are permitted provided that the following conditions | ||||
|    are met: | ||||
|  | ||||
|    1. Redistributions of source code must retain the above copyright | ||||
|       notice, this list of conditions and the following disclaimer. | ||||
|  | ||||
|    2. Neither the name of Axis Communications nor the names of its | ||||
|       contributors may be used to endorse or promote products derived | ||||
|       from this software without specific prior written permission. | ||||
|  | ||||
|    THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS | ||||
|    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
|    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
|    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS | ||||
|    COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||
|    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
|    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||||
|    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||||
|    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
|    POSSIBILITY OF SUCH DAMAGE.  */ | ||||
|  | ||||
| /* For benefit of CRIS v0..v3, we save and restore CCR to be able to | ||||
|    correctly handle DI/EI; otherwise there would be no reason to save it. | ||||
|    Note also that the "move x,ccr" does NOT affect | ||||
|    the DMA enable bits (E and D) of v0..v3. | ||||
|  | ||||
|    We do not save mof; it is call-clobbered.  It also does not exist in | ||||
|    v0..v8; it should be safe to read or write to it there, but better not. | ||||
|  | ||||
|    jmp_buf[0] - PC | ||||
|    jmp_buf[1] - SP (R14) | ||||
|    jmp_buf[2] - R13 | ||||
|    jmp_buf[3] - R12 | ||||
|    jmp_buf[4] - R11 | ||||
|    jmp_buf[5] - R10 | ||||
|    jmp_buf[6] - R9 | ||||
|    jmp_buf[7] - R8 | ||||
|    jmp_buf[8] - R7 | ||||
|    jmp_buf[9] - R6 | ||||
|    jmp_buf[10] - R5 | ||||
|    jmp_buf[11] - R4 | ||||
|    jmp_buf[12] - R3 | ||||
|    jmp_buf[13] - R2 | ||||
|    jmp_buf[14] - R1 | ||||
|    jmp_buf[15] - R0 | ||||
|    jmp_buf[16] - SRP | ||||
|    jmp_buf[17] - CCR | ||||
|    */ | ||||
|  | ||||
| #include <setjmp.h> | ||||
|  | ||||
| int | ||||
| setjmp (jmp_buf buf) | ||||
| { | ||||
|   int ret; | ||||
| #if defined (__arch_common_v10_v32) || defined (__arch_v32) | ||||
|   /* No offsets in the compatibility mode.  Also, movem saves in | ||||
|      different order on v10 than on v32, so we use single move | ||||
|      instructions instead, this not being a speed-prioritized operation. | ||||
|      And we don't save CCR or CCS; since long unuseful.  */ | ||||
|   __asm__ __volatile__ | ||||
|     ("move.d %1,$r13							\n\ | ||||
|       move 0f,$mof							\n\ | ||||
|       move $mof,[$r13+]							\n\ | ||||
|       move.d $sp,[$r13+]						\n\ | ||||
|       clear.d [$r13+]							\n\ | ||||
|       move.d $r12,[$r13+]						\n\ | ||||
|       move.d $r11,[$r13+]						\n\ | ||||
|       move.d $r10,[$r13+]						\n\ | ||||
|       moveq 1,$r9							\n\ | ||||
|       move.d $r9,[$r13+]						\n\ | ||||
|       move.d $r8,[$r13+]						\n\ | ||||
|       move.d $r7,[$r13+]						\n\ | ||||
|       move.d $r6,[$r13+]						\n\ | ||||
|       move.d $r5,[$r13+]						\n\ | ||||
|       move.d $r4,[$r13+]						\n\ | ||||
|       move.d $r3,[$r13+]						\n\ | ||||
|       move.d $r2,[$r13+]						\n\ | ||||
|       move.d $r1,[$r13+]						\n\ | ||||
|       move.d $r0,[$r13+]						\n\ | ||||
|       move $srp,[$r13+]							\n\ | ||||
|       clear.d [$r13+]							\n\ | ||||
|       clear.d $r9							\n\ | ||||
| 0:									\n\ | ||||
|       move.d $r9,%0" | ||||
|  | ||||
|      /* Output.  */ | ||||
|      : "=&r" (ret) | ||||
|  | ||||
|      /* Input.  */ | ||||
|      : "r" (buf) | ||||
|  | ||||
|      /* Clobber.  */ | ||||
|      : "r9", "r13", "memory"); | ||||
| #else /* not __arch_common_v10_v32 or __arch_v32 */ | ||||
| #ifdef __PIC__ | ||||
|   __asm__ __volatile__ | ||||
|     ("moveq 1,$r9							\n\ | ||||
|       movem $sp,[%1+1*4]						\n\ | ||||
|       move.d $pc,$r9							\n\ | ||||
|       addq 0f-.,$r9							\n\ | ||||
|       move.d $r9,[%1]							\n\ | ||||
|       move $srp,[%1+16*4]						\n\ | ||||
|       move $ccr,[%1+17*4]						\n\ | ||||
|       clear.d $r9							\n\ | ||||
| 0:									\n\ | ||||
|       move.d $r9,%0" | ||||
|  | ||||
|      /* Output.  */ | ||||
|      : "=&r" (ret) | ||||
|  | ||||
|      /* Input.  */ | ||||
|      : "r" (buf) | ||||
|  | ||||
|      /* Clobber.  */ | ||||
|      : "r9", "memory"); | ||||
| #else  /* not PIC */ | ||||
|   __asm__ __volatile__ | ||||
|     ("moveq 1,$r9							\n\ | ||||
|       movem $sp,[%1+1*4]						\n\ | ||||
|       move.d 0f,$r9							\n\ | ||||
|       move.d $r9,[%1]							\n\ | ||||
|       move $srp,[%1+16*4]						\n\ | ||||
|       move $ccr,[%1+17*4]						\n\ | ||||
|       clear.d $r9							\n\ | ||||
| 0:									\n\ | ||||
|       move.d $r9,%0" | ||||
|  | ||||
|      /* Output.  */ | ||||
|      : "=&r" (ret) | ||||
|  | ||||
|      /* Input.  */ | ||||
|      : "r" (buf) | ||||
|  | ||||
|      /* Clobber.  */ | ||||
|      : "r9"); | ||||
| #endif /* not PIC */ | ||||
| #endif /* not __arch_common_v10_v32 or __arch_v32 */ | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| void | ||||
| longjmp(jmp_buf buf, int val) | ||||
| { | ||||
| #if defined (__arch_common_v10_v32) || defined (__arch_v32) | ||||
|   __asm__ __volatile__ | ||||
|     ("cmpq 0,%1								\n\ | ||||
|       beq 0f								\n\ | ||||
|       move.d %0,$r13	; In delay-slot.				\n\ | ||||
|       addq 6*4,$r13							\n\ | ||||
|       move.d %1,[$r13]							\n\ | ||||
|       subq 6*4,$r13							\n\ | ||||
| 0:\n" | ||||
| #ifdef __arch_common_v10_v32 | ||||
|      /* Cater to branch offset difference between v32 and v10.  We | ||||
| 	assume the branch above is 8-bit.  */ | ||||
| "     setf\n" | ||||
| #endif | ||||
| "     move [$r13+],$mof							\n\ | ||||
|       move.d [$r13+],$sp						\n\ | ||||
|       addq 4,$r13							\n\ | ||||
|       move.d [$r13+],$r12						\n\ | ||||
|       move.d [$r13+],$r11						\n\ | ||||
|       move.d [$r13+],$r10						\n\ | ||||
|       move.d [$r13+],$r9						\n\ | ||||
|       move.d [$r13+],$r8						\n\ | ||||
|       move.d [$r13+],$r7						\n\ | ||||
|       move.d [$r13+],$r6						\n\ | ||||
|       move.d [$r13+],$r5						\n\ | ||||
|       move.d [$r13+],$r4						\n\ | ||||
|       move.d [$r13+],$r3						\n\ | ||||
|       move.d [$r13+],$r2						\n\ | ||||
|       move.d [$r13+],$r1						\n\ | ||||
|       move.d [$r13+],$r0						\n\ | ||||
|       move [$r13+],$srp							\n\ | ||||
|       move $mof,$r13							\n\ | ||||
|       jump $r13								\n\ | ||||
|       setf" | ||||
|  | ||||
|      /* No outputs.  */ | ||||
|      : | ||||
|  | ||||
|      /* Inputs.  */ | ||||
|      : "r" (buf), "r" (val) | ||||
|      : "r13", "memory"); | ||||
|  | ||||
| #else /* not __arch_common_v10_v32 or __arch_v32 */ | ||||
|   __asm__ __volatile__ | ||||
|     ("move [%0+17*4],$ccr						\n\ | ||||
|       move [%0+16*4],$srp						\n\ | ||||
|       test.d %1								\n\ | ||||
|       beq 0f								\n\ | ||||
|       nop								\n\ | ||||
|       move.d %1,[%0+6*4]	; Offset for r9.			\n\ | ||||
| 0:									\n\ | ||||
|       movem [%0],$pc" | ||||
|  | ||||
|      /* No outputs.  */ | ||||
|      : | ||||
|  | ||||
|      /* Inputs.  */ | ||||
|      : "r" (buf), "r" (val) | ||||
|      : "memory"); | ||||
| #endif /* not __arch_common_v10_v32 or __arch_v32 */ | ||||
| } | ||||
							
								
								
									
										166
									
								
								newlib/libc/machine/cris/sys/errno.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										166
									
								
								newlib/libc/machine/cris/sys/errno.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,166 @@ | ||||
| /* This file is to be kept in sync with newlib/libc/include/sys/errno.h | ||||
|    on which it is based, except values used or returned by syscalls must | ||||
|    be those of the Linux/CRIS kernel.  */ | ||||
|  | ||||
| /* errno is not a global variable, because that would make using it | ||||
|    non-reentrant.  Instead, its address is returned by the function | ||||
|    __errno.  */ | ||||
|  | ||||
| #ifndef _SYS_ERRNO_H_ | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| #define _SYS_ERRNO_H_ | ||||
|  | ||||
| #include <sys/reent.h> | ||||
|  | ||||
| #ifndef _REENT_ONLY | ||||
| #define errno (*__errno()) | ||||
| extern int *__errno _PARAMS ((void)); | ||||
| #endif | ||||
|  | ||||
| /* Please don't use these variables directly. | ||||
|    Use strerror instead. */ | ||||
| extern _CONST char * _CONST _sys_errlist[]; | ||||
| extern int _sys_nerr; | ||||
|  | ||||
| #define __errno_r(ptr) ((ptr)->_errno) | ||||
|  | ||||
| /* Adjusted to the linux asm/errno.h */ | ||||
| #define	EPERM		 1	/* Operation not permitted */ | ||||
| #define	ENOENT		 2	/* No such file or directory */ | ||||
| #define	ESRCH		 3	/* No such process */ | ||||
| #define	EINTR		 4	/* Interrupted system call */ | ||||
| #define	EIO		 5	/* I/O error */ | ||||
| #define	ENXIO		 6	/* No such device or address */ | ||||
| #define	E2BIG		 7	/* Arg list too long */ | ||||
| #define	ENOEXEC		 8	/* Exec format error */ | ||||
| #define	EBADF		 9	/* Bad file number */ | ||||
| #define	ECHILD		10	/* No child processes */ | ||||
| #define	EAGAIN		11	/* Try again */ | ||||
| #define	ENOMEM		12	/* Out of memory */ | ||||
| #define	EACCES		13	/* Permission denied */ | ||||
| #define	EFAULT		14	/* Bad address */ | ||||
| #define	ENOTBLK		15	/* Block device required */ | ||||
| #define	EBUSY		16	/* Device or resource busy */ | ||||
| #define	EEXIST		17	/* File exists */ | ||||
| #define	EXDEV		18	/* Cross-device link */ | ||||
| #define	ENODEV		19	/* No such device */ | ||||
| #define	ENOTDIR		20	/* Not a directory */ | ||||
| #define	EISDIR		21	/* Is a directory */ | ||||
| #define	EINVAL		22	/* Invalid argument */ | ||||
| #define	ENFILE		23	/* File table overflow */ | ||||
| #define	EMFILE		24	/* Too many open files */ | ||||
| #define	ENOTTY		25	/* Not a typewriter */ | ||||
| #define	ETXTBSY		26	/* Text file busy */ | ||||
| #define	EFBIG		27	/* File too large */ | ||||
| #define	ENOSPC		28	/* No space left on device */ | ||||
| #define	ESPIPE		29	/* Illegal seek */ | ||||
| #define	EROFS		30	/* Read-only file system */ | ||||
| #define	EMLINK		31	/* Too many links */ | ||||
| #define	EPIPE		32	/* Broken pipe */ | ||||
| #define	EDOM		33	/* Math argument out of domain of func */ | ||||
| #define	ERANGE		34	/* Math result not representable */ | ||||
| #define	EDEADLK		35	/* Resource deadlock would occur */ | ||||
| #define	ENAMETOOLONG	36	/* File name too long */ | ||||
| #define	ENOLCK		37	/* No record locks available */ | ||||
| #define	ENOSYS		38	/* Function not implemented */ | ||||
| #define	ENOTEMPTY	39	/* Directory not empty */ | ||||
| #define	ELOOP		40	/* Too many symbolic links encountered */ | ||||
| #define	EWOULDBLOCK	EAGAIN	/* Operation would block */ | ||||
| #define	ENOMSG		42	/* No message of desired type */ | ||||
| #define	EIDRM		43	/* Identifier removed */ | ||||
| #define	ECHRNG		44	/* Channel number out of range */ | ||||
| #define	EL2NSYNC	45	/* Level 2 not synchronized */ | ||||
| #define	EL3HLT		46	/* Level 3 halted */ | ||||
| #define	EL3RST		47	/* Level 3 reset */ | ||||
| #define	ELNRNG		48	/* Link number out of range */ | ||||
| #define	EUNATCH		49	/* Protocol driver not attached */ | ||||
| #define	ENOCSI		50	/* No CSI structure available */ | ||||
| #define	EL2HLT		51	/* Level 2 halted */ | ||||
| #define	EBADE		52	/* Invalid exchange */ | ||||
| #define	EBADR		53	/* Invalid request descriptor */ | ||||
| #define	EXFULL		54	/* Exchange full */ | ||||
| #define	ENOANO		55	/* No anode */ | ||||
| #define	EBADRQC		56	/* Invalid request code */ | ||||
| #define	EBADSLT		57	/* Invalid slot */ | ||||
|  | ||||
| #define	EDEADLOCK	EDEADLK | ||||
|  | ||||
| #define	EBFONT		59	/* Bad font file format */ | ||||
| /* This is only used internally in newlib; not returned by the kernel. | ||||
|    EBFONT seems the closest match for a "bad file format" error.  */ | ||||
| #define EFTYPE		EBFONT	/* Inappropriate file type or format */ | ||||
| #define	ENOSTR		60	/* Device not a stream */ | ||||
| #define	ENODATA		61	/* No data available */ | ||||
| #define	ETIME		62	/* Timer expired */ | ||||
| #define	ENOSR		63	/* Out of streams resources */ | ||||
| #define	ENONET		64	/* Machine is not on the network */ | ||||
| #define	ENOPKG		65	/* Package not installed */ | ||||
| #define	EREMOTE		66	/* Object is remote */ | ||||
| #define	ENOLINK		67	/* Link has been severed */ | ||||
| #define	EADV		68	/* Advertise error */ | ||||
| #define	ESRMNT		69	/* Srmount error */ | ||||
| #define	ECOMM		70	/* Communication error on send */ | ||||
| #define	EPROTO		71	/* Protocol error */ | ||||
| #define	EMULTIHOP	72	/* Multihop attempted */ | ||||
| #define	EDOTDOT		73	/* RFS specific error */ | ||||
| #define	EBADMSG		74	/* Not a data message */ | ||||
| #define	EOVERFLOW	75	/* Value too large for defined data type */ | ||||
| #define	ENOTUNIQ	76	/* Name not unique on network */ | ||||
| #define	EBADFD		77	/* File descriptor in bad state */ | ||||
| #define	EREMCHG		78	/* Remote address changed */ | ||||
| #define	ELIBACC		79	/* Can not access a needed shared library */ | ||||
| #define	ELIBBAD		80	/* Accessing a corrupted shared library */ | ||||
| #define	ELIBSCN		81	/* .lib section in a.out corrupted */ | ||||
| #define	ELIBMAX		82	/* Attempting to link in too many shared libraries */ | ||||
| #define	ELIBEXEC	83	/* Cannot exec a shared library directly */ | ||||
| #define	EILSEQ		84	/* Illegal byte sequence */ | ||||
| #define	ERESTART	85	/* Interrupted system call should be restarted */ | ||||
| #define	ESTRPIPE	86	/* Streams pipe error */ | ||||
| #define	EUSERS		87	/* Too many users */ | ||||
| #define	ENOTSOCK	88	/* Socket operation on non-socket */ | ||||
| #define	EDESTADDRREQ	89	/* Destination address required */ | ||||
| #define	EMSGSIZE	90	/* Message too long */ | ||||
| #define	EPROTOTYPE	91	/* Protocol wrong type for socket */ | ||||
| #define	ENOPROTOOPT	92	/* Protocol not available */ | ||||
| #define	EPROTONOSUPPORT	93	/* Protocol not supported */ | ||||
| #define	ESOCKTNOSUPPORT	94	/* Socket type not supported */ | ||||
| #define	EOPNOTSUPP	95	/* Operation not supported on transport endpoint */ | ||||
| #define	EPFNOSUPPORT	96	/* Protocol family not supported */ | ||||
| #define	EAFNOSUPPORT	97	/* Address family not supported by protocol */ | ||||
| #define	EADDRINUSE	98	/* Address already in use */ | ||||
| #define	EADDRNOTAVAIL	99	/* Cannot assign requested address */ | ||||
| #define	ENETDOWN	100	/* Network is down */ | ||||
| #define	ENETUNREACH	101	/* Network is unreachable */ | ||||
| #define	ENETRESET	102	/* Network dropped connection because of reset */ | ||||
| #define	ECONNABORTED	103	/* Software caused connection abort */ | ||||
| #define	ECONNRESET	104	/* Connection reset by peer */ | ||||
| #define	ENOBUFS		105	/* No buffer space available */ | ||||
| #define	EISCONN		106	/* Transport endpoint is already connected */ | ||||
| #define	ENOTCONN	107	/* Transport endpoint is not connected */ | ||||
| #define	ESHUTDOWN	108	/* Cannot send after transport endpoint shutdown */ | ||||
| #define	ETOOMANYREFS	109	/* Too many references: cannot splice */ | ||||
| #define	ETIMEDOUT	110	/* Connection timed out */ | ||||
| #define	ECONNREFUSED	111	/* Connection refused */ | ||||
| #define	EHOSTDOWN	112	/* Host is down */ | ||||
| #define	EHOSTUNREACH	113	/* No route to host */ | ||||
| #define	EALREADY	114	/* Operation already in progress */ | ||||
| #define	EINPROGRESS	115	/* Operation now in progress */ | ||||
| #define	ESTALE		116	/* Stale NFS file handle */ | ||||
| #define	EUCLEAN		117	/* Structure needs cleaning */ | ||||
| #define	ENOTNAM		118	/* Not a XENIX named type file */ | ||||
| #define	ENAVAIL		119	/* No XENIX semaphores available */ | ||||
| #define	EISNAM		120	/* Is a named type file */ | ||||
| #define	EREMOTEIO	121	/* Remote I/O error */ | ||||
| #define	EDQUOT		122	/* Quota exceeded */ | ||||
|  | ||||
| #define	ENOMEDIUM	123	/* No medium found */ | ||||
| #define	EMEDIUMTYPE	124	/* Wrong medium type */ | ||||
|  | ||||
| #define __ELASTERROR 2000	/* Users can add values starting here */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| #endif /* _SYS_ERRNO_H */ | ||||
							
								
								
									
										163
									
								
								newlib/libc/machine/cris/sys/fcntl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								newlib/libc/machine/cris/sys/fcntl.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,163 @@ | ||||
| /* This file is to be kept in sync with newlib/libc/include/sys/fcntl.h, | ||||
|    on which it is based, except values used or returned by syscalls must | ||||
|    be those of the Linux/CRIS kernel.  */ | ||||
|  | ||||
| #ifndef	_FCNTL_ | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
| #define	_FCNTL_ | ||||
| #include <_ansi.h> | ||||
| #define	_FOPEN		(-1)	/* from sys/file.h, kernel use only */ | ||||
| #define	_FREAD		0x0001	/* read enabled */ | ||||
| #define	_FWRITE		0x0002	/* write enabled */ | ||||
| #define	_FNDELAY	0x0800	/* non blocking I/O (4.2 style) */ | ||||
| #define	_FAPPEND	0x0400	/* append (writes guaranteed at the end) */ | ||||
| #define	_FMARK		0x0010	/* internal; mark during gc() */ | ||||
| #define	_FDEFER		0x0020	/* internal; defer for next gc pass */ | ||||
| #define	_FASYNC		0x2000	/* signal pgrp when data ready */ | ||||
| #define	_FCREAT		0x0040	/* open with file create */ | ||||
| #define	_FTRUNC		0x0200	/* open with truncation */ | ||||
| #define	_FEXCL		0x0080	/* error on open if file exists */ | ||||
| #define	_FNBIO	    _FNONBLOCK	/* non blocking I/O (sys5 style) */ | ||||
| #define	_FSYNC		0x1000	/* do all writes synchronously */ | ||||
| #define	_FNONBLOCK	0x0800	/* non blocking I/O (POSIX style) */ | ||||
| #define	_FNOCTTY	0x0100	/* don't assign a ctty on this open */ | ||||
|  | ||||
| #define	O_ACCMODE	(O_RDONLY|O_WRONLY|O_RDWR) | ||||
|  | ||||
| /* | ||||
|  * Flag values for open(2) and fcntl(2) | ||||
|  * The kernel adds 1 to the open modes to turn it into some | ||||
|  * combination of FREAD and FWRITE. | ||||
|  */ | ||||
| #define	O_RDONLY	0		/* +1 == FREAD */ | ||||
| #define	O_WRONLY	1		/* +1 == FWRITE */ | ||||
| #define	O_RDWR		2		/* +1 == FREAD|FWRITE */ | ||||
| #define	O_APPEND	_FAPPEND | ||||
| #define	O_CREAT		_FCREAT | ||||
| #define	O_TRUNC		_FTRUNC | ||||
| #define	O_EXCL		_FEXCL | ||||
| /*	O_SYNC		_FSYNC		not posix, defined below */ | ||||
| /*	O_NDELAY	_FNDELAY 	set in include/fcntl.h */ | ||||
| /*	O_NDELAY	_FNBIO 		set in 5include/fcntl.h */ | ||||
| #define	O_NONBLOCK	_FNONBLOCK | ||||
| #define	O_NOCTTY	_FNOCTTY | ||||
|  | ||||
| #ifndef	_POSIX_SOURCE | ||||
|  | ||||
| #define	O_SYNC		_FSYNC | ||||
|  | ||||
| /* | ||||
|  * Flags that work for fcntl(fd, F_SETFL, FXXXX) | ||||
|  */ | ||||
| #define	FAPPEND		_FAPPEND | ||||
| #define	FSYNC		_FSYNC | ||||
| #define	FASYNC		_FASYNC | ||||
| #define	FNBIO		_FNBIO | ||||
| #define	FNONBIO		_FNONBLOCK	/* XXX fix to be NONBLOCK everywhere */ | ||||
| #define	FNDELAY		_FNDELAY | ||||
|  | ||||
| /* | ||||
|  * Flags that are disallowed for fcntl's (FCNTLCANT); | ||||
|  * used for opens, internal state, or locking. | ||||
|  */ | ||||
| #define	FREAD		_FREAD | ||||
| #define	FWRITE		_FWRITE | ||||
| #define	FMARK		_FMARK | ||||
| #define	FDEFER		_FDEFER | ||||
| #define	FSHLOCK		_FSHLOCK | ||||
| #define	FEXLOCK		_FEXLOCK | ||||
|  | ||||
| /* | ||||
|  * The rest of the flags, used only for opens | ||||
|  */ | ||||
| #define	FOPEN		_FOPEN | ||||
| #define	FCREAT		_FCREAT | ||||
| #define	FTRUNC		_FTRUNC | ||||
| #define	FEXCL		_FEXCL | ||||
| #define	FNOCTTY		_FNOCTTY | ||||
|  | ||||
| #endif	/* !_POSIX_SOURCE */ | ||||
|  | ||||
| /* XXX close on exec request; must match UF_EXCLOSE in user.h */ | ||||
| #define	FD_CLOEXEC	1	/* posix */ | ||||
|  | ||||
| /* fcntl(2) requests */ | ||||
| #define F_DUPFD		0	/* dup */ | ||||
| #define F_GETFD		1	/* get f_flags */ | ||||
| #define F_SETFD		2	/* set f_flags */ | ||||
| #define F_GETFL		3	/* more flags (cloexec) */ | ||||
| #define F_SETFL		4 | ||||
| #define F_GETLK		5 | ||||
| #define F_SETLK		6 | ||||
| #define F_SETLKW	7 | ||||
|  | ||||
| #define F_SETOWN	8	/*  for sockets. */ | ||||
| #define F_GETOWN	9	/*  for sockets. */ | ||||
|  | ||||
| /* for F_[GET|SET]FL */ | ||||
| #define FD_CLOEXEC	1	/* actually anything with low bit set goes */ | ||||
|  | ||||
| /* for posix fcntl() and lockf() */ | ||||
| #define F_RDLCK		0 | ||||
| #define F_WRLCK		1 | ||||
| #define F_UNLCK		2 | ||||
|  | ||||
| /* for old implementation of bsd flock () */ | ||||
| #define F_EXLCK		4	/* or 3 */ | ||||
| #define F_SHLCK		8	/* or 4 */ | ||||
|  | ||||
| /* operations for bsd flock(), also used by the kernel implementation */ | ||||
| #define LOCK_SH		1	/* shared lock */ | ||||
| #define LOCK_EX		2	/* exclusive lock */ | ||||
| #define LOCK_NB		4	/* or'd with one of the above to prevent | ||||
| 				   blocking */ | ||||
| #define LOCK_UN		8	/* remove lock */ | ||||
|  | ||||
| /* file segment locking set data type - information passed to system by user */ | ||||
| struct flock { | ||||
| 	short	l_type;		/* F_RDLCK, F_WRLCK, or F_UNLCK */ | ||||
| 	short	l_whence;	/* flag to choose starting offset */ | ||||
| 	long	l_start;	/* relative offset, in bytes */ | ||||
| 	long	l_len;		/* length, in bytes; 0 means lock to EOF */ | ||||
| 	short	l_pid;		/* returned with F_GETLK */ | ||||
| 	short	l_xxx;		/* reserved for future use */ | ||||
| }; | ||||
|  | ||||
| #ifndef	_POSIX_SOURCE | ||||
| /* extended file segment locking set data type */ | ||||
| struct eflock { | ||||
| 	short	l_type;		/* F_RDLCK, F_WRLCK, or F_UNLCK */ | ||||
| 	short	l_whence;	/* flag to choose starting offset */ | ||||
| 	long	l_start;	/* relative offset, in bytes */ | ||||
| 	long	l_len;		/* length, in bytes; 0 means lock to EOF */ | ||||
| 	short	l_pid;		/* returned with F_GETLK */ | ||||
| 	short	l_xxx;		/* reserved for future use */ | ||||
| 	long	l_rpid;		/* Remote process id wanting this lock */ | ||||
| 	long	l_rsys;		/* Remote system id wanting this lock */ | ||||
| }; | ||||
| #endif	/* !_POSIX_SOURCE */ | ||||
|  | ||||
|  | ||||
| #include <sys/types.h> | ||||
| #include <sys/stat.h>		/* sigh. for the mode bits for open/creat */ | ||||
|  | ||||
| extern int open _PARAMS ((const char *, int, ...)); | ||||
| extern int creat _PARAMS ((const char *, mode_t)); | ||||
| extern int fcntl _PARAMS ((int, int, ...)); | ||||
|  | ||||
| /* Provide _<systemcall> prototypes for functions provided by some versions | ||||
|    of newlib.  */ | ||||
| #ifdef _COMPILING_NEWLIB | ||||
| extern int _open _PARAMS ((const char *, int, ...)); | ||||
| extern int _fcntl _PARAMS ((int, int, ...)); | ||||
| #ifdef __LARGE64_FILES | ||||
| extern int _open64 _PARAMS ((const char *, int, ...)); | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| #endif	/* !_FCNTL_ */ | ||||
							
								
								
									
										89
									
								
								newlib/libc/machine/cris/sys/signal.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								newlib/libc/machine/cris/sys/signal.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| /* This file is to be kept in sync (well, reasonably so, it's quite | ||||
|    different) with newlib/libc/include/sys/signal.h on which it is | ||||
|    based, except values used or returned by syscalls must be those of | ||||
|    the Linux/CRIS kernel.  */ | ||||
|  | ||||
| /* sys/signal.h */ | ||||
|  | ||||
| #ifndef _SYS_SIGNAL_H | ||||
| #define _SYS_SIGNAL_H | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #include "_ansi.h" | ||||
|  | ||||
| typedef unsigned long sigset_t; | ||||
|  | ||||
| /* Adjusted to linux, has unused sa_restorer field and unsigned long | ||||
|    sa_flags; relatively unimportant though.  */ | ||||
| /* Type of a signal handler.  */ | ||||
| typedef void (*__sighandler_t)(int); | ||||
|  | ||||
| /* The type used in newlib sources.  */ | ||||
| typedef __sighandler_t _sig_func_ptr; | ||||
|  | ||||
| struct sigaction { | ||||
| 	__sighandler_t sa_handler; | ||||
| 	sigset_t sa_mask; | ||||
| 	unsigned long sa_flags; | ||||
| 	void (*sa_restorer)(void); | ||||
| }; | ||||
|  | ||||
| /* Adjusted to glibc; other values.  */ | ||||
| #define SA_NOCLDSTOP 1	/* only value supported now for sa_flags */ | ||||
| #define SIG_SETMASK 2	/* set mask with sigprocmask() */ | ||||
| #define SIG_BLOCK 0	/* set of signals to block */ | ||||
| #define SIG_UNBLOCK 1	/* set of signals to, well, unblock */ | ||||
|  | ||||
| /* These depend upon the type of sigset_t, which right now | ||||
|    is always a long.. They're in the POSIX namespace, but | ||||
|    are not ANSI. */ | ||||
| #define sigaddset(what,sig) (*(what) |= (1<<(sig))) | ||||
| #define sigemptyset(what)   (*(what) = 0) | ||||
|  | ||||
| int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b); | ||||
|  | ||||
| #define SIGHUP		 1 | ||||
| #define SIGINT		 2 | ||||
| #define SIGQUIT		 3 | ||||
| #define SIGILL		 4 | ||||
| #define SIGTRAP		 5 | ||||
| #define SIGABRT		 6 | ||||
| #define SIGIOT		 6 | ||||
| #define SIGBUS		 7 | ||||
| #define SIGFPE		 8 | ||||
| #define SIGKILL		 9 | ||||
| #define SIGUSR1		10 | ||||
| #define SIGSEGV		11 | ||||
| #define SIGUSR2		12 | ||||
| #define SIGPIPE		13 | ||||
| #define SIGALRM		14 | ||||
| #define SIGTERM		15 | ||||
| #define SIGSTKFLT	16 | ||||
| #define SIGCHLD		17 | ||||
| #define SIGCONT		18 | ||||
| #define SIGSTOP		19 | ||||
| #define SIGTSTP		20 | ||||
| #define SIGTTIN		21 | ||||
| #define SIGTTOU		22 | ||||
| #define SIGURG		23 | ||||
| #define SIGXCPU		24 | ||||
| #define SIGXFSZ		25 | ||||
| #define SIGVTALRM	26 | ||||
| #define SIGPROF		27 | ||||
| #define SIGWINCH	28 | ||||
| #define SIGIO		29 | ||||
| #define SIGPOLL		SIGIO | ||||
| #define SIGPWR		30 | ||||
| #define	NSIG 31 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| #ifndef _SIGNAL_H_ | ||||
| /* Some applications take advantage of the fact that <sys/signal.h> | ||||
|  * and <signal.h> are equivalent in glibc.  Allow for that here.  */ | ||||
| #include <signal.h> | ||||
| #endif | ||||
| #endif /* _SYS_SIGNAL_H */ | ||||
		Reference in New Issue
	
	Block a user