2004-10-05 Tomer Levi <Tomer.Levi@nsc.com>

* configure.host: Add support for crx.
        * libc/include/machine/ieeefp.h: Ditto.
        * libc/include/machine/setjmp.h: Ditto.
        * libc/machine/crx/Makefile.am: New file.
        * libc/machine/crx/configure.in: Ditto.
        * libc/machine/crx/setjmp.S: Ditto.
        * libc/machine/crx/getenv.c: Ditto.
        * libc/machine/crx/aclocal.m4: Generate.
        * libc/machine/crx/configure: Ditto.
        * libc/machine/crx/Makefile.in: Ditto.
        * libc/machine/crx/sys/asm.h: New file.
        * libc/machine/crx/sys/libh.h: Ditto.
        * libc/machine/crx/sys/syscall.h: Ditto.
This commit is contained in:
Jeff Johnston 2004-10-05 19:44:24 +00:00
parent 423152ed0a
commit 1185687a7b
14 changed files with 3239 additions and 0 deletions

View File

@ -1,3 +1,19 @@
2004-10-05 Tomer Levi <Tomer.Levi@nsc.com>
* configure.host: Add support for crx.
* libc/include/machine/ieeefp.h: Ditto.
* libc/include/machine/setjmp.h: Ditto.
* libc/machine/crx/Makefile.am: New file.
* libc/machine/crx/configure.in: Ditto.
* libc/machine/crx/setjmp.S: Ditto.
* libc/machine/crx/getenv.c: Ditto.
* libc/machine/crx/aclocal.m4: Generate.
* libc/machine/crx/configure: Ditto.
* libc/machine/crx/Makefile.in: Ditto.
* libc/machine/crx/sys/asm.h: New file.
* libc/machine/crx/sys/libh.h: Ditto.
* libc/machine/crx/sys/syscall.h: Ditto.
2004-10-05 Jeff Johnston <jjohnstn@redhat.com>
* Makefile.am (stmp-targ-include): Support sys header files

View File

@ -93,6 +93,9 @@ case "${host_cpu}" in
avr*)
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mcall-prologues"
;;
crx*)
machine_dir=crx
;;
d10v*)
machine_dir=d10v
;;
@ -307,6 +310,9 @@ case "${host}" in
sys_dir=arm
fi
;;
crx*)
sys_dir=
;;
d10v*)
sys_dir=d10v
;;
@ -496,6 +502,10 @@ case "${host}" in
avr*)
newlib_cflags="${newlib_cflags} -DNO_EXEC -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
;;
crx-*-*)
newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DMISSING_SYSCALL_NAMES"
syscall_dir=
;;
d10v*)
newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
syscall_dir=syscalls

View File

@ -214,6 +214,10 @@
#endif
#endif
#ifdef __CRX__
#define __IEEE_LITTLE_ENDIAN
#endif
#ifdef __fr30__
#define __IEEE_BIG_ENDIAN
#endif

View File

@ -174,6 +174,10 @@ _BEGIN_STD_C
#define _JBTYPE double
#endif
#ifdef __CRX__
#define _JBLEN 9
#endif
#ifdef __fr30__
#define _JBLEN 10
#endif

View File

@ -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 getenv.c
ACLOCAL_AMFLAGS = -I ../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host

View File

@ -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 getenv.c
ACLOCAL_AMFLAGS = -I ../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
CONFIG_CLEAN_FILES =
LIBRARIES = $(noinst_LIBRARIES)
DEFS = @DEFS@ -I. -I$(srcdir)
CPPFLAGS = @CPPFLAGS@
LIBS = @LIBS@
lib_a_LIBADD =
lib_a_OBJECTS = setjmp.o getenv.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:

366
newlib/libc/machine/crx/aclocal.m4 vendored Normal file
View 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.12.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/crx/configure vendored Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
dnl This is the newlib/libc/machine/arm configure.in file.
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.5)
AC_INIT(Makefile.am)
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
AC_CONFIG_AUX_DIR(../../../..)
NEWLIB_CONFIGURE(../../..)
AC_OUTPUT(Makefile)

View File

@ -0,0 +1,24 @@
/* getenv.c -- Implementation of the getenv() routine
*
* Copyright (c) 2004 National Semiconductor Corporation
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice is included verbatim in any distributions. No written agreement,
* license, or royalty fee is required for any of the authorized uses.
* Modifications to this software may be copyrighted by their authors
* and need not follow the licensing terms described here, provided that
* the new terms are clearly indicated on the first page of each file where
* they apply.
*/
/* getenv() is implemented as a low-level function,
thus we only invoke here the system call. */
char * getenv (const char *name)
{
char *_getenv(const char *);
return (_getenv (name));
}

View File

@ -0,0 +1,51 @@
##############################################################################
# setjmp.S -- CRX setjmp routine #
# #
# Copyright (c) 2004 National Semiconductor Corporation #
# #
# The authors hereby grant permission to use, copy, modify, distribute, #
# and license this software and its documentation for any purpose, provided #
# that existing copyright notices are retained in all copies and that this #
# notice is included verbatim in any distributions. No written agreement, #
# license, or royalty fee is required for any of the authorized uses. #
# Modifications to this software may be copyrighted by their authors #
# and need not follow the licensing terms described here, provided that #
# the new terms are clearly indicated on the first page of each file where #
# they apply. #
# #
# C library -- setjmp, longjmp #
# longjmp(a,v) #
# will generate a "return(v)" #
# from the last call to #
# setjmp(a) #
# by restoring r7-ra, sp, #
# and pc from 'a' #
# and doing a return. (Makes sure that longjmp never returns 0). #
##############################################################################
.text
.file "setjmp.s"
.align 4
.globl _setjmp
.align 4
_setjmp:
#r2: .blkw
storm r2,{r7,r8,r9,r10,r11,r12,r13,r14}
stord sp,0(r2)
movd $0,r0
jump ra
.globl _longjmp
_longjmp:
#r2: .blkw # pointer save area
#r3: .blkw # ret vlaue
loadm r2, {r7,r8,r9,r10,r11,r12,r13,ra}
loadd 0(r2), sp
movd r3, r0
cmpd $0, r3
bne end1
movd $1, r0
end1:
jump ra
.align 4

View File

@ -0,0 +1,421 @@
/* asm.h -- CRX architecture intrinsic functions
*
* Copyright (c) 2004 National Semiconductor Corporation
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice is included verbatim in any distributions. No written agreement,
* license, or royalty fee is required for any of the authorized uses.
* Modifications to this software may be copyrighted by their authors
* and need not follow the licensing terms described here, provided that
* the new terms are clearly indicated on the first page of each file where
* they apply.
*/
#ifndef _ASM
#define _ASM
/* Note that immediate input values are not checked for validity. It is
the user's responsibility to use the intrinsic functions with appropriate
immediate values. */
/* Absolute Instructions */
#define _absb_(src, dest) __asm__("absb %1, %0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _absw_(src, dest) __asm__("absw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _absd_(src, dest) __asm__("absd %1, %0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
/* Addition Instructions */
#define _addb_(src, dest) __asm__("addb %1, %0" : "=r" (dest) : \
"ri" ((unsigned char)src), "0" (dest) : "cc")
#define _addub_(src, dest) __asm__("addub %1, %0" : "=r" (dest) : \
"ri" ((unsigned char)src), "0" (dest) : "cc")
#define _addw_(src, dest) __asm__("addw %1, %0" : "=r" (dest) : \
"ri" ((unsigned short)src), "0" (dest) : "cc")
#define _adduw_(src, dest) __asm__("adduw %1, %0" : "=r" (dest) : \
"ri" ((unsigned short)src), "0" (dest) : "cc")
#define _addd_(src, dest) __asm__("addd %1, %0" : "=r" (dest) : \
"ri" ((unsigned int)src), "0" (dest) : "cc")
#define _addud_(src, dest) __asm__("addud %1, %0" : "=r" (dest) : \
"ri" ((unsigned int)src), "0" (dest) : "cc")
/* Add with Carry */
#define _addcb_(src, dest) __asm__("addcb %1, %0" : "=r" (dest) : \
"ri" ((unsigned char)src), "0" (dest) : "cc")
#define _addcw_(src, dest) __asm__("addcw %1, %0" : "=r" (dest) : \
"ri" ((unsigned short)src), "0" (dest) : "cc")
#define _addcd_(src, dest) __asm__("addcd %1, %0" : "=r" (dest) : \
"ri" ((unsigned int)src), "0" (dest) : "cc")
/* Q-format Add */
#define _addqb_(src, dest) __asm__("addqb %1, %0" : "=r" (dest) : \
"r" ((unsigned char)src), "0" (dest) : "cc")
#define _addqw_(src, dest) __asm__("addqw %1, %0" : "=r" (dest) : \
"r" ((unsigned short)src), "0" (dest) : "cc")
#define _addqd_(src, dest) __asm__("addqd %1, %0" : "=r" (dest) : \
"r" ((unsigned int)src), "0" (dest) : "cc")
/* Bitwise Logical AND */
#define _andb_(src, dest) __asm__("andb %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _andw_(src, dest) __asm__("andw %1,%0" : "=r" (dest) : \
"ri" ((unsigned short)src) , "0" (dest))
#define _andd_(src, dest) __asm__("andd %1,%0" : "=r" (dest) : \
"ri" ((unsigned int)src) , "0" (dest))
/* bswap Instruction */
#define _bswap_(src, dest) __asm__("bswap %1,%0" : "=r" (dest) : \
"r" ((unsigned int)src) , "0" (dest))
/* cbit (clear bit) Instructions */
#define _cbitb_(pos, dest) __asm__("cbitb %1,%0" : "=mr" (dest) : \
"i" ((unsigned char)pos) , "0" (dest) : "cc")
#define _cbitw_(pos, dest) __asm__("cbitw %1,%0" : "=mr" (dest) : \
"i" ((unsigned char)pos) , "0" (dest) : "cc")
#define _cbitd_(pos, dest) __asm__("cbitd %1,%0" : "=r" (dest) : \
"i" ((unsigned char)pos) , "0" (dest) : "cc")
/* Compare Instructions */
#define _cmpb_(src1, src2) __asm__("cmpb %0,%1" : /* no output */ : \
"ri" ((unsigned char)src1) , "r" (src2) : "cc")
#define _cmpw_(src1,src2) __asm__("cmpw %0,%1" : /* no output */ \
: "ri" ((unsigned short)src1) , "r" (src2) : "cc")
#define _cmpd_(src1,src2) __asm__("cmpd %0,%1" : /* no output */ \
: "ri" ((unsigned int)src1) , "r" (src2) : "cc")
/* cntl Count Leading Ones Instructions */
#define _cntl1b_(src, dest) __asm__("cntl1b %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _cntl1w_(src, dest) __asm__("cntl1w %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _cntl1d_(src, dest) __asm__("cntl1d %1,%0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
/* cntl Count Leading Zeros Instructions */
#define _cntl0b_(src, dest) __asm__("cntl0b %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _cntl0w_(src, dest) __asm__("cntl0w %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _cntl0d_(src, dest) __asm__("cntl0d %1,%0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
/* cntl Count Leading Signs Instructions */
#define _cntlsb_(src, dest) __asm__("cntlsb %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _cntlsw_(src, dest) __asm__("cntlsw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _cntlsd_(src, dest) __asm__("cntlsd %1,%0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
/* Disable Inerrupts instructions */
#define _di_() __asm__ volatile ("di\n" : : : "cc")
#define _disable_() __asm__ volatile ("di\n" : : : "cc")
/* Enable Inerrupts instructions */
#define _ei_() __asm__ volatile ("ei\n" : : : "cc")
#define _enable_() __asm__ volatile ("ei\n" : : : "cc")
/* Enable Inerrupts instructions and Wait */
#define _eiwait_() __asm__ volatile ("eiwait" : : : "cc")
/* excp Instructions */
#define _excp_(vector) __asm__ volatile ("excp " # vector)
/* getpid Instruction */
#define _getrfid_(dest) __asm__("getrfid %0" : "=r" (dest) : \
/* No input */ : "cc")
/* Load Instructions */
#define _loadb_(base,dest) __asm__("loadb %1,%0" : "=r" (dest) : \
"m" (base) , "0" (dest))
#define _loadw_(base,dest) __asm__("loadw %1,%0" : "=r" (dest) : \
"m" (base) , "0" (dest))
#define _loadd_(base,dest) __asm__("loadd %1,%0" : "=r" (dest) : \
"m" (base) , "0" (dest))
/* Load Multiple Instructions */
#define _loadm_(src, mask) __asm__("loadm %0,%1" : /* No output */ : \
"r" ((unsigned int)src) , "i" (mask))
#define _loadmp_(src, mask) __asm__("loadmp %0,%1" : /* No output */ : \
"r" ((unsigned int)src) , "i" (mask))
/* Multiply Accumulate Instrutions */
#define _macsb_(hi, lo, src1, src2) __asm__("macsb %1,%0" \
: =l (lo), =h (hi) \
: "r" ((char)src1) , "r" (src2))
#define _macsw_(hi, lo, src1, src2) __asm__("macsw %1,%0" \
: =l (lo), =h (hi) \
: "r" ((short)src1) , "r" (src2))
#define _macsd_(hi, lo, src1, src2) __asm__("macsd %1,%0" \
: =l (lo), =h (hi) \
: "r" ((int)src1) , "r" (src2))
#define _macub_(hi, lo, src1, src2) __asm__("macub %1,%0" \
: =l (lo), =h (hi) \
:"r" ((unsigned char)src1) , "r" (src2))
#define _macuw_(hi, lo, src1, src2) __asm__("macuw %1,%0" \
: =l (lo), =h (hi) \
: "r" ((unsigned short)src1) , "r" (src2))
#define _macud_(hi, lo, src1, src2) __asm__("macud %1,%0" \
: =l (lo), =h (hi) \
: "r" ((unsigned int)src1) , "r" (src2))
/* Q-Format Multiply Accumulate Instrutions */
#define _macqb_(src1, src2) __asm__("macqb %1,%0" \
: =l (lo), =h (hi) \
:"r" ((char)src1) , "r" (src2))
#define _macqw_(src1, src2) __asm__("macqw %1,%0" \
: =l (lo), =h (hi) \
:"r" ((short)src1) , "r" (src2))
#define _macqd_(src1, src2) __asm__("macqd %1,%0" \
: =l (lo), =h (hi) \
:"r" ((int)src1) , "r" (src2))
/* Maximum Instructions */
#define _maxsb_(src, dest) __asm__("maxsb %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _maxsw_(src, dest) __asm__("maxsw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _maxsd_(src, dest) __asm__("maxsd %1,%0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
#define _maxub_(src, dest) __asm__("maxub %1,%0" : "=r" (dest) : \
"r" ((unsigned char)src) , "0" (dest))
#define _maxuw_(src, dest) __asm__("maxuw %1,%0" : "=r" (dest) : \
"r" ((unsigned short)src) , "0" (dest))
#define _maxud_(src, dest) __asm__("maxud %1,%0" : "=r" (dest) : \
"r" ((unsigned int)src) , "0" (dest))
/* Minimum Instructions */
#define _minsb_(src, dest) __asm__("minsb %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _minsw_(src, dest) __asm__("minsw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _minsd_(src, dest) __asm__("minsd %1,%0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
#define _minub_(src, dest) __asm__("minub %1,%0" : "=r" (dest) : \
"r" ((unsigned char)src) , "0" (dest))
#define _minuw_(src, dest) __asm__("minuw %1,%0" : "=r" (dest) : \
"r" ((unsigned short)src) , "0" (dest))
#define _minud_(src, dest) __asm__("minud %1,%0" : "=r" (dest) : \
"r" ((unsigned int)src) , "0" (dest))
/* Move Instructions */
#define _movb_(src, dest) __asm__("movb %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _movw_(src, dest) __asm__("movw %1,%0" : "=r" (dest) : \
"ri" ((unsigned short)src) , "0" (dest))
#define _movd_(src, dest) __asm__("movd %1,%0" : "=r" (dest) : \
"ri" ((unsigned int)src) , "0" (dest))
/* mtpr and mfpr Insturctions */
#define _mtpr_(procregd, src) __asm__("mtpr\t%0," procregd : /* no output */ : \
"r" (src) : "cc")
#define _mfpr_(procregd, dest) __asm__("mfpr\t" procregd ",%0" : "=r" (dest) : \
/* no input */ "0" (dest) : "cc")
/* Multiplication Instructions */
#define _mulsbw_(src, dest) __asm__("mulsbw %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _mulubw_(src, dest) __asm__("mulubw %1,%0" : "=r" (dest) : \
"r" ((unsigned char)src) , "0" (dest))
#define _mulswd_(src, dest) __asm__("mulswd %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _muluwd_(src, dest) __asm__("muluwd %1,%0" : "=r" (dest) : \
"r" ((unsigned short)src) , "0" (dest))
#define _mulb_(src, dest) __asm__("mulb %1,%0" : "=r" (dest) : \
"ri" ((char)src) , "0" (dest))
#define _mulw_(src, dest) __asm__("mulw %1,%0" : "=r" (dest) : \
"ri" ((short)src) , "0" (dest))
#define _muld_(src, dest) __asm__("muld %1,%0" : "=r" (dest) : \
"ri" ((int)src) , "0" (dest))
#define _mullsd_(hi, lo, src1, src2) __asm__("mullsd %2,%3" \
: =l (lo), =h (hi) \
: "r" ((unsigned int)src1) , "r" ((unsigned int)src2))
#define _mullud_(hi, lo, src1, src2) __asm__("mullud %2,%3" \
: =l (lo), =h (hi) \
: "r" ((int)src1) , "r" ((int)src2))
/* Q-Format Multiplication Instructions */
#define _mulqb_(src, dest) __asm__("mulqb %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _mulqw_(src, dest) __asm__("mulqw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
/* nop Instruction */
#define _nop_() __asm__("nop")
/* Negate Instructions */
#define _negb_(src, dest) __asm__("negb %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _negw_(src, dest) __asm__("negw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _negd_(src, dest) __asm__("negd %1,%0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
/* or Instructions */
#define _orb_(src, dest) __asm__("orb %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _orw_(src, dest) __asm__("orw %1,%0" : "=r" (dest) : \
"ri" ((unsigned short)src) , "0" (dest))
#define _ord_(src, dest) __asm__("ord %1,%0" : "=r" (dest) : \
"ri" ((unsigned int)src) , "0" (dest))
/* Pop 1's Count Instructions */
#define _popcntb_(src, dest) __asm__("popcntb %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _popcntw_(src, dest) __asm__("popcntw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _popcntd_(src, dest) __asm__("popcntd %1,%0" : "=r" (dest) : \
"r" ((int)src) , "0" (dest))
/* Rotate and Mask Instructions */
#define _ram_(shift, end, begin, dest, src) __asm__("ram %1, %2, %3, %0, %4" : \
"=r" (dest) : \
"i" ((unsigned char) shift), \
"i" (end), "i" (begin), \
"r" (src), "0" (dest))
#define _rim_(shift, end, begin, dest, src) __asm__("rim %1, %2, %3, %0, %4" : \
"=r" (dest) : \
"i" ((unsigned char) shift), \
"i" (end), "i" (begin), \
"r" (src), "0" (dest))
/* retx Instruction */
#define _retx_() __asm__("retx")
/* Rotate Instructions */
#define _rotb_(shift, dest) __asm__("rotb %1,%0" : "=r" (dest) : \
"i" ((unsigned char)shift) , "0" (dest))
#define _rotw_(shift, dest) __asm__("rotw %1,%0" : "=r" (dest) : \
"i" ((unsigned char)shift) , "0" (dest))
#define _rotd_(shift, dest) __asm__("rotd %1,%0" : "=r" (dest) : \
"i" ((unsigned char)shift) , "0" (dest))
#define _rotlb_(shift, dest) __asm__("rotlb %1,%0" : "=r" (dest) : \
"r" ((unsigned char)shift) , "0" (dest))
#define _rotlw_(shift, dest) __asm__("rotlw %1,%0" : "=r" (dest) : \
"r" ((unsigned char)shift) , "0" (dest))
#define _rotld_(shift, dest) __asm__("rotld %1,%0" : "=r" (dest) : \
"r" ((unsigned char)shift) , "0" (dest))
#define _rotrb_(shift, dest) __asm__("rotrb %1,%0" : "=r" (dest) : \
"r" ((unsigned char)shift) , "0" (dest))
#define _rotrw_(shift, dest) __asm__("rotrw %1,%0" : "=r" (dest) : \
"r" ((unsigned char)shift) , "0" (dest))
#define _rotrd_(shift, dest) __asm__("rotrd %1,%0" : "=r" (dest) : \
"r" ((unsigned char)shift) , "0" (dest))
/* Set Bit Instructions */
#define _sbitb_(pos,dest) __asm__("sbitb %1,%0" : "=mr" (dest) : \
"i" ((unsigned char)pos) , "0" (dest) : "cc")
#define _sbitw_(pos,dest) __asm__("sbitw %1,%0" : "=mr" (dest) : \
"i" ((unsigned char)pos) , "0" (dest) : "cc")
#define _sbitd_(pos,dest) __asm__("sbitd %1,%0" : "=mr" (dest) : \
"i" ((unsigned char)pos) , "0" (dest) : "cc")
/* setrfid Instruction */
#define _setrfid_(src) __asm__("setrfid %0" : /* No output */ : \
"r" (src) : "cc")
/* Sign Extend Instructions */
#define _sextbw_(src, dest) __asm__("sextbw %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest) )
#define _sextbd_(src, dest) __asm__("sextbd %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest) )
#define _sextwd_(src, dest) __asm__("sextwd %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest) )
/* Shift Left Logical Instructions */
#define _sllb_(src, dest) __asm__("sllb %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _sllw_(src, dest) __asm__("sllw %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _slld_(src, dest) __asm__("slld %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
/* Shift Right Arithmetic Instructions */
#define _srab_(src, dest) __asm__("srab %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _sraw_(src, dest) __asm__("sraw %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _srad_(src, dest) __asm__("srad %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
/* Shift Right Logical Instructions */
#define _srlb_(src, dest) __asm__("srlb %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _srlw_(src, dest) __asm__("srlw %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _srld_(src, dest) __asm__("srld %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
/* Store Instructions */
#define _storb_(src,address) __asm__("storb %1,%0" : "=m" (address) : \
"ri" ((unsigned int)src))
#define _storw_(src,address) __asm__("storw %1,%0" : "=m" (address) : \
"ri" ((unsigned int)src))
#define _stord_(src,address) __asm__("stord %1,%0" : "=m" (address) : \
"ri" ((unsigned int)src))
/* Store Multiple Instructions */
#define _storm_(mask, src) __asm__("storm %1,%0" : /* No output here */ : \
"i" (mask) , "r" ((unsigned int)src))
#define _stormp_(mask, src) __asm__("stormp %1,%0" : /* No output here */ : \
"i" (mask) , "r" ((unsigned int)src))
/* Substruct Instructions */
#define _subb_(src, dest) __asm__("subb %1, %0" : "=r" (dest) : \
"ri" ((unsigned char)src), "0" (dest) : "cc")
#define _subw_(src, dest) __asm__("subw %1, %0" : "=r" (dest) : \
"ri" ((unsigned short)src), "0" (dest) : "cc")
#define _subd_(src, dest) __asm__("subd %1, %0" : "=r" (dest) : \
"ri" ((unsigned int)src), "0" (dest) : "cc")
/* Substruct with Carry Instructions */
#define _subcb_(src, dest) __asm__("subcb %1, %0" : "=r" (dest) : \
"ri" ((unsigned char)src), "0" (dest) : "cc")
#define _subcw_(src, dest) __asm__("subcw %1, %0" : "=r" (dest) : \
"ri" ((unsigned short)src), "0" (dest) : "cc")
#define _subcd_(src, dest) __asm__("subcd %1, %0" : "=r" (dest) : \
"ri" ((unsigned int)src), "0" (dest) : "cc")
/* Q-Format Substruct Instructions */
#define _subqb_(src, dest) __asm__("subqw %1,%0" : "=r" (dest) : \
"r" ((char)src) , "0" (dest))
#define _subqw_(src, dest) __asm__("subqw %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
#define _subqd_(src, dest) __asm__("subqd %1,%0" : "=r" (dest) : \
"r" ((short)src) , "0" (dest))
/* Test Bit Instructions */
#define _tbitb_(pos,dest) __asm__("tbitb %0,%1" : /* No output */ : \
"i" ((unsigned char)pos) , "rm" (dest) : "cc")
#define _tbitw_(pos,dest) __asm__("tbitw %0,%1" : /* No output */ : \
"i" ((unsigned char)pos) , "rm" (dest) : "cc")
#define _tbitd_(pos,dest) __asm__("tbitd %0,%1" : /* No output */ : \
"i" ((unsigned char)pos) , "rm" (dest) : "cc")
/* wait Instruction*/
#define _wait_() __asm__ volatile ("wait" : : : "cc")
/* xor Instructions */
#define _xorb_(src, dest) __asm__("xorb %1,%0" : "=r" (dest) : \
"ri" ((unsigned char)src) , "0" (dest))
#define _xorw_(src, dest) __asm__("xorw %1,%0" : "=r" (dest) : \
"ri" ((unsigned short)src) , "0" (dest))
#define _xord_(src, dest) __asm__("xord %1,%0" : "=r" (dest) : \
"ri" ((unsigned int)src) , "0" (dest))
/* Zero Extend Instructions */
#define _zextbw_(src, dest) __asm__("zextbw %1,%0" : "=r" (dest) : \
"r" ((unsigned char)src) , "0" (dest))
#define _zextbd_(src, dest) __asm__("zextbd %1,%0" : "=r" (dest) : \
"r" ((unsigned char)src) , "0" (dest))
#define _zextwd_(src, dest) __asm__("zextwd %1,%0" : "=r" (dest) : \
"r" ((unsigned short)src) , "0" (dest))
#define _save_asm_(x) \
__asm__ volatile (x ::: "memory","cc", \
"r0","r1","r2","r3","r4","r5","r6","r7", \
"r8","r9","r10","r11","r12","r13")
#endif /* _ASM */

View File

@ -0,0 +1,51 @@
/* libh.h -- CRX default handlers
*
* Copyright (c) 2004 National Semiconductor Corporation
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice is included verbatim in any distributions. No written agreement,
* license, or royalty fee is required for any of the authorized uses.
* Modifications to this software may be copyrighted by their authors
* and need not follow the licensing terms described here, provided that
* the new terms are clearly indicated on the first page of each file where
* they apply.
*/
#ifndef _LIBH
#define _LIBH
/* These are the first 16 entries of the default dispatch table as defined
in the CompactRISC architecture:
Entry Function
----- --------
0 NULL
1 nmi
2 NULL
3 NULL
4 NULL
5 svc
6 dvz
7 flg
8 bpt
9 trc
10 und
11 NULL
12 iad
13 NULL
14 dbg
15 ise
*/
extern void (* const _dispatch_table[])(void);
/* Function prototypes */
void svc_handler(void);
void dvz_handler(void);
void flg_handler(void);
void und_handler(void);
void iad_handler(void);
#endif /* _LIBH */

View File

@ -0,0 +1,61 @@
/* syscall.h -- CRX virtual I/O and trap service codes
*
* Copyright (c) 2004 National Semiconductor Corporation
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice is included verbatim in any distributions. No written agreement,
* license, or royalty fee is required for any of the authorized uses.
* Modifications to this software may be copyrighted by their authors
* and need not follow the licensing terms described here, provided that
* the new terms are clearly indicated on the first page of each file where
* they apply.
*/
#ifndef _SYSCALL_H
#define _SYSCALL_H
#include <sys/asm.h>
/* SVC codes to pass to the debugger */
/* Virtual I/O services */
#define SVC_OPEN 0x401
#define SVC_CLOSE 0x402
#define SVC_READ 0x403
#define SVC_WRITE 0x404
#define SVC_LSEEK 0x405
#define SVC_RENAME 0x406
#define SVC_UNLINK 0x407
#define SVC_GETENV 0x408
/* Time service */
#define SVC_TIME 0x300
/* Start/end of program services */
#define SVC_EOP 0x410
/* Trap services */
#define SVC_SVC 0x505
#define SVC_DVZ 0x506
#define SVC_FLG 0x507
#define SVC_UND 0x50a
#define SVC_IAD 0x50c
/* Places the code of the requested service in R0, then transfers control
to the debugger using the BPT exception.
It is called from the start routine, VIO functions and the trap
handlers. */
#define STRINGIFY(x) #x
#define HOST_SERVICE(service) \
do { \
__asm__("movd\t$" STRINGIFY(service) ",r0"); \
_excp_(bpt); \
__asm__(".short\t0xFFFF"); \
} while (0)
#endif /* _SYSCALL_H */