2005-08-10 DJ Delorie <dj@redhat.com>
* configure.host: Add m32c support. * libc/include/machine/ieeefp.h: Likewise. * libc/include/machine/setjmp.h: Likewise. * libc/include/sys/config.h: Likewise. * libc/machine/m32c: New directory, Renesas R8C/M16C/M32C support. * libc/machine/m32c/aclocal.m4: New file. * libc/machine/m32c/configure: Ditto. * libc/machine/m32c/configure.in: Ditto. * libc/machine/m32c/Makefile.am: Ditto. * libc/machine/m32c/Makefile.in: Ditto. * libc/machine/m32c/setjmp.S: Ditto.
This commit is contained in:
parent
250996a91b
commit
56448afa06
|
@ -1,7 +1,21 @@
|
||||||
|
2005-08-10 DJ Delorie <dj@redhat.com>
|
||||||
|
|
||||||
|
* configure.host: Add m32c support.
|
||||||
|
* libc/include/machine/ieeefp.h: Likewise.
|
||||||
|
* libc/include/machine/setjmp.h: Likewise.
|
||||||
|
* libc/include/sys/config.h: Likewise.
|
||||||
|
* libc/machine/m32c: New directory, Renesas R8C/M16C/M32C support.
|
||||||
|
* libc/machine/m32c/aclocal.m4: New file.
|
||||||
|
* libc/machine/m32c/configure: Ditto.
|
||||||
|
* libc/machine/m32c/configure.in: Ditto.
|
||||||
|
* libc/machine/m32c/Makefile.am: Ditto.
|
||||||
|
* libc/machine/m32c/Makefile.in: Ditto.
|
||||||
|
* libc/machine/m32c/setjmp.S: Ditto.
|
||||||
|
|
||||||
2005-08-02 Bob Wilson <bob.wilson@acm.org>
|
2005-08-02 Bob Wilson <bob.wilson@acm.org>
|
||||||
|
|
||||||
* libm/math/ef_hypot.c (__ieee754_hypotf): Add missing exponent bias
|
* libm/math/ef_hypot.c (__ieee754_hypotf): Add missing exponent bias
|
||||||
to the value for 2^126.
|
to the value for 2^126.
|
||||||
|
|
||||||
2005-07-26 Hans-Peter Nilsson <hp@bitrange.com>
|
2005-07-26 Hans-Peter Nilsson <hp@bitrange.com>
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ case "${target_optspace}:${host}" in
|
||||||
yes:*)
|
yes:*)
|
||||||
newlib_cflags="${newlib_cflags} -Os"
|
newlib_cflags="${newlib_cflags} -Os"
|
||||||
;;
|
;;
|
||||||
:m32r-* | :d10v-* | :d30v-* | :avr-*)
|
:m32r-* | :d10v-* | :d30v-* | :avr-* | :m32c-* )
|
||||||
newlib_cflags="${newlib_cflags} -Os"
|
newlib_cflags="${newlib_cflags} -Os"
|
||||||
;;
|
;;
|
||||||
no:* | :*)
|
no:* | :*)
|
||||||
|
@ -145,6 +145,11 @@ case "${host_cpu}" in
|
||||||
iq2000)
|
iq2000)
|
||||||
machine_dir=iq2000
|
machine_dir=iq2000
|
||||||
;;
|
;;
|
||||||
|
m32c)
|
||||||
|
machine_dir=m32c
|
||||||
|
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -DABORT_PROVIDED -DSMALL_MEMORY"
|
||||||
|
;;
|
||||||
|
|
||||||
m32r*)
|
m32r*)
|
||||||
machine_dir=m32r
|
machine_dir=m32r
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -269,6 +269,11 @@
|
||||||
#endif /* __ARMEL__ */
|
#endif /* __ARMEL__ */
|
||||||
#endif /* __MAVERICK__ */
|
#endif /* __MAVERICK__ */
|
||||||
|
|
||||||
|
#ifdef __m32c__
|
||||||
|
#define __IEEE_LITTLE_ENDIAN
|
||||||
|
#define __SMALL_BITFIELDS
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __CRIS__
|
#ifdef __CRIS__
|
||||||
#define __IEEE_LITTLE_ENDIAN
|
#define __IEEE_LITTLE_ENDIAN
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -213,6 +213,15 @@ _BEGIN_STD_C
|
||||||
#define _JBLEN 18
|
#define _JBLEN 18
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __m32c__
|
||||||
|
#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
|
||||||
|
#define _JBLEN (22/2)
|
||||||
|
#else
|
||||||
|
#define _JBLEN (34/2)
|
||||||
|
#endif
|
||||||
|
#define _JBTYPE unsigned short
|
||||||
|
#endif /* __m32c__ */
|
||||||
|
|
||||||
#ifdef _JBLEN
|
#ifdef _JBLEN
|
||||||
#ifdef _JBTYPE
|
#ifdef _JBTYPE
|
||||||
typedef _JBTYPE jmp_buf[_JBLEN];
|
typedef _JBTYPE jmp_buf[_JBLEN];
|
||||||
|
|
|
@ -105,6 +105,22 @@
|
||||||
#define __BUFSIZ__ 16
|
#define __BUFSIZ__ 16
|
||||||
#define _REENT_SMALL
|
#define _REENT_SMALL
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __m32c__
|
||||||
|
#define __SMALL_BITFIELDS
|
||||||
|
#undef INT_MAX
|
||||||
|
#undef UINT_MAX
|
||||||
|
#define INT_MAX __INT_MAX__
|
||||||
|
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||||
|
#define MALLOC_ALIGNMENT 8
|
||||||
|
#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
|
||||||
|
#define _POINTER_INT short
|
||||||
|
#else
|
||||||
|
#define _POINTER_INT long
|
||||||
|
#endif
|
||||||
|
#define __BUFSIZ__ 16
|
||||||
|
#define _REENT_SMALL
|
||||||
|
#endif /* __m32c__ */
|
||||||
|
|
||||||
|
|
||||||
/* This block should be kept in sync with GCC's limits.h. The point
|
/* This block should be kept in sync with GCC's limits.h. The point
|
||||||
of having these definitions here is to not include limits.h, which
|
of having these definitions here is to not include limits.h, which
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
## Process this file with automake to generate Makefile.in
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = cygnus
|
||||||
|
|
||||||
|
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||||
|
|
||||||
|
noinst_LIBRARIES = lib.a
|
||||||
|
|
||||||
|
lib_a_SOURCES = setjmp.S
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I ../../..
|
||||||
|
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
|
@ -0,0 +1,327 @@
|
||||||
|
# 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
|
||||||
|
|
||||||
|
lib_a_SOURCES = setjmp.S
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I ../../..
|
||||||
|
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
LIBRARIES = $(noinst_LIBRARIES)
|
||||||
|
|
||||||
|
|
||||||
|
DEFS = @DEFS@ -I. -I$(srcdir)
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
lib_a_LIBADD =
|
||||||
|
lib_a_OBJECTS = setjmp.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)
|
||||||
|
OBJECTS = $(lib_a_OBJECTS)
|
||||||
|
|
||||||
|
all: all-redirect
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .S .c .o .s
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||||
|
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
|
||||||
|
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||||
|
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in \
|
||||||
|
../../../acinclude.m4 ../../../aclocal.m4 \
|
||||||
|
../../../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:
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
|
.s.o:
|
||||||
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
|
.S.o:
|
||||||
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.o core *.core
|
||||||
|
|
||||||
|
clean-compile:
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
maintainer-clean-compile:
|
||||||
|
|
||||||
|
lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)
|
||||||
|
-rm -f lib.a
|
||||||
|
$(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
|
||||||
|
$(RANLIB) lib.a
|
||||||
|
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS)'; \
|
||||||
|
unique=`for i in $$list; do echo $$i; done | \
|
||||||
|
awk ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
here=`pwd` && cd $(srcdir) \
|
||||||
|
&& mkid -f$$here/ID $$unique $(LISP)
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS)'; \
|
||||||
|
unique=`for i in $$list; do echo $$i; done | \
|
||||||
|
awk ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
||||||
|
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
|
||||||
|
|
||||||
|
mostlyclean-tags:
|
||||||
|
|
||||||
|
clean-tags:
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID
|
||||||
|
|
||||||
|
maintainer-clean-tags:
|
||||||
|
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
|
||||||
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
# tarfile.
|
||||||
|
distcheck: dist
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
|
||||||
|
mkdir $(distdir)/=build
|
||||||
|
mkdir $(distdir)/=inst
|
||||||
|
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
||||||
|
cd $(distdir)/=build \
|
||||||
|
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
@banner="$(distdir).tar.gz is ready for distribution"; \
|
||||||
|
dashes=`echo "$$banner" | sed s/./=/g`; \
|
||||||
|
echo "$$dashes"; \
|
||||||
|
echo "$$banner"; \
|
||||||
|
echo "$$dashes"
|
||||||
|
dist: distdir
|
||||||
|
-chmod -R a+r $(distdir)
|
||||||
|
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
dist-all: distdir
|
||||||
|
-chmod -R a+r $(distdir)
|
||||||
|
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
-rm -rf $(distdir)
|
||||||
|
mkdir $(distdir)
|
||||||
|
-chmod 777 $(distdir)
|
||||||
|
@for file in $(DISTFILES); do \
|
||||||
|
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
info-am:
|
||||||
|
info: info-am
|
||||||
|
dvi-am:
|
||||||
|
dvi: dvi-am
|
||||||
|
check-am:
|
||||||
|
check: check-am
|
||||||
|
installcheck-am:
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-info-am:
|
||||||
|
install-info: install-info-am
|
||||||
|
install-exec-am:
|
||||||
|
install-exec: install-exec-am
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
install-data: install-data-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
install: install-am
|
||||||
|
uninstall-am:
|
||||||
|
uninstall: uninstall-am
|
||||||
|
all-am: Makefile $(LIBRARIES)
|
||||||
|
all-redirect: all-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||||
|
installdirs:
|
||||||
|
|
||||||
|
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||||
|
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
|
||||||
|
mostlyclean-tags mostlyclean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
clean-am: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
distclean-am: distclean-noinstLIBRARIES distclean-compile \
|
||||||
|
distclean-tags distclean-generic clean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f config.status
|
||||||
|
|
||||||
|
maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
|
||||||
|
maintainer-clean-compile maintainer-clean-tags \
|
||||||
|
maintainer-clean-generic distclean-am
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f config.status
|
||||||
|
|
||||||
|
.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
|
||||||
|
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
|
||||||
|
mostlyclean-compile distclean-compile clean-compile \
|
||||||
|
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
|
||||||
|
clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
|
||||||
|
check-am installcheck-am installcheck install-info-am install-info \
|
||||||
|
install-exec-am install-exec install-data-am install-data install-am \
|
||||||
|
install uninstall-am uninstall all-redirect all-am all installdirs \
|
||||||
|
mostlyclean-generic distclean-generic clean-generic \
|
||||||
|
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
|
@ -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
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,12 @@
|
||||||
|
dnl This is the newlib/libc/machine/m32r configure.in file.
|
||||||
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
AC_PREREQ(2.5)
|
||||||
|
AC_INIT(setjmp.S)
|
||||||
|
|
||||||
|
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
|
||||||
|
AC_CONFIG_AUX_DIR(../../../..)
|
||||||
|
|
||||||
|
NEWLIB_CONFIGURE(../../..)
|
||||||
|
|
||||||
|
AC_OUTPUT(Makefile)
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
Copyright (c) 2005 Red Hat Incorporated.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
The name of Red Hat Incorporated may not be used to endorse
|
||||||
|
or promote products derived from this software without specific
|
||||||
|
prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED 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.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
|
||||||
|
#define A16 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* We implement setjmp/longjmp much like the way gcc implements
|
||||||
|
exceptions - we create new stack frames, then switch to them and
|
||||||
|
return. Thus, the two setjmp's below each push all the relevent
|
||||||
|
registers, then copy the whole frame into the buffer (first $sp is
|
||||||
|
moved, then smovf copies the frame itself), and the two longjmps
|
||||||
|
restore $sp, copy the frame back into place, and issue the same
|
||||||
|
return as the setjmp would have used.
|
||||||
|
|
||||||
|
Since the sizes of registers differs between the 16 and 24 bit
|
||||||
|
models, we provide separate implementations for each rather than
|
||||||
|
trying to parameterize them.
|
||||||
|
|
||||||
|
Jump buffer sizes: 21 bytes for 16 bit, 34 bytes for 24 bit.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
#ifdef A16 /* 16 bit versions */
|
||||||
|
|
||||||
|
.global _setjmp
|
||||||
|
_setjmp:
|
||||||
|
enter #0
|
||||||
|
pushm r1,r2,r3,a0,a1,sb,fb
|
||||||
|
|
||||||
|
; At this point, the stack looks like this:
|
||||||
|
; ... [pc:3] [oldfb:2] <fb> [r1:2] [r2:2] [r3:2] [a0:2] [a1:2] [sb:2] [fb:2] <sp> */
|
||||||
|
|
||||||
|
mov.w r1,a1 ; a1 is the destination of smovf
|
||||||
|
mov.b #0,r1h
|
||||||
|
stc sp,a0 ; r1h:a0 is the source of smovf
|
||||||
|
mov.w a0,[a1]
|
||||||
|
add.w #2,a1
|
||||||
|
mov.w #19,r3 ; plus two for sp later
|
||||||
|
smovf.b
|
||||||
|
|
||||||
|
; Return 0 to caller.
|
||||||
|
mov.w #0,r0
|
||||||
|
popm r1,r2,r3,a0,a1,sb,fb
|
||||||
|
exitd
|
||||||
|
|
||||||
|
.global _longjmp
|
||||||
|
_longjmp:
|
||||||
|
enter #0
|
||||||
|
mov.w r1,a0 ; pointer to jump buf
|
||||||
|
mov.w r2,r0 ; setjmp's "new" return value
|
||||||
|
|
||||||
|
mov.b #0,r1h ; r1h: a0 is the source, now jmpbuf
|
||||||
|
mov.w [a0],a1 ; dest is new stack
|
||||||
|
ldc a1,sp
|
||||||
|
add.w #2,a0
|
||||||
|
mov.w #19,r3
|
||||||
|
smovf.b
|
||||||
|
|
||||||
|
;; now return to our caller with this newly restored frame
|
||||||
|
popm r1,r2,r3,a0,a1,sb,fb
|
||||||
|
exitd
|
||||||
|
|
||||||
|
#else /* 24 bit versions */
|
||||||
|
|
||||||
|
.global _setjmp
|
||||||
|
_setjmp:
|
||||||
|
enter #0
|
||||||
|
pushm r1,r2,r3,a0,a1,sb,fb
|
||||||
|
|
||||||
|
; At this point, the stack looks like this:
|
||||||
|
; ... [jbuf:4] [pc:4] [oldfb:4] <fb> [r1:2] [r2:2] [r3:2] [a0:4] [a1:4] [sb:4] [fb:4] <sp> */
|
||||||
|
|
||||||
|
mov.l 8[fb],a1 ; a1 is the destination of smovf
|
||||||
|
stc sp,a0 ; r1h:a0 is the source of smovf
|
||||||
|
mov.l a0,[a1]
|
||||||
|
add.l #4,a1
|
||||||
|
mov.w #30,r3 ; plus two for sp later
|
||||||
|
smovf.b
|
||||||
|
|
||||||
|
; Return 0 to caller.
|
||||||
|
mov.w #0,r0
|
||||||
|
popm r1,r2,r3,a0,a1,sb,fb
|
||||||
|
exitd
|
||||||
|
|
||||||
|
.global _longjmp
|
||||||
|
_longjmp:
|
||||||
|
enter #0
|
||||||
|
; ... [rv:2] [jbuf:4] [pc:4] [oldfb:4] <fb>
|
||||||
|
mov.l 8[fb],a0 ; pointer to jump buf
|
||||||
|
mov.w 12[fb],r0 ; setjmp's "new" return value
|
||||||
|
|
||||||
|
mov.l [a0],a1 ; dest is new stack
|
||||||
|
ldc a1,sp
|
||||||
|
add.l #4,a0
|
||||||
|
mov.w #30,r3
|
||||||
|
smovf.b
|
||||||
|
|
||||||
|
;; now return to our caller with this newly restored frame
|
||||||
|
popm r1,r2,r3,a0,a1,sb,fb
|
||||||
|
exitd
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue