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:
parent
423152ed0a
commit
1185687a7b
|
@ -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>
|
2004-10-05 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
|
||||||
* Makefile.am (stmp-targ-include): Support sys header files
|
* Makefile.am (stmp-targ-include): Support sys header files
|
||||||
|
|
|
@ -93,6 +93,9 @@ case "${host_cpu}" in
|
||||||
avr*)
|
avr*)
|
||||||
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mcall-prologues"
|
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mcall-prologues"
|
||||||
;;
|
;;
|
||||||
|
crx*)
|
||||||
|
machine_dir=crx
|
||||||
|
;;
|
||||||
d10v*)
|
d10v*)
|
||||||
machine_dir=d10v
|
machine_dir=d10v
|
||||||
;;
|
;;
|
||||||
|
@ -307,6 +310,9 @@ case "${host}" in
|
||||||
sys_dir=arm
|
sys_dir=arm
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
crx*)
|
||||||
|
sys_dir=
|
||||||
|
;;
|
||||||
d10v*)
|
d10v*)
|
||||||
sys_dir=d10v
|
sys_dir=d10v
|
||||||
;;
|
;;
|
||||||
|
@ -496,6 +502,10 @@ case "${host}" in
|
||||||
avr*)
|
avr*)
|
||||||
newlib_cflags="${newlib_cflags} -DNO_EXEC -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
|
newlib_cflags="${newlib_cflags} -DNO_EXEC -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
|
||||||
;;
|
;;
|
||||||
|
crx-*-*)
|
||||||
|
newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DMISSING_SYSCALL_NAMES"
|
||||||
|
syscall_dir=
|
||||||
|
;;
|
||||||
d10v*)
|
d10v*)
|
||||||
newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
|
newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
|
||||||
syscall_dir=syscalls
|
syscall_dir=syscalls
|
||||||
|
|
|
@ -214,6 +214,10 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __CRX__
|
||||||
|
#define __IEEE_LITTLE_ENDIAN
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __fr30__
|
#ifdef __fr30__
|
||||||
#define __IEEE_BIG_ENDIAN
|
#define __IEEE_BIG_ENDIAN
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -174,6 +174,10 @@ _BEGIN_STD_C
|
||||||
#define _JBTYPE double
|
#define _JBTYPE double
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __CRX__
|
||||||
|
#define _JBLEN 9
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __fr30__
|
#ifdef __fr30__
|
||||||
#define _JBLEN 10
|
#define _JBLEN 10
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -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
|
|
@ -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:
|
|
@ -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
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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)
|
|
@ -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));
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
|
@ -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 */
|
||||||
|
|
||||||
|
|
|
@ -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 */
|
|
@ -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 */
|
||||||
|
|
Loading…
Reference in New Issue