Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/sparc_leon')
-rw-r--r--libgloss/sparc_leon/Makefile.in161
-rw-r--r--libgloss/sparc_leon/_exit.c30
-rw-r--r--libgloss/sparc_leon/aclocal.m4404
-rw-r--r--libgloss/sparc_leon/amba.c152
-rw-r--r--libgloss/sparc_leon/amba_dbg.c147
-rw-r--r--libgloss/sparc_leon/amba_driver.c119
-rw-r--r--libgloss/sparc_leon/amba_scan.c96
-rw-r--r--libgloss/sparc_leon/asm-leon/amba.h429
-rw-r--r--libgloss/sparc_leon/asm-leon/asmmacro.h54
-rw-r--r--libgloss/sparc_leon/asm-leon/clock.h45
-rw-r--r--libgloss/sparc_leon/asm-leon/contextswitch.h58
-rw-r--r--libgloss/sparc_leon/asm-leon/elfmacro.h79
-rw-r--r--libgloss/sparc_leon/asm-leon/head.h39
-rw-r--r--libgloss/sparc_leon/asm-leon/irq.h101
-rw-r--r--libgloss/sparc_leon/asm-leon/jiffies.h104
-rw-r--r--libgloss/sparc_leon/asm-leon/lambapp.h177
-rw-r--r--libgloss/sparc_leon/asm-leon/lambapp_devs.h242
-rw-r--r--libgloss/sparc_leon/asm-leon/leon.h370
-rw-r--r--libgloss/sparc_leon/asm-leon/leon3.h107
-rw-r--r--libgloss/sparc_leon/asm-leon/leonbare_debug.h125
-rw-r--r--libgloss/sparc_leon/asm-leon/leonbare_kernel.h438
-rw-r--r--libgloss/sparc_leon/asm-leon/leonbare_kernel_queue.h148
-rw-r--r--libgloss/sparc_leon/asm-leon/leoncompat.h39
-rw-r--r--libgloss/sparc_leon/asm-leon/leondbg.h33
-rw-r--r--libgloss/sparc_leon/asm-leon/leonstack.h177
-rw-r--r--libgloss/sparc_leon/asm-leon/liblocks.h40
-rw-r--r--libgloss/sparc_leon/asm-leon/linkage.h59
-rw-r--r--libgloss/sparc_leon/asm-leon/param.h33
-rw-r--r--libgloss/sparc_leon/asm-leon/queue.h570
-rw-r--r--libgloss/sparc_leon/asm-leon/spinlock.h69
-rw-r--r--libgloss/sparc_leon/asm-leon/stack.h77
-rw-r--r--libgloss/sparc_leon/asm-leon/time.h33
-rw-r--r--libgloss/sparc_leon/asm-leon/timer.h75
-rw-r--r--libgloss/sparc_leon/asm-leon/types.h31
-rw-r--r--libgloss/sparc_leon/asm-leon/winmacros.h185
-rw-r--r--libgloss/sparc_leon/bdinit.S53
-rw-r--r--libgloss/sparc_leon/busscan.S148
-rw-r--r--libgloss/sparc_leon/cacheA.S51
-rw-r--r--libgloss/sparc_leon/catch_interrupt.c117
-rw-r--r--libgloss/sparc_leon/catch_interrupt_mvt.c55
-rw-r--r--libgloss/sparc_leon/catch_interrupt_pending.c64
-rw-r--r--libgloss/sparc_leon/catch_interrupt_svt.c76
-rwxr-xr-xlibgloss/sparc_leon/configure3877
-rw-r--r--libgloss/sparc_leon/configure.in58
-rw-r--r--libgloss/sparc_leon/console.c29
-rw-r--r--libgloss/sparc_leon/console_dbg.c354
-rw-r--r--libgloss/sparc_leon/console_init.c34
-rw-r--r--libgloss/sparc_leon/contextswitch.c121
-rw-r--r--libgloss/sparc_leon/contextswitch_asm.S101
-rw-r--r--libgloss/sparc_leon/crt0.S91
-rw-r--r--libgloss/sparc_leon/crti.S69
-rw-r--r--libgloss/sparc_leon/crtn.S63
-rw-r--r--libgloss/sparc_leon/etrap.S113
-rw-r--r--libgloss/sparc_leon/etrap_fast.S121
-rw-r--r--libgloss/sparc_leon/fpu.S111
-rw-r--r--libgloss/sparc_leon/gettimeofday.c272
-rw-r--r--libgloss/sparc_leon/initcalls.c45
-rw-r--r--libgloss/sparc_leon/io.c53
-rw-r--r--libgloss/sparc_leon/irqinstall.S41
-rw-r--r--libgloss/sparc_leon/irqtrap.S108
-rw-r--r--libgloss/sparc_leon/irqtrap_fast.S128
-rw-r--r--libgloss/sparc_leon/jiffies.c38
-rw-r--r--libgloss/sparc_leon/kernel.c217
-rw-r--r--libgloss/sparc_leon/kernel_context.S112
-rw-r--r--libgloss/sparc_leon/kernel_debug.c162
-rw-r--r--libgloss/sparc_leon/kernel_debug_var.c35
-rw-r--r--libgloss/sparc_leon/kernel_mm.c31
-rw-r--r--libgloss/sparc_leon/kernel_mutex.c107
-rw-r--r--libgloss/sparc_leon/kernel_queue.c59
-rw-r--r--libgloss/sparc_leon/kernel_sched.c84
-rw-r--r--libgloss/sparc_leon/kernel_thread.c214
-rw-r--r--libgloss/sparc_leon/lcpuinit.S143
-rw-r--r--libgloss/sparc_leon/locore.S170
-rw-r--r--libgloss/sparc_leon/locore_atexit.c50
-rw-r--r--libgloss/sparc_leon/locore_clean.S114
-rw-r--r--libgloss/sparc_leon/locore_mvt.S170
-rw-r--r--libgloss/sparc_leon/locore_mvt_reset.S52
-rw-r--r--libgloss/sparc_leon/locore_svt.S44
-rw-r--r--libgloss/sparc_leon/locore_svt_reset.S62
-rw-r--r--libgloss/sparc_leon/locore_svtdisp.S186
-rw-r--r--libgloss/sparc_leon/locore_var.S77
-rw-r--r--libgloss/sparc_leon/locore_var_svt.S37
-rw-r--r--libgloss/sparc_leon/mmu_asm.S45
-rw-r--r--libgloss/sparc_leon/mutex.c256
-rw-r--r--libgloss/sparc_leon/nocache.S117
-rw-r--r--libgloss/sparc_leon/pnpinit.c430
-rw-r--r--libgloss/sparc_leon/pnpinit_malloc.c679
-rw-r--r--libgloss/sparc_leon/pnpinit_simple.c34
-rw-r--r--libgloss/sparc_leon/regwin.S134
-rw-r--r--libgloss/sparc_leon/regwin_patch.c82
-rw-r--r--libgloss/sparc_leon/regwin_slow.S135
-rw-r--r--libgloss/sparc_leon/regwinflush.S285
-rw-r--r--libgloss/sparc_leon/rtc.c26
-rw-r--r--libgloss/sparc_leon/rtrap.S132
-rw-r--r--libgloss/sparc_leon/rtrap_fast.S158
-rw-r--r--libgloss/sparc_leon/stop.S31
-rw-r--r--libgloss/sparc_leon/timer.c146
-rw-r--r--libgloss/sparc_leon/times.c58
98 files changed, 0 insertions, 16311 deletions
diff --git a/libgloss/sparc_leon/Makefile.in b/libgloss/sparc_leon/Makefile.in
deleted file mode 100644
index c21a3e39f..000000000
--- a/libgloss/sparc_leon/Makefile.in
+++ /dev/null
@@ -1,161 +0,0 @@
-# Makefile for libgloss/sparc_leon. This is the board support
-# code for the various sparc leon targets.
-
-DESTDIR =
-VPATH = @srcdir@
-srcdir = @srcdir@
-objdir = .
-srcroot = $(srcdir)/../..
-objroot = $(objdir)/../..
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-host_alias = @host_alias@
-target_alias = @target_alias@
-
-bindir = @bindir@
-libdir = @libdir@
-tooldir = $(exec_prefix)/$(target_alias)
-mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs
-
-# Multilib support variables.
-# TOP is used instead of MULTI{BUILD,SRC}TOP.
-MULTIDIRS =
-MULTISUBDIR =
-MULTIDO = true
-MULTICLEAN = true
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-SHELL = /bin/sh
-
-CC = @CC@
-
-AS = @AS@
-AR = @AR@
-LD = @LD@
-RANLIB = @RANLIB@
-AR_FLAGS = qrv
-
-OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \
- then echo ${objroot}/../binutils/objdump ; \
- else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi`
-OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \
- then echo ${objroot}/../binutils/objcopy ; \
- else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
-
-LEON_BSP = libleonbare.a
-LEON_OBJS = etrap.o rtrap.o etrap_fast.o rtrap_fast.o irqinstall.o regwin.o \
- regwinflush.o fpu.o bdinit.o contextswitch.o \
- busscan.o irqtrap_fast.o catch_interrupt.o catch_interrupt_svt.o \
- catch_interrupt_mvt.o catch_interrupt_pending.o gettimeofday.o \
- times.o rtc.o lcpuinit.o console_init.o console.o console_dbg.o \
- contextswitch.o contextswitch_asm.o _exit.o amba.o amba_dbg.o \
- amba_scan.o amba_driver.o timer.o mutex.o locore.o locore_clean.o \
- locore_var.o locore_var_svt.o jiffies.o \
- mmu_asm.o locore_svtdisp.o locore_mvt_reset.o locore_svt_reset.o stop.o initcalls.o \
- regwin_patch.o cacheA.o nocache.o
-
-LEONBARE_THREADS = liblbthread.a
-LEONBARE_THREADS_OBJS = kernel.o kernel_debug.o kernel_debug_var.o kernel_context.o \
- kernel_mutex.o kernel_thread.o kernel_sched.o kernel_queue.o \
- kernel_mm.o
-
-LOCOREATEXIT = locore_atexit.o
-LEON_SMALLC = libsmall.a
-
-PNP=pnpinit.o
-PNP_S=pnpinit_simple.o
-LEON_ALL = $(LEON_BSP) $(LEON_SMALLC) $(LEONBARE_THREADS) $(PNP) $(PNP_S) crti.o crtn.o
-
-LOCORESVT = locore_svt.o
-LOCOREMVT = locore_mvt.o
-CRT0 = crt0.o
-OBJS = close.o fstat.o getpid.o isatty.o kill.o \
- lseek.o open.o print.o putnum.o read.o sbrk.o stat.o \
- unlink.o write.o io.o kernel.o kernel_debug.o kernel_debug_var.o kernel_context.o
-#link.o
-
-#### Host specific Makefile fragment comes in here.
-@host_makefile_frag@
-
-all: stmp-targ-include $(CRT0) $(LOCOREMVT) $(LOCORESVT) $(LEON_ALL)
-
-$(CRT0): $(srcdir)/crt0.S
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -o $@ -c $(srcdir)/crt0.S
-
-$(LEON_BSP): $(OBJS) $(LEON_OBJS)
- @rm -f $@
- ${AR} ${AR_FLAGS} $@ $(OBJS) $(LEON_OBJS)
- ${RANLIB} $@
-
-$(LEON_SMALLC): $(LOCOREATEXIT)
- @rm -f $@
- ${AR} ${AR_FLAGS} $@ $(LOCOREATEXIT)
- ${RANLIB} $@
-
-$(LEONBARE_THREADS): $(LEONBARE_THREADS_OBJS)
- @rm -f $@
- ${AR} ${AR_FLAGS} $@ $(LEONBARE_THREADS_OBJS)
- ${RANLIB} $@
-
-install:
- $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0)
- $(INSTALL_DATA) $(LOCORESVT) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LOCORESVT)
- $(INSTALL_DATA) $(LOCOREMVT) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LOCOREMVT)
- $(INSTALL_DATA) $(PNP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(PNP)
- $(INSTALL_DATA) $(PNP_S) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(PNP_S)
- $(INSTALL_DATA) $(LEON_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LEON_BSP)
- $(INSTALL_DATA) $(LEON_SMALLC) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LEON_SMALLC)
- $(INSTALL_DATA) $(LEONBARE_THREADS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LEONBARE_THREADS)
- if [ -z "$(MULTISUBDIR)" ]; then \
- $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/asm-leon; \
- for i in $(srcdir)/asm-leon/*.h; do \
- if [ -f $$i ]; then \
- $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/asm-leon/`basename $$i` || exit $$?; \
- else true; fi ; \
- done; \
- else true; fi
-
-stmp-targ-include: $(srcdir)/asm-leon/*
- if [ -d ${objroot}/newlib/targ-include/asm-leon ]; then \
- rm -rf ${objroot}/newlib/targ-include/asm-leon; \
- else true; fi ; \
- if [ -d ${objroot}/newlib/targ-include ]; then \
- cp -r $(srcdir)/asm-leon ${objroot}/newlib/targ-include/asm-leon; \
- else true; fi ; \
- touch $@
-
-all-recursive: stmp-targ-include
-
-# Make a simple test case to test the linker script, startup code, and
-# I/O code
-#
-test:
- @echo Done...
-
-# target specific makefile fragment comes in here.
-# @target_makefile_frag@
-
-clean mostlyclean:
- rm -f *.o *.a *.map *.x
-
-distclean maintainer-clean realclean: clean
- rm -f Makefile config.cache config.log config.status
-
-.PHONY: info dvi doc install-info clean-info
-info doc dvi:
-install-info:
-clean-info:
-
-# target specific makefile fragment comes in here.
-@target_makefile_frag@
-
-Makefile: Makefile.in config.status @host_makefile_frag_path@ @target_makefile_frag_path@
- $(SHELL) config.status
-
-config.status: configure
- $(SHELL) config.status --recheck
diff --git a/libgloss/sparc_leon/_exit.c b/libgloss/sparc_leon/_exit.c
deleted file mode 100644
index fbe86cc62..000000000
--- a/libgloss/sparc_leon/_exit.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-void
-_exit (int status)
-{
- asm ("mov 1, %g1; ta 0;\n");
-}
diff --git a/libgloss/sparc_leon/aclocal.m4 b/libgloss/sparc_leon/aclocal.m4
deleted file mode 100644
index 234952367..000000000
--- a/libgloss/sparc_leon/aclocal.m4
+++ /dev/null
@@ -1,404 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-# This file 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.
-
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
-#
-# This file 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.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
-#
-# This file 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.
-
-# serial 10
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery. Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
- [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_$1_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
- fi
- am__universal=false
- m4_case([$1], [CC],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac],
- [CXX],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac])
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_$1_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file 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.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
-#
-# This file 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.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
-#
-# This file 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.
-
-# serial 4
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
-#
-# This file 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.
-
-# serial 2
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-m4_include([../acinclude.m4])
diff --git a/libgloss/sparc_leon/amba.c b/libgloss/sparc_leon/amba.c
deleted file mode 100644
index 0df6759da..000000000
--- a/libgloss/sparc_leon/amba.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*#define DEBUG_CONFIG*/
-
-/* Structure containing address to devices found on the Amba Plug&Play bus */
-amba_confarea_type amba_conf;
-
-/* Pointers to Interrupt Controller configuration registers */
-volatile LEON3_IrqCtrl_Regs_Map *LEON3_IrqCtrl_Regs = 0;
-volatile LEON3_GpTimer_Regs_Map *LEON3_GpTimer_Regs = 0;
-unsigned long LEON3_GpTimer_Irq = 0;
-
-unsigned long
-amba_find_apbslv_addr (unsigned long vendor, unsigned long device,
- unsigned long *irq)
-{
- unsigned int i, conf, iobar;
- for (i = 0; i < amba_conf.apbslv.devnr; i++)
- {
- conf = amba_get_confword (amba_conf.apbslv, i, 0);
- if ((amba_vendor (conf) == vendor) && (amba_device (conf) == device))
- {
- if (irq)
- {
- *irq = amba_irq (conf);
- }
- iobar = amba_apb_get_membar (amba_conf.apbslv, i);
- return amba_iobar_start (amba_conf.apbslv.apbmst[i], iobar);
- }
- }
- return 0;
-}
-
-#define amba_insert_device(tab, address) do { \
- if (LEON3_BYPASS_LOAD_PA(address)) { \
- (tab)->addr[(tab)->devnr] = (address); \
- (tab)->devnr ++; \
- } \
- } while(0)
-
-#define amba_insert_apb_device(tab, address, apbmst, idx) do { \
- if (*(address)) { \
- (tab)->addr[(tab)->devnr] = (address); \
- (tab)->apbmst[(tab)->devnr] = (apbmst); \
- (tab)->apbmstidx[(tab)->devnr] = (idx); \
- (tab)->devnr ++; \
- } \
- } while(0)
-
-/*
- * Used to scan system bus. Probes for AHB masters, AHB slaves and
- * APB slaves. Addresses to configuration areas of the AHB masters,
- * AHB slaves, APB slaves and APB master are storeds in
- * amba_ahb_masters, amba_ahb_slaves and amba.
- */
-
-int amba_init_done = 0;
-
-void
-amba_init (void)
-{
- unsigned int *cfg_area; /* address to configuration area */
- unsigned int mbar, conf, apbmst;
- int i, j, idx = 0;
-
- if (amba_init_done)
- {
- return;
- }
- amba_init_done = 1;
-
- memset (&amba_conf, 0, sizeof (amba_conf));
- /*amba_conf.ahbmst.devnr = 0; amba_conf.ahbslv.devnr = 0; amba_conf.apbslv.devnr = 0; */
-
- cfg_area = (unsigned int *) (LEON3_IO_AREA | LEON3_CONF_AREA);
-
- for (i = 0; i < LEON3_AHB_MASTERS; i++)
- {
- amba_insert_device (&amba_conf.ahbmst, cfg_area);
- cfg_area += LEON3_AHB_CONF_WORDS;
- }
-
- cfg_area =
- (unsigned int *) (LEON3_IO_AREA | LEON3_CONF_AREA |
- LEON3_AHB_SLAVE_CONF_AREA);
- for (i = 0; i < LEON3_AHB_SLAVES; i++)
- {
- amba_insert_device (&amba_conf.ahbslv, cfg_area);
- cfg_area += LEON3_AHB_CONF_WORDS;
- }
-
- for (i = 0; i < amba_conf.ahbslv.devnr; i++)
- {
- conf = amba_get_confword (amba_conf.ahbslv, i, 0);
- mbar = amba_ahb_get_membar (amba_conf.ahbslv, i, 0);
- if ((amba_vendor (conf) == VENDOR_GAISLER)
- && (amba_device (conf) == GAISLER_APBMST))
- {
- int k;
- /*amba_conf.apbmst = */ apbmst = amba_membar_start (mbar);
- cfg_area = (unsigned int *) (apbmst | LEON3_CONF_AREA);
-
- for (j = amba_conf.apbslv.devnr, k = 0;
- j < AMBA_MAXAPB_DEVS && k < AMBA_MAXAPB_DEVS_PERBUS; j++, k++)
- {
- amba_insert_apb_device (&amba_conf.apbslv, cfg_area, apbmst,
- idx);
- cfg_area += LEON3_APB_CONF_WORDS;
- }
- idx++;
- }
- }
-
- /* Find LEON3 Interrupt controler */
- LEON3_IrqCtrl_Regs = (volatile LEON3_IrqCtrl_Regs_Map *)
- amba_find_apbslv_addr (VENDOR_GAISLER, GAISLER_IRQMP, 0);
- LEON3_GpTimer_Regs = (volatile LEON3_GpTimer_Regs_Map *)
- amba_find_apbslv_addr (VENDOR_GAISLER, GAISLER_GPTIMER,
- &LEON3_GpTimer_Irq);
- if (LEON3_IrqCtrl_Regs)
- {
- LEON3_BYPASS_STORE_PA (&(LEON3_IrqCtrl_Regs->mask[0]), 0);
- }
-}
diff --git a/libgloss/sparc_leon/amba_dbg.c b/libgloss/sparc_leon/amba_dbg.c
deleted file mode 100644
index 5f044505c..000000000
--- a/libgloss/sparc_leon/amba_dbg.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*#define DEBUG_CONFIG*/
-
-/* Structure containing address to devices found on the Amba Plug&Play bus */
-extern amba_confarea_type amba_conf;
-
-#ifdef DEBUG_CONFIG
-#define printk(fmt,arg...) \
-{ char c[1024]; \
- sprintf(c,fmt,##arg); \
- DEBUG_puts(c); \
-}
-#else
-#define printk(fmt,arg...)
-#endif
-
-static void
-vendor_dev_string (unsigned long conf, char *vendorbuf, char *devbuf)
-{
- int vendor = amba_vendor (conf);
- int dev = amba_device (conf);
- char *devstr;
- char *vendorstr;
-#ifdef DEBUG_CONFIG
- sprintf (vendorbuf, "Unknown vendor %2x", vendor);
- sprintf (devbuf, "Unknown device %2x", dev);
- vendorstr = vendor_id2str (vendor);
- if (vendorstr)
- {
- sprintf (vendorbuf, "%s", vendorstr);
- }
- devstr = device_id2str (vendor, dev);
- if (devstr)
- {
- sprintf (devbuf, "%s", devstr);
- }
-#else
- vendorbuf[0] = 0;
- devbuf[0] = 0;
-#endif
-}
-
-void
-amba_prinf_config (void)
-{
- char devbuf[128];
- char vendorbuf[128];
- unsigned int conf;
- int i = 0;
- int j = 0;
- unsigned int addr;
- unsigned int m;
- printk (" Vendors Slaves\n");
- printk ("Ahb masters:\n");
- i = 0;
- while (i < amba_conf.ahbmst.devnr)
- {
- conf = amba_get_confword (amba_conf.ahbmst, i, 0);
- vendor_dev_string (conf, vendorbuf, devbuf);
- printk ("%2i(%2x:%3x|%2i): %16s %16s \n", i, amba_vendor (conf),
- amba_device (conf), amba_irq (conf), vendorbuf, devbuf);
- for (j = 0; j < 4; j++)
- {
- m = amba_ahb_get_membar (amba_conf.ahbmst, i, j);
- if (m)
- {
- addr = amba_membar_start (m);
- printk (" +%i: 0x%x \n", j, addr);
- }
- }
- i++;
- }
- printk ("Ahb slaves:\n");
- i = 0;
- while (i < amba_conf.ahbslv.devnr)
- {
- conf = amba_get_confword (amba_conf.ahbslv, i, 0);
- vendor_dev_string (conf, vendorbuf, devbuf);
- printk ("%2i(%2x:%3x|%2i): %16s %16s \n", i, amba_vendor (conf),
- amba_device (conf), amba_irq (conf), vendorbuf, devbuf);
- for (j = 0; j < 4; j++)
- {
- m = amba_ahb_get_membar (amba_conf.ahbslv, i, j);
- if (m)
- {
- addr = amba_membar_start (m);
- if (amba_membar_type (m) == AMBA_TYPE_AHBIO)
- {
- addr = AMBA_TYPE_AHBIO_ADDR (addr);
- }
- else if (amba_membar_type (m) == AMBA_TYPE_APBIO)
- {
- printk ("Warning: apbio membar\n");
- }
- printk (" +%i: 0x%x (raw:0x%x)\n", j, addr, m);
- }
- }
- i++;
- }
- printk ("Apb slaves:\n");
- i = 0;
- while (i < amba_conf.apbslv.devnr)
- {
-
- conf = amba_get_confword (amba_conf.apbslv, i, 0);
- vendor_dev_string (conf, vendorbuf, devbuf);
- printk ("%2i(%2x:%3x|%2i): %16s %16s \n", i, amba_vendor (conf),
- amba_device (conf), amba_irq (conf), vendorbuf, devbuf);
-
- m = amba_apb_get_membar (amba_conf.apbslv, i);
- addr = amba_iobar_start (amba_conf.apbslv.apbmst[i], m);
- printk (" +%2i: 0x%x (raw:0x%x) \n", 0, addr, m);
-
- i++;
-
- }
-
-}
diff --git a/libgloss/sparc_leon/amba_driver.c b/libgloss/sparc_leon/amba_driver.c
deleted file mode 100644
index 0340e94a3..000000000
--- a/libgloss/sparc_leon/amba_driver.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*#define DEBUG_CONFIG*/
-
-/* Structure containing address to devices found on the Amba Plug&Play bus */
-extern amba_confarea_type amba_conf;
-
-/*collect apb slaves*/
-int
-amba_get_free_apbslv_devices (int vendor, int device, amba_apb_device * dev,
- int nr)
-{
- unsigned int i, conf, iobar, j = 0;
-#ifdef DEBUG_CONFIG
- printf ("Apbslv: search for apdslv devices\n");
-#endif
- for (i = 0; i < amba_conf.apbslv.devnr && j < nr; i++)
- {
- conf = amba_get_confword (amba_conf.apbslv, i, 0);
-#ifdef DEBUG_CONFIG
- printf ("Apbslv: check(%x:%x)==(%x:%x)\n", vendor, device,
- amba_vendor (conf), amba_device (conf));
-#endif
- if ((amba_vendor (conf) == vendor) && (amba_device (conf) == device))
- {
- if (!(amba_conf.apbslv.allocbits[i / 32] & (1 << (i & (32 - 1)))))
- {
-#ifdef DEBUG_CONFIG
- printf ("Apbslv: alloc device idx %i (%x:%x)\n",
- j, vendor, device);
-#endif
- amba_conf.apbslv.allocbits[i / 32] |= (1 << (i & (32 - 1)));
- dev[j].irq = amba_irq (conf);
- iobar = amba_apb_get_membar (amba_conf.apbslv, i);
- dev[j].start =
- amba_iobar_start (amba_conf.apbslv.apbmst[i], iobar);
-#ifdef DEBUG_CONFIG
- printf (" +bar: 0x%x \n", k, dev[j].start);
-#endif
- j++;
- }
- }
- }
- return j;
-}
-
-/*collect ahb slaves*/
-int
-amba_get_free_ahbslv_devices (int vendor, int device, amba_ahb_device * dev,
- int nr)
-{
- unsigned int addr, i, conf, iobar, j = 0, k;
-#ifdef DEBUG_CONFIG
- printf ("Ahbslv: search for ahdslv devices\n");
-#endif
- for (i = 0; i < amba_conf.ahbslv.devnr && j < nr; i++)
- {
- conf = amba_get_confword (amba_conf.ahbslv, i, 0);
-#ifdef DEBUG_CONFIG
- printf ("Ahbslv: check(%x:%x)==(%x:%x)\n", vendor, device,
- amba_vendor (conf), amba_device (conf));
-#endif
- if ((amba_vendor (conf) == vendor) && (amba_device (conf) == device))
- {
- if (!(amba_conf.ahbslv.allocbits[i / 32] & (1 << (i & (32 - 1)))))
- {
-#ifdef DEBUG_CONFIG
- printf ("Ahbslv: alloc device idx %i (%x:%x)\n",
- j, vendor, device);
-#endif
- amba_conf.ahbslv.allocbits[i / 32] |= (1 << (i & (32 - 1)));
- dev[j].irq = amba_irq (conf);
- for (k = 0; k < 4; k++)
- {
- iobar = amba_ahb_get_membar (amba_conf.ahbslv, i, k);
- addr = amba_membar_start (iobar);
- if (amba_membar_type (iobar) == AMBA_TYPE_AHBIO)
- {
- addr = AMBA_TYPE_AHBIO_ADDR (addr);
- }
- dev[j].start[k] = addr;
-#ifdef DEBUG_CONFIG
- printf (" +%i: 0x%x \n", k, dev[j].start[k]);
-#endif
- }
- j++;
- }
- }
- }
- return j;
-}
diff --git a/libgloss/sparc_leon/amba_scan.c b/libgloss/sparc_leon/amba_scan.c
deleted file mode 100644
index 6d12281cd..000000000
--- a/libgloss/sparc_leon/amba_scan.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-unsigned int
-leon3_ahbslv_scan (register unsigned int vendor, register unsigned int driver)
-{
- register unsigned int conf, i, *confp;
- register unsigned int cfg_area =
- (unsigned int) (LEON3_IO_AREA | LEON3_CONF_AREA |
- LEON3_AHB_SLAVE_CONF_AREA);
- for (i = 0; i < LEON3_AHB_SLAVES; i++)
- {
- confp = (unsigned int *) (cfg_area + (i * LEON3_AHB_CONF_WORDS * 4));
- conf = *confp;
- if ((amba_vendor (conf) == vendor) && (amba_device (conf) == driver))
- {
- return (unsigned int) confp;
- }
- }
- return 0;
-}
-
-unsigned int
-leon3_getbase (register unsigned int *mbar, register unsigned int iobase,
- int *irq)
-{
- register unsigned int conf = mbar[1];
- return (unsigned int) (((iobase & 0xfff00000) |
- ((conf & 0xfff00000) >> 12)) & (((conf & 0x0000fff0)
- << 4) |
- 0xfff00000));
-}
-
-unsigned int
-leon3_apbslv_scan (register unsigned int base,
- register unsigned int vendor,
- register unsigned int driver,
- amba_apb_device * apbdevs, int c)
-{
- register unsigned int conf, i, *confp;
- int j = 0;
- for (i = 0; i < LEON3_APB_SLAVES; i++)
- {
- confp = (unsigned int *) (base + (i * LEON3_APB_CONF_WORDS * 4));
- conf = *confp;
- if ((amba_vendor (conf) == vendor) && (amba_device (conf) == driver))
- {
- if (j < c)
- {
- apbdevs[j].start = leon3_getbase (confp, base, 0);
- apbdevs[j].irq = amba_irq (conf);
- j++;
- }
- }
- }
- return j;
-}
-
-
-unsigned int
-leon3_getapbbase (register unsigned int vendor,
- register unsigned int driver,
- amba_apb_device * apbdevs, int c)
-{
- unsigned int apb = leon3_ahbslv_scan (VENDOR_GAISLER, GAISLER_APBMST);
- apb = (*(unsigned int *) (apb + 16)) & LEON3_IO_AREA;
- apb |= LEON3_CONF_AREA;
- return leon3_apbslv_scan (apb, vendor, driver, apbdevs, c);
-}
diff --git a/libgloss/sparc_leon/asm-leon/amba.h b/libgloss/sparc_leon/asm-leon/amba.h
deleted file mode 100644
index 0dd2d987f..000000000
--- a/libgloss/sparc_leon/asm-leon/amba.h
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _LEON3_AMBA_H__
-#define _LEON3_AMBA_H__
-
-#define LEON3_IO_AREA 0xfff00000
-#define LEON3_CONF_AREA 0xff000
-#define LEON3_AHB_SLAVE_CONF_AREA (1 << 11)
-
-#define LEON3_AHB_CONF_WORDS 8
-#define LEON3_APB_CONF_WORDS 2
-#define LEON3_AHB_MASTERS 8
-#define LEON3_AHB_SLAVES 8
-#define LEON3_APB_SLAVES 16
-#define LEON3_APBUARTS 8
-
-/* Vendor codes */
-#define VENDOR_GAISLER 1
-#define VENDOR_PENDER 2
-#define VENDOR_ESA 4
-#define VENDOR_OPENCORES 8
-
-/* Gaisler Research device id's */
-#define GAISLER_LEON3 0x003
-#define GAISLER_LEON3DSU 0x004
-#define GAISLER_ETHAHB 0x005
-#define GAISLER_APBMST 0x006
-#define GAISLER_AHBUART 0x007
-#define GAISLER_SRCTRL 0x008
-#define GAISLER_SDCTRL 0x009
-#define GAISLER_APBUART 0x00c
-#define GAISLER_IRQMP 0x00d
-#define GAISLER_AHBRAM 0x00e
-#define GAISLER_GPTIMER 0x011
-#define GAISLER_PCITRG 0x012
-#define GAISLER_PCISBRG 0x013
-#define GAISLER_PCIFBRG 0x014
-#define GAISLER_PCITRACE 0x015
-#define GAISLER_PCIDMA 0x016
-#define GAISLER_AHBTRACE 0x017
-#define GAISLER_ETHDSU 0x018
-#define GAISLER_PIOPORT 0x01A
-#define GAISLER_SPACEWIRE 0x01f
-
-#define GAISLER_ETHMAC 0x01d
-#define GAISLER_EHCI 0x026
-#define GAISLER_UHCI 0x027
-
-#define GAISLER_L2TIME 0xffd /* internal device: leon2 timer */
-#define GAISLER_L2C 0xffe /* internal device: leon2compat */
-#define GAISLER_PLUGPLAY 0xfff /* internal device: plug & play configarea */
-
-#ifndef __ASSEMBLER__
-
-extern inline char *
-gaisler_device_str (int id)
-{
- switch (id)
- {
- case GAISLER_LEON3:
- return "GAISLER_LEON3";
- case GAISLER_LEON3DSU:
- return "GAISLER_LEON3DSU";
- case GAISLER_ETHAHB:
- return "GAISLER_ETHAHB";
- case GAISLER_APBMST:
- return "GAISLER_APBMST";
- case GAISLER_AHBUART:
- return "GAISLER_AHBUART";
- case GAISLER_SRCTRL:
- return "GAISLER_SRCTRL";
- case GAISLER_SDCTRL:
- return "GAISLER_SDCTRL";
- case GAISLER_APBUART:
- return "GAISLER_APBUART";
- case GAISLER_IRQMP:
- return "GAISLER_IRQMP";
- case GAISLER_AHBRAM:
- return "GAISLER_AHBRAM";
- case GAISLER_GPTIMER:
- return "GAISLER_GPTIMER";
- case GAISLER_PCITRG:
- return "GAISLER_PCITRG";
- case GAISLER_PCISBRG:
- return "GAISLER_PCISBRG";
- case GAISLER_PCIFBRG:
- return "GAISLER_PCIFBRG";
- case GAISLER_PCITRACE:
- return "GAISLER_PCITRACE";
- case GAISLER_AHBTRACE:
- return "GAISLER_AHBTRACE";
- case GAISLER_ETHDSU:
- return "GAISLER_ETHDSU";
- case GAISLER_PIOPORT:
- return "GAISLER_PIOPORT";
- case GAISLER_SPACEWIRE:
- return "GAISLER_SPACEWIRE";
-
-
- case GAISLER_L2TIME:
- return "GAISLER_L2TIME";
- case GAISLER_L2C:
- return "GAISLER_L2C";
- case GAISLER_PLUGPLAY:
- return "GAISLER_PLUGPLAY";
-
- default:
- break;
- }
- return 0;
-}
-
-#endif
-
-/* European Space Agency device id's */
-#define ESA_LEON2 0x002
-#define ESA_MCTRL 0x00f
-
-#ifndef __ASSEMBLER__
-
-extern inline char *
-esa_device_str (int id)
-{
- switch (id)
- {
- case ESA_LEON2:
- return "ESA_LEON2";
- case ESA_MCTRL:
- return "ESA_MCTRL";
- default:
- break;
- }
- return 0;
-}
-
-#endif
-
-/* Opencores device id's */
-#define OPENCORES_PCIBR 0x4
-#define OPENCORES_ETHMAC 0x5
-
-#ifndef __ASSEMBLER__
-
-extern inline char *
-opencores_device_str (int id)
-{
- switch (id)
- {
- case OPENCORES_PCIBR:
- return "OPENCORES_PCIBR";
- case OPENCORES_ETHMAC:
- return "OPENCORES_ETHMAC";
- default:
- break;
- }
- return 0;
-}
-
-extern inline char *
-device_id2str (int vendor, int id)
-{
- switch (vendor)
- {
- case VENDOR_GAISLER:
- return gaisler_device_str (id);
- case VENDOR_ESA:
- return esa_device_str (id);
- case VENDOR_OPENCORES:
- return opencores_device_str (id);
- case VENDOR_PENDER:
- default:
- break;
- }
- return 0;
-}
-
-extern inline char *
-vendor_id2str (int vendor)
-{
- switch (vendor)
- {
- case VENDOR_GAISLER:
- return "VENDOR_GAISLER";
- case VENDOR_ESA:
- return "VENDOR_ESA";
- case VENDOR_OPENCORES:
- return "VENDOR_OPENCORES";
- case VENDOR_PENDER:
- return "VENDOR_PENDER";
- default:
- break;
- }
- return 0;
-}
-
-#endif
-
-/* Vendor codes */
-
-/*
- *
- * Macros for manipulating Configuration registers
- *
- */
-
-#define LEON3_BYPASS_LOAD_PA(x) (*((unsigned long*)x))
-#define LEON3_BYPASS_STORE_PA(x,v) (*((unsigned long*)x) = (v))
-
-#define amba_get_confword(tab, index, word) (*((tab).addr[(index)]+(word)))
-
-#define amba_vendor(x) (((x) >> 24) & 0xff)
-
-#define amba_device(x) (((x) >> 12) & 0xfff)
-
-#define amba_ahb_get_membar(tab, index, nr) (*((tab).addr[(index)]+4+(nr)))
-
-#define amba_apb_get_membar(tab, index) (*((tab).addr[(index)]+1))
-
-#define amba_membar_start(mbar) (((mbar) & 0xfff00000) & (((mbar) & 0xfff0) << 16))
-
-#define amba_iobar_start(base, iobar) ((base) | ((((iobar) & 0xfff00000)>>12) & (((iobar) & 0xfff0)<<4)) )
-
-#define amba_irq(conf) ((conf) & 0xf)
-
-#define amba_membar_type(mbar) ((mbar) & 0xf)
-
-#define AMBA_TYPE_APBIO 0x1
-#define AMBA_TYPE_MEM 0x2
-#define AMBA_TYPE_AHBIO 0x3
-
-#define AMBA_TYPE_AHBIO_ADDR(addr) (LEON3_IO_AREA | ((addr) >> 12))
-
-
-
-
-
-
-#ifndef __ASSEMBLER__
-
-/*
- * The following defines the bits in the LEON UART Status Registers.
- */
-
-#define LEON_REG_UART_STATUS_DR 0x00000001 /* Data Ready */
-#define LEON_REG_UART_STATUS_TSE 0x00000002 /* TX Send Register Empty */
-#define LEON_REG_UART_STATUS_THE 0x00000004 /* TX Hold Register Empty */
-#define LEON_REG_UART_STATUS_BR 0x00000008 /* Break Error */
-#define LEON_REG_UART_STATUS_OE 0x00000010 /* RX Overrun Error */
-#define LEON_REG_UART_STATUS_PE 0x00000020 /* RX Parity Error */
-#define LEON_REG_UART_STATUS_FE 0x00000040 /* RX Framing Error */
-#define LEON_REG_UART_STATUS_ERR 0x00000078 /* Error Mask */
-
-/*
- * The following defines the bits in the LEON UART Ctrl Registers.
- */
-
-#define LEON_REG_UART_CTRL_RE 0x00000001 /* Receiver enable */
-#define LEON_REG_UART_CTRL_TE 0x00000002 /* Transmitter enable */
-#define LEON_REG_UART_CTRL_RI 0x00000004 /* Receiver interrupt enable */
-#define LEON_REG_UART_CTRL_TI 0x00000008 /* Transmitter interrupt enable */
-#define LEON_REG_UART_CTRL_PS 0x00000010 /* Parity select */
-#define LEON_REG_UART_CTRL_PE 0x00000020 /* Parity enable */
-#define LEON_REG_UART_CTRL_FL 0x00000040 /* Flow control enable */
-#define LEON_REG_UART_CTRL_LB 0x00000080 /* Loop Back enable */
-
-#define LEON3_GPTIMER_EN 1
-#define LEON3_GPTIMER_RL 2
-#define LEON3_GPTIMER_LD 4
-#define LEON3_GPTIMER_IRQEN 8
-#define LEON3_GPTIMER_IP 0x10
-
-#define LEON3_GPTIMER_CONFIG_TIMERMASK 0x7
-#define LEON3_GPTIMER_CONFIG_SEPERATE (1<<8)
-
-typedef struct
-{
- volatile unsigned int ilevel;
- volatile unsigned int ipend;
- volatile unsigned int iforce;
- volatile unsigned int iclear;
- volatile unsigned int notused00;
- volatile unsigned int notused01;
- volatile unsigned int notused02;
- volatile unsigned int notused03;
- volatile unsigned int notused10;
- volatile unsigned int notused11;
- volatile unsigned int notused12;
- volatile unsigned int notused13;
- volatile unsigned int notused20;
- volatile unsigned int notused21;
- volatile unsigned int notused22;
- volatile unsigned int notused23;
- volatile unsigned int mask[16];
-} LEON3_IrqCtrl_Regs_Map;
-extern volatile LEON3_IrqCtrl_Regs_Map *LEON3_IrqCtrl_Regs; /* in amba.c */
-
-typedef struct
-{
- volatile unsigned int data;
- volatile unsigned int status;
- volatile unsigned int ctrl;
- volatile unsigned int scaler;
-} LEON23_APBUART_Regs_Map;
-extern volatile LEON23_APBUART_Regs_Map *leon23_uarts[2]; /* in console.c */
-extern unsigned int leon23_irqs[2]; /* in console.c */
-
-typedef struct
-{
- volatile unsigned int val;
- volatile unsigned int rld;
- volatile unsigned int ctrl;
- volatile unsigned int unused;
-} LEON3_GpTimerElem_Regs_Map;
-
-
-typedef struct
-{
- volatile unsigned int scalar;
- volatile unsigned int scalar_reload;
- volatile unsigned int config;
- volatile unsigned int unused;
- volatile LEON3_GpTimerElem_Regs_Map e[8];
-} LEON3_GpTimer_Regs_Map;
-#define LEON3_GPTIMER_CONFIG_NRTIMERS(c) ((c)->config & 0x7)
-int Timer_getTimer1 (unsigned int **count, unsigned int **reload, unsigned int **ctrl); /* in timer.c */
-int Timer_getTimer2 (unsigned int **count, unsigned int **reload, unsigned int **ctrl); /* in timer.c */
-extern volatile LEON3_GpTimer_Regs_Map *LEON3_GpTimer_Regs;
-extern unsigned long LEON3_GpTimer_Irq;
-
-typedef struct
-{
- volatile unsigned int iodata;
- volatile unsigned int ioout;
- volatile unsigned int iodir;
- volatile unsigned int irqmask;
- volatile unsigned int irqpol;
- volatile unsigned int irqedge;
-} LEON3_IOPORT_Regs_Map;
-
-
-/*
- * Types and structure used for AMBA Plug & Play bus scanning
- */
-extern int amba_init_done;
-
-#define AMBA_MAXAPB_DEVS 64
-#define AMBA_MAXAPB_DEVS_PERBUS 16
-
-typedef struct amba_device_table
-{
- int devnr; /* numbrer of devices on AHB or APB bus */
- unsigned int *addr[16]; /* addresses to the devices configuration tables */
- unsigned int allocbits[1]; /* 0=unallocated, 1=allocated driver */
-} amba_device_table;
-
-typedef struct amba_apbslv_device_table
-{
- int devnr; /* number of devices on AHB or APB bus */
- unsigned int *addr[AMBA_MAXAPB_DEVS]; /* addresses to the devices configuration tables */
- unsigned int apbmst[AMBA_MAXAPB_DEVS]; /* apb master if a entry is a apb slave */
- unsigned int apbmstidx[AMBA_MAXAPB_DEVS]; /* apb master idx if a entry is a apb slave */
- unsigned int allocbits[4]; /* 0=unallocated, 1=allocated driver */
-} amba_apbslv_device_table;
-
-typedef struct amba_confarea_type
-{
- amba_device_table ahbmst;
- amba_device_table ahbslv;
- amba_apbslv_device_table apbslv;
- /*unsigned int apbmst; */
-} amba_confarea_type;
-
-
-extern unsigned long amba_find_apbslv_addr (unsigned long vendor,
- unsigned long device,
- unsigned long *irq);
-
-// collect apb slaves
-typedef struct amba_apb_device
-{
- unsigned int start, irq;
-} amba_apb_device;
-extern int amba_get_free_apbslv_devices (int vendor, int device,
- amba_apb_device * dev, int nr);
-
-// collect ahb slaves
-typedef struct amba_ahb_device
-{
- unsigned int start[4], irq;
-} amba_ahb_device;
-extern int amba_get_free_ahbslv_devices (int vendor, int device,
- amba_ahb_device * dev, int nr);
-
-
-/*amba_scan.c*/
-unsigned int leon3_getapbbase (register unsigned int vendor,
- register unsigned int driver,
- amba_apb_device * apbdevs, int c);
-
-#endif //!__ASSEMBLER__
-
-
-
-
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/asmmacro.h b/libgloss/sparc_leon/asm-leon/asmmacro.h
deleted file mode 100644
index c210d0e92..000000000
--- a/libgloss/sparc_leon/asm-leon/asmmacro.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _INCLUDE_LEON_ASMMACRO_h
-#define _INCLUDE_LEON_ASMMACRO_h
-
-#include <asm-leon/leonstack.h>
-
-/* All trap entry points _must_ begin with this macro or else you
- * lose. It makes sure the kernel has a proper window so that
- * c-code can be called.
- */
-#define SAVE_ALL_HEAD \
- sethi %hi(leonbare_trapsetup), %l4; \
- jmpl %l4 + %lo(leonbare_trapsetup), %l6;
-#define SAVE_ALL \
- SAVE_ALL_HEAD \
- nop;
-
-#define SAVE_ALL_FAST(l) \
- set l-8, %l6; \
- sethi %hi(leonbare_trapsetup_fast), %l4; \
- jmpl %l4 + %lo(leonbare_trapsetup_fast), %g0; \
- nop;
-
-/* All traps low-level code here must end with this macro. */
-#define RESTORE_ALL b leonbare_trapreturn; clr %l6;
-#define RESTORE_ALL_FAST b leonbare_trapreturn_fast; clr %l6;
-
-#define WRITE_PAUSE nop; nop; nop;
-
-#endif /* !_INCLUDE_LEON_STACK_h */
diff --git a/libgloss/sparc_leon/asm-leon/clock.h b/libgloss/sparc_leon/asm-leon/clock.h
deleted file mode 100644
index 189e942e1..000000000
--- a/libgloss/sparc_leon/asm-leon/clock.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _ASMSPARC_CLOCK_PARAM_H
-#define _ASMSPARC_CLOCK_PARAM_H
-
-#include <_ansi.h>
-#include <asm-leon/param.h>
-
-#ifndef __ASSEMBLER__
-int _EXFUN (gettimeofday, (struct timeval * __p, void *__tz));
-int _EXFUN (settimeofday, (const struct timeval *, const struct timezone *));
-void do_gettimeofday (struct timeval *tv);
-#endif
-
-#define USEC_PER_SEC (1000000L)
-#define NSEC_PER_SEC (1000000000L)
-#define NSEC_PER_USEC (1000L)
-
-extern unsigned long tick_nsec;
-extern unsigned long tick_usec;
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/contextswitch.h b/libgloss/sparc_leon/asm-leon/contextswitch.h
deleted file mode 100644
index 8150ac8b6..000000000
--- a/libgloss/sparc_leon/asm-leon/contextswitch.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef H_LEONBARE_CONTEXTSWITCH_H
-#define H_LEONBARE_CONTEXTSWITCH_H
-
-
-/*
- * for this version, the index of THREAD_JB_SP must be even !!!
- * This way, we can speed up the context switch (using std).
- */
-#define THREAD_JB_SP 0 /* aligned */
-#define THREAD_JB_PC 1
-#define THREAD_JB_SVMASK 3
-#define THREAD_JB_MASK 4
-#define THREAD_JB_FP 5
-#define THREAD_JB_I7 6
-
-#define THREAD_JB_PSR 8 /* aligned */
-#define THREAD_JB_WIM 9
-
-#define THREAD_JB_FPUCTX 10
-
-#ifndef __ASSEMBLER__
-
-extern unsigned long fpustate_current;
-
-typedef int threadctx_t[14 + 2] __attribute__ ((aligned (8)));
-
-int thread_setjmp (threadctx_t env, int val);
-void thread_longjmp (threadctx_t env, int val);
-void _switch_to (threadctx_t env, int val);
-
-#endif /* __ASSEMBLER__ */
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/elfmacro.h b/libgloss/sparc_leon/asm-leon/elfmacro.h
deleted file mode 100644
index 02dfdc985..000000000
--- a/libgloss/sparc_leon/asm-leon/elfmacro.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _INCLUDE_LEON_ELFMACRO_h
-#define _INCLUDE_LEON_ELFMACRO_h
-
-#ifdef __ASSEMBLER__
-#define _TEXT_SEG_ALIGN 4
-#define _LIBLEONBARE_TEXT_SEG_START \
- .text ; .balign _TEXT_SEG_ALIGN
-#define FUNC_BEGIN(func) func:
-#define FUNC_END(func) .size func, . - func
-
-#define GTEXT(sym) sym ; .type sym,@function
-#define GDATA(sym) sym ; .type sym,@object
-
-#define FUNC_EXPORT(func) .globl GTEXT(func)
-#define DATA_EXPORT(var) .globl GDATA(var)
-
-#define FUNC_IMPORT(func) .extern FUNC(func)
-#define DATA_IMPORT(var) .extern var
-#endif
-
-#ifndef weak_alias
-/* Define ALIASNAME as a weak alias for NAME. */
-# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
-# define _weak_alias(name, aliasname) \
- extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
-#endif
-
-#ifndef strong_alias
-/* Define ALIASNAME as a strong alias for NAME. */
-# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
-# define _strong_alias(name, aliasname) \
- extern __typeof (name) aliasname __attribute__ ((alias (#name)));
-#endif
-
-#ifndef __ASSEMBLER__
-typedef int (*initcall_t) (void);
-extern initcall_t __leonbare_initcall_start;
-extern initcall_t __leonbare_initcall_end;
-
-#endif
-
-#if __GNUC_MINOR__ >= 3
-# define __attribute_used__ __attribute__((__used__))
-#else
-# define __attribute_used__ __attribute__((__unused__))
-#endif
-
-#define __define_initcall(level,fn) \
- static initcall_t __initcall_##fn __attribute_used__ \
- __attribute__((__section__(".initcall" level ".init"))) = fn
-
-#define libc_initcall(fn) __define_initcall("1",fn)
-
-#endif /* !_INCLUDE_LEON_STACK_h */
diff --git a/libgloss/sparc_leon/asm-leon/head.h b/libgloss/sparc_leon/asm-leon/head.h
deleted file mode 100644
index 83aa4ae68..000000000
--- a/libgloss/sparc_leon/asm-leon/head.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef __LEONBARE_HEAD_H
-#define __LEONBARE_HEAD_H
-
-/* This is for hard interrupts from level 1-14, 15 is non-maskable (nmi) and
- * gets handled with another macro.
- */
-#define TRAP_ENTRY_INTERRUPT(int_level) \
- mov int_level, %l7; rd %psr, %l0; b leonbare_irq_entry; rd %wim, %l3;
-
-#define TRAP_ENTRY(H) \
- rd %psr, %l0; b H; rd %wim, %l3; nop;
-
-
-#endif /* __SPARC_HEAD_H */
diff --git a/libgloss/sparc_leon/asm-leon/irq.h b/libgloss/sparc_leon/asm-leon/irq.h
deleted file mode 100644
index 5f542d594..000000000
--- a/libgloss/sparc_leon/asm-leon/irq.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _LEON_CATCHIRQ_HANDLER_H_
-#define _LEON_CATCHIRQ_HANDLER_H_
-
-#include <asm-leon/leon.h>
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_queue.h>*/
-#include <asm-leon/leoncompat.h>
-#include <asm-leon/leonstack.h>
-
-#ifndef __ASSEMBLER__
-
-struct pt_regs;
-typedef int (*irqhandler) (int, void *, struct leonbare_pt_regs *);
-
-struct irqaction
-{
- irqhandler handler;
- unsigned long flags;
- void *dev_id;
- struct irqaction *next;
-};
-#define INIT_IRQACTION { 0,0,0,0 }
-
-struct irqmp_type
-{
- int *addr;
- int eirq;
-};
-
-extern void chained_catch_interrupt (int irq, struct irqaction *a);
-extern int catch_interrupt (int func, int irq);
-
-typedef int (*schedulehandler) (struct leonbare_pt_regs *);
-extern schedulehandler schedule_callback;
-typedef int (*tickerhandler) (struct leonbare_pt_regs *);
-extern tickerhandler ticker_callback;
-extern int leonbare_hz;
-extern int nestcount;
-extern int no_inirq_check;
-extern unsigned long force_noalarm;
-
-extern void (*handler_irq_pre) (void);
-extern void (*handler_irq_post) (void);
-
-extern void leonbare_enable_traps (unsigned long old_flags);
-extern unsigned long leonbare_disable_traps ();
-extern void leonbare_flush_windows ();
-
-static inline void
-leonbare_enable_irq (int irq)
-{
- unsigned int old, irqmask = 1 << irq;
- old = leonbare_disable_traps ();
- //---------------------
- switch (LEONCOMPAT_VERSION)
- {
- case 3:
- default:
- LEON3_IrqCtrl_Regs->mask[0] = LEON3_IrqCtrl_Regs->mask[0] | irqmask;
- break;
- }
- //---------------------
- leonbare_enable_traps (old);
-}
-
-typedef int (*pendinghandler) (void *);
-struct pendingaction
-{
- TAILQ_ENTRY (pendingaction) next;
- pendinghandler handler;
- void *arg;
-};
-
-#endif
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/jiffies.h b/libgloss/sparc_leon/asm-leon/jiffies.h
deleted file mode 100644
index 60b0e2701..000000000
--- a/libgloss/sparc_leon/asm-leon/jiffies.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _LINUX_JIFFIES_H
-#define _LINUX_JIFFIES_H
-
-#include <asm-leon/types.h>
-#include <asm-leon/clock.h>
-#include <asm-leon/linkage.h>
-
-/* Suppose we want to devide two numbers NOM and DEN: NOM/DEN, the we can
- * improve accuracy by shifting LSH bits, hence calculating:
- * (NOM << LSH) / DEN
- * This however means trouble for large NOM, because (NOM << LSH) may no
- * longer fit in 32 bits. The following way of calculating this gives us
- * some slack, under the following conditions:
- * - (NOM / DEN) fits in (32 - LSH) bits.
- * - (NOM % DEN) fits in (32 - LSH) bits.
- */
-#define SH_DIV(NOM,DEN,LSH) ( ((NOM / DEN) << LSH) \
- + (((NOM % DEN) << LSH) + DEN / 2) / DEN)
-
-/* TICK_NSEC is the time between ticks in nsec assuming real ACTHZ */
-#define TICK_NSEC (SH_DIV (1000000UL * 1000, (HZ<<8), 8))
-
-/*
- * The 64-bit value is not volatile - you MUST NOT read it
- * without sampling the sequence number in xtime_lock.
- */
-extern u64 jiffies_64;
-extern struct timespec xtime __attribute__ ((aligned (16)));
-#define jiffies (*((unsigned long *)(((unsigned long)(&jiffies_64))+4)))
-
-/*
- * These inlines deal with timer wrapping correctly. You are
- * strongly encouraged to use them
- * 1. Because people otherwise forget
- * 2. Because if the timer wrap changes in future you won't have to
- * alter your driver code.
- *
- * time_after(a,b) returns true if the time a is after time b.
- *
- * Do this with "<0" and ">=0" to only test the sign of the result. A
- * good compiler would generate better code (and a really good compiler
- * wouldn't care). Gcc is currently neither.
- */
-#define time_after(a,b) \
- (typecheck(unsigned long, a) && \
- typecheck(unsigned long, b) && \
- ((long)(b) - (long)(a) < 0))
-#define time_before(a,b) time_after(b,a)
-
-#define time_after_eq(a,b) \
- (typecheck(unsigned long, a) && \
- typecheck(unsigned long, b) && \
- ((long)(a) - (long)(b) >= 0))
-#define time_before_eq(a,b) time_after_eq(b,a)
-
-/*
- * Have the 32 bit jiffies value wrap 5 minutes after boot
- * so jiffies wrap bugs show up earlier.
- */
-#define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))
-
-static inline void
-set_normalized_timespec (struct timespec *ts, time_t sec, long nsec)
-{
- while (nsec > NSEC_PER_SEC)
- {
- nsec -= NSEC_PER_SEC;
- ++sec;
- }
- while (nsec < 0)
- {
- nsec += NSEC_PER_SEC;
- --sec;
- }
- ts->tv_sec = sec;
- ts->tv_nsec = nsec;
-}
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/lambapp.h b/libgloss/sparc_leon/asm-leon/lambapp.h
deleted file mode 100644
index ed406f1ea..000000000
--- a/libgloss/sparc_leon/asm-leon/lambapp.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _LAMBAPP_H
-#define _LAMBAPP_H
-
-
-/* Include VENDOR and DEVICE definitions */
-#include "lambapp_devs.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- struct ambapp_dev_hdr;
- struct ambapp_apb_info;
- struct ambapp_ahb_info;
-
- struct ambapp_dev_hdr
- {
- struct ambapp_dev_hdr *next; /* Next */
- struct ambapp_dev_hdr *prev; /* Previous Device. If (this == prev->child) prev is bus bridge */
- struct ambapp_dev_hdr *children; /* Points to first device on sub-bus */
- void *owner; /* Owner of this AMBA device */
- unsigned char dev_type; /* AHB MST, AHB SLV or APB SLV */
- unsigned char vendor; /* Vendor ID */
- unsigned short device; /* Device ID */
- void *devinfo; /* Device info (APB or AHB depending on type) */
- };
-
-#define AMBAPP_FLAG_FFACT_DIR 0x100 /* Frequency factor direction, 0=down, 1=up */
-#define AMBAPP_FLAG_FFACT 0x0f0 /* Frequency factor against top bus */
-#define AMBAPP_FLAG_MBUS 0x00c
-#define AMBAPP_FLAG_SBUS 0x003
-
- struct ambapp_apb_info
- {
- /* COMMON */
- unsigned char irq;
- unsigned char ver;
-
- /* APB SPECIFIC */
- unsigned int start;
- unsigned int mask;
- };
-
- struct ambapp_ahb_info
- {
- /* COMMON */
- unsigned char irq;
- unsigned char ver;
-
- /* AHB SPECIFIC */
- unsigned int start[4];
- unsigned int mask[4];
- char type[4]; /* type[N] Determine type of start[N]-mask[N], 2=AHB Memory Space, 3=AHB I/O Space */
- unsigned int custom[3];
- };
-
-/* Describes a complete AMBA Core. Each device may consist of 3 interfaces */
- struct ambapp_dev_info
- {
- char irq; /* irq=-1 indicate no IRQ */
- unsigned char vendor;
- unsigned short device;
- int index; /* Core index if multiple "subcores" in one */
- struct ambapp_ahb_info *ahb_mst;
- struct ambapp_ahb_info *ahb_slv;
- struct ambapp_apb_info *apb_slv;
- };
-
- struct ambapp_mmap
- {
- unsigned int size;
- unsigned int local_adr;
- unsigned int remote_adr;
- };
-
-/* Complete AMBA PnP information */
- struct ambapp_bus
- {
- struct ambapp_mmap *mmaps;
- struct ambapp_dev_hdr *root;
- };
-
-/*
- * Return values
- * 0 - continue
- * 1 - stop scanning
- */
- typedef int (*ambapp_func_t) (struct ambapp_dev_hdr * dev, int index,
- int maxdepth, void *arg);
-
-#define DEV_IS_FREE(dev) (dev->owner == NULL)
-#define DEV_IS_ALLOCATED(dev) (dev->owner != NULL)
-
-/* Options to ambapp_for_each */
-#define OPTIONS_AHB_MSTS 0x00000001
-#define OPTIONS_AHB_SLVS 0x00000002
-#define OPTIONS_APB_SLVS 0x00000004
-#define OPTIONS_ALL_DEVS (OPTIONS_AHB_MSTS|OPTIONS_AHB_SLVS|OPTIONS_APB_SLVS)
-
-#define OPTIONS_FREE 0x00000010
-#define OPTIONS_ALLOCATED 0x00000020
-#define OPTIONS_ALL (OPTIONS_FREE|OPTIONS_ALLOCATED)
-
-/* Depth first search, Defualt is breth first search. */
-#define OPTIONS_DEPTH_FIRST 0x00000100
-
-#define DEV_AHB_NONE 0
-#define DEV_AHB_MST 1
-#define DEV_AHB_SLV 2
-#define DEV_APB_SLV 3
-
-/* Structures used to access Plug&Play information directly */
- struct ambapp_pnp_ahb
- {
- const unsigned int id; /* VENDOR, DEVICE, VER, IRQ, */
- const unsigned int custom[3];
- const unsigned int mbar[4]; /* MASK, ADDRESS, TYPE, CACHABLE/PREFETCHABLE */
- };
-
- struct ambapp_pnp_apb
- {
- const unsigned int id; /* VENDOR, DEVICE, VER, IRQ, */
- const unsigned int iobar; /* MASK, ADDRESS, TYPE, CACHABLE/PREFETCHABLE */
- };
-
-#define ambapp_pnp_vendor(id) (((id) >> 24) & 0xff)
-#define ambapp_pnp_device(id) (((id) >> 12) & 0xfff)
-#define ambapp_pnp_ver(id) (((id)>>5) & 0x1f)
-#define ambapp_pnp_irq(id) ((id) & 0x1f)
-
-#define ambapp_pnp_start(mbar) (((mbar) & 0xfff00000) & (((mbar) & 0xfff0) << 16))
-#define ambapp_pnp_mbar_mask(mbar) (((mbar)>>4) & 0xfff)
-#define ambapp_pnp_mbar_type(mbar) ((mbar) & 0xf)
-
-#define ambapp_pnp_apb_start(iobar, base) ((base) | ((((iobar) & 0xfff00000)>>12) & (((iobar) & 0xfff0)<<4)) )
-#define ambapp_pnp_apb_mask(iobar) ((~(ambapp_pnp_mbar_mask(iobar)<<8) & 0x000fffff) + 1)
-
-#define AMBA_TYPE_AHBIO_ADDR(addr,base_ioarea) ((unsigned int)(base_ioarea) | ((addr) >> 12))
-
-#define AMBA_TYPE_APBIO 0x1
-#define AMBA_TYPE_MEM 0x2
-#define AMBA_TYPE_AHBIO 0x3
-
- extern int find_apbslv (int vendor, int device,
- struct ambapp_apb_info *dev);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/lambapp_devs.h b/libgloss/sparc_leon/asm-leon/lambapp_devs.h
deleted file mode 100644
index eda7d422e..000000000
--- a/libgloss/sparc_leon/asm-leon/lambapp_devs.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef __AMBAPP_DEVS_H__
-#define __AMBAPP_DEVS_H__
-
-/* Vendor codes */
-#define VENDOR_GAISLER 1
-#define VENDOR_PENDER 2
-#define VENDOR_ESA 4
-#define VENDOR_ASTRIUM 6
-#define VENDOR_OPENCHIP 7
-#define VENDOR_OPENCORES 8
-#define VENDOR_CONTRIB 9
-#define VENDOR_EONIC 11
-#define VENDOR_RADIONOR 15
-#define VENDOR_GLEICHMANN 16
-#define VENDOR_MENTA 17
-#define VENDOR_SUN 19
-#define VENDOR_MOVIDIA 20
-#define VENDOR_ORBITA 23
-#define VENDOR_SYNOPSYS 33
-#define VENDOR_NASA 34
-#define VENDOR_ACTEL 172
-#define VENDOR_CAL 202
-#define VENDOR_EMBEDDIT 234
-#define VENDOR_CETON 203
-
-/* Gaisler Research device id's */
-#define GAISLER_LEON2DSU 0x002
-#define GAISLER_LEON3 0x003
-#define GAISLER_LEON3DSU 0x004
-#define GAISLER_ETHAHB 0x005
-#define GAISLER_APBMST 0x006
-#define GAISLER_AHBUART 0x007
-#define GAISLER_SRCTRL 0x008
-#define GAISLER_SDCTRL 0x009
-#define GAISLER_SSRCTRL 0x00a
-#define GAISLER_APBUART 0x00c
-#define GAISLER_IRQMP 0x00d
-#define GAISLER_AHBRAM 0x00e
-#define GAISLER_AHBDPRAM 0x00f
-#define GAISLER_GPTIMER 0x011
-#define GAISLER_PCITRG 0x012
-#define GAISLER_PCISBRG 0x013
-#define GAISLER_PCIFBRG 0x014
-#define GAISLER_PCITRACE 0x015
-#define GAISLER_DMACTRL 0x016
-#define GAISLER_AHBTRACE 0x017
-#define GAISLER_DSUCTRL 0x018
-#define GAISLER_CANAHB 0x019
-#define GAISLER_GPIO 0x01a
-#define GAISLER_AHBROM 0x01b
-#define GAISLER_AHBJTAG 0x01c
-#define GAISLER_ETHMAC 0x01d
-#define GAISLER_SWNODE 0x01e
-#define GAISLER_SPW 0x01f
-#define GAISLER_AHB2AHB 0x020
-#define GAISLER_USBDC 0x021
-#define GAISLER_USB_DCL 0x022
-#define GAISLER_DDRMP 0x023
-#define GAISLER_ATACTRL 0x024
-#define GAISLER_DDRSP 0x025
-#define GAISLER_EHCI 0x026
-#define GAISLER_UHCI 0x027
-#define GAISLER_I2CMST 0x028
-#define GAISLER_SPW2 0x029
-#define GAISLER_AHBDMA 0x02a
-#define GAISLER_NUHOSP3 0x02b
-#define GAISLER_CLKGATE 0x02c
-#define GAISLER_SPICTRL 0x02d
-#define GAISLER_DDR2SP 0x02e
-#define GAISLER_SLINK 0x02f
-#define GAISLER_GRTM 0x030
-#define GAISLER_GRTC 0x031
-#define GAISLER_GRPW 0x032
-#define GAISLER_GRCTM 0x033
-#define GAISLER_GRHCAN 0x034
-#define GAISLER_GRFIFO 0x035
-#define GAISLER_GRADCDAC 0x036
-#define GAISLER_GRPULSE 0x037
-#define GAISLER_GRTIMER 0x038
-#define GAISLER_AHB2PP 0x039
-#define GAISLER_GRVERSION 0x03a
-#define GAISLER_APB2PW 0x03b
-#define GAISLER_PW2APB 0x03c
-#define GAISLER_GRCAN 0x03d
-#define GAISLER_I2CSLV 0x03e
-#define GAISLER_U16550 0x03f
-#define GAISLER_AHBMST_EM 0x040
-#define GAISLER_AHBSLV_EM 0x041
-#define GAISLER_GRTESTMOD 0x042
-#define GAISLER_ASCS 0x043
-#define GAISLER_IPMVBCTRL 0x044
-#define GAISLER_SPIMCTRL 0x045
-#define GAISLER_LEON4 0x048
-#define GAISLER_LEON4DSU 0x049
-#define GAISLER_GRPWM 0x04A
-#define GAISLER_FTAHBRAM 0x050
-#define GAISLER_FTSRCTRL 0x051
-#define GAISLER_AHBSTAT 0x052
-#define GAISLER_LEON3FT 0x053
-#define GAISLER_FTMCTRL 0x054
-#define GAISLER_FTSDCTRL 0x055
-#define GAISLER_FTSRCTRL8 0x056
-#define GAISLER_APBPS2 0x060
-#define GAISLER_VGACTRL 0x061
-#define GAISLER_LOGAN 0x062
-#define GAISLER_SVGACTRL 0x063
-#define GAISLER_T1AHB 0x064
-#define GAISLER_MP7WRAP 0x065
-#define GAISLER_GRSYSMON 0x066
-#define GAISLER_GRACECTRL 0x067
-#define GAISLER_B1553BC 0x070
-#define GAISLER_B1553RT 0x071
-#define GAISLER_B1553BRM 0x072
-#define GAISLER_SATCAN 0x080
-#define GAISLER_CANMUX 0x081
-#define GAISLER_GRTMRX 0x082
-#define GAISLER_GRTCTX 0x083
-#define GAISLER_GRTMDESC 0x084
-#define GAISLER_GRTMVC 0x085
-#define GAISLER_GEFFE 0x086
-#define GAISLER_AES 0x073
-#define GAISLER_ECC 0x074
-#define GAISLER_PCIF 0x075
-#define GAISLER_CLKMOD 0x076
-#define GAISLER_HAPSTRAK 0x077
-#define GAISLER_TEST_1X2 0x078
-#define GAISLER_WILD2AHB 0x079
-#define GAISLER_BIO1 0x07a
-
-#define GAISLER_PIPEWRAPPER 0xffa
-#define GAISLER_L2TIME 0xffd /* internal device: leon2 timer */
-#define GAISLER_L2C 0xffe /* internal device: leon2compat */
-#define GAISLER_PLUGPLAY 0xfff /* internal device: plug & play configarea */
-
-/* European Space Agency device id's */
-#define ESA_LEON2 0x002
-#define ESA_LEON2APB 0x003
-#define ESA_IRQ 0x005
-#define ESA_TIMER 0x006
-#define ESA_UART 0x007
-#define ESA_CFG 0x008
-#define ESA_IO 0x009
-#define ESA_MCTRL 0x00f
-#define ESA_PCIARB 0x010
-#define ESA_HURRICANE 0x011
-#define ESA_SPW_RMAP 0x012
-#define ESA_SPW2 0x012
-#define ESA_AHBUART 0x013
-#define ESA_SPWA 0x014
-#define ESA_BOSCHCAN 0x015
-#define ESA_IRQ2 0x016
-#define ESA_AHBSTAT 0x017
-#define ESA_WPROT 0x018
-#define ESA_WPROT2 0x019
-#define ESA_PDEC3AMBA 0x020
-#define ESA_PTME3AMBA 0x021
-
-#define OPENCHIP_APBGPIO 0x001
-#define OPENCHIP_APBI2C 0x002
-#define OPENCHIP_APBSPI 0x003
-#define OPENCHIP_APBCHARLCD 0x004
-#define OPENCHIP_APBPWM 0x005
-#define OPENCHIP_APBPS2 0x006
-#define OPENCHIP_APBMMCSD 0x007
-#define OPENCHIP_APBNAND 0x008
-#define OPENCHIP_APBLPC 0x009
-#define OPENCHIP_APBCF 0x00a
-#define OPENCHIP_APBSYSACE 0x00b
-#define OPENCHIP_APB1WIRE 0x00c
-#define OPENCHIP_APBJTAG 0x00d
-#define OPENCHIP_APBSUI 0x00e
-
-
-#define CONTRIB_CORE1 0x001
-#define CONTRIB_CORE2 0x002
-
-#define GLEICHMANN_CUSTOM 0x001
-#define GLEICHMANN_GEOLCD01 0x002
-#define GLEICHMANN_DAC 0x003
-#define GLEICHMANN_HPI 0x004
-#define GLEICHMANN_SPI 0x005
-#define GLEICHMANN_HIFC 0x006
-#define GLEICHMANN_ADCDAC 0x007
-#define GLEICHMANN_SPIOC 0x008
-#define GLEICHMANN_AC97 0x009
-
-#define SUN_T1 0x001
-#define SUN_S1 0x011
-
-#define ORBITA_1553B 0x001
-#define ORBITA_429 0x002
-#define ORBITA_SPI 0x003
-#define ORBITA_I2C 0x004
-#define ORBITA_SMARTCARD 0x064
-#define ORBITA_SDCARD 0x065
-#define ORBITA_UART16550 0x066
-#define ORBITA_CRYPTO 0x067
-#define ORBITA_SYSIF 0x068
-#define ORBITA_PIO 0x069
-#define ORBITA_RTC 0x0c8
-#define ORBITA_COLORLCD 0x12c
-#define ORBITA_PCI 0x190
-#define ORBITA_DSP 0x1f4
-#define ORBITA_USBHOST 0x258
-#define ORBITA_USBDEV 0x2bc
-
-#define NASA_EP32 0x001
-
-#define CAL_DDRCTRL 0x188
-
-#define ACTEL_COREMP7 0x001
-
-/* Opencores device id's */
-#define OPENCORES_PCIBR 0x4
-#define OPENCORES_ETHMAC 0x5
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/leon.h b/libgloss/sparc_leon/asm-leon/leon.h
deleted file mode 100644
index 8c13a1bb8..000000000
--- a/libgloss/sparc_leon/asm-leon/leon.h
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _INCLUDE_LEON_h
-#define _INCLUDE_LEON_h
-
-#include <asm-leon/leon3.h>
-#include <asm-leon/amba.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* psr defines */
-#define SPARC_PSR_WIN_MASK 0x0000001f /* bit 0-4 */
-#define SPARC_PSR_ET_MASK 0x00000020 /* bit 5 */
-#define SPARC_PSR_PS_MASK 0x00000040 /* bit 6 */
-#define SPARC_PSR_S_MASK 0x00000080 /* bit 7 */
-#define SPARC_PSR_PIL_MASK 0x00000F00 /* bits 8 - 11 */
-#define SPARC_PSR_EF_MASK 0x00001000 /* bit 12 */
-#define SPARC_PSR_EC_MASK 0x00002000 /* bit 13 */
-#define SPARC_PSR_ICC_MASK 0x00F00000 /* bits 20 - 23 */
-#define SPARC_PSR_VER_MASK 0x0F000000 /* bits 24 - 27 */
-#define SPARC_PSR_IMPL_MASK 0xF0000000 /* bits 28 - 31 */
-#define SPARC_PSR_PIL_SHIFT 8
-
-#define SPARC_NUM_REGWIN _nwindows
-
-#ifndef __ASSEMBLER__
- extern int _nwindows;
- extern int _leon_version;
-#endif
-
-#define LEON_VERSION _leon_version
-
-/*
- * Interrupt Sources
- *
- * The interrupt source numbers directly map to the trap type and to
- * the bits used in the Interrupt Clear, Interrupt Force, Interrupt Mask,
- * and the Interrupt Pending Registers.
- */
-
-#define LEON_INTERRUPT_CORRECTABLE_MEMORY_ERROR 1
-#define LEON2_INTERRUPT_UART_2_RX_TX 2
-#define LEON2_INTERRUPT_UART_1_RX_TX 3
-#define LEON23_INTERRUPT_UART_2_RX_TX leon23_irqs[1] /*console.c */
-#define LEON23_INTERRUPT_UART_1_RX_TX leon23_irqs[0] /*console.c */
-#define LEON_INTERRUPT_EXTERNAL_0 4
-#define LEON_INTERRUPT_EXTERNAL_1 5
-#define LEON_INTERRUPT_EXTERNAL_2 6
-#define LEON_INTERRUPT_EXTERNAL_3 7
-#define LEON2_INTERRUPT_TIMER1 8
-#define LEON2_INTERRUPT_TIMER2 9
-#define LEON23_INTERRUPT_TIMER1 leon23_timerirqs[0] /* timer.c */
-#define LEON23_INTERRUPT_TIMER2 leon23_timerirqs[1] /* timer.c */
-#define LEON_INTERRUPT_EMPTY1 10
-#define LEON_INTERRUPT_EMPTY2 11
-#define LEON_INTERRUPT_EMPTY3 12
-#define LEON_INTERRUPT_EMPTY4 13
-#define LEON_INTERRUPT_EMPTY5 14
-#define LEON_INTERRUPT_EMPTY6 15
-
-#ifndef __ASSEMBLER__
-
-/*
- * Trap Types for on-chip peripherals
- *
- * Source: Table 8 - Interrupt Trap Type and Default Priority Assignments
- *
- * NOTE: The priority level for each source corresponds to the least
- * significant nibble of the trap type.
- */
-
-#define LEON_TRAP_TYPE( _source ) SPARC_ASYNCHRONOUS_TRAP((_source) + 0x10)
-
-#define LEON_TRAP_SOURCE( _trap ) ((_trap) - 0x10)
-
-#define LEON_INT_TRAP( _trap ) \
- ( (_trap) >= LEON_TRAP_TYPE( LEON_INTERRUPT_CORRECTABLE_MEMORY_ERROR ) && \
- (_trap) <= LEON_TRAP_TYPE( LEON_INTERRUPT_EMPTY6 ) )
-
-
-#endif
-
-
-/*
- * The following defines the bits in Memory Configuration Register 1.
- */
-
-#define LEON_MEMORY_CONFIGURATION_PROM_SIZE_MASK 0x0003C000
-
-/*
- * The following defines the bits in Memory Configuration Register 1.
- */
-
-#define LEON_MEMORY_CONFIGURATION_RAM_SIZE_MASK 0x00001E00
-
-
-/*
- * The following defines the bits in the Timer Control Register.
- */
-
-#define LEON_REG_TIMER_CONTROL_EN 0x00000001 /* 1 = enable counting */
- /* 0 = hold scalar and counter */
-#define LEON_REG_TIMER_CONTROL_RL 0x00000002 /* 1 = reload at 0 */
- /* 0 = stop at 0 */
-#define LEON_REG_TIMER_CONTROL_LD 0x00000004 /* 1 = load counter */
- /* 0 = no function */
-
-/*
- * The following defines the bits in the UART Control Registers.
- *
- */
-
-#define LEON_REG_UART_CONTROL_RTD 0x000000FF /* RX/TX data */
-
-/*
- * The following defines the bits in the LEON UART Status Registers.
- */
-
-#define LEON_REG_UART_STATUS_DR 0x00000001 /* Data Ready */
-#define LEON_REG_UART_STATUS_TSE 0x00000002 /* TX Send Register Empty */
-#define LEON_REG_UART_STATUS_THE 0x00000004 /* TX Hold Register Empty */
-#define LEON_REG_UART_STATUS_BR 0x00000008 /* Break Error */
-#define LEON_REG_UART_STATUS_OE 0x00000010 /* RX Overrun Error */
-#define LEON_REG_UART_STATUS_PE 0x00000020 /* RX Parity Error */
-#define LEON_REG_UART_STATUS_FE 0x00000040 /* RX Framing Error */
-#define LEON_REG_UART_STATUS_ERR 0x00000078 /* Error Mask */
-
-
-/*
- * The following defines the bits in the LEON UART Status Registers.
- */
-
-#define LEON_REG_UART_CTRL_RE 0x00000001 /* Receiver enable */
-#define LEON_REG_UART_CTRL_TE 0x00000002 /* Transmitter enable */
-#define LEON_REG_UART_CTRL_RI 0x00000004 /* Receiver interrupt enable */
-#define LEON_REG_UART_CTRL_TI 0x00000008 /* Transmitter interrupt enable */
-#define LEON_REG_UART_CTRL_PS 0x00000010 /* Parity select */
-#define LEON_REG_UART_CTRL_PE 0x00000020 /* Parity enable */
-#define LEON_REG_UART_CTRL_FL 0x00000040 /* Flow control enable */
-#define LEON_REG_UART_CTRL_LB 0x00000080 /* Loop Back enable */
-
-/* leon2 asis */
-#define ASI_LEON2_IFLUSH 0x05
-#define ASI_LEON2_DFLUSH 0x06
-#define ASI_LEON2_CACHEMISS 1
-
-/* leon3 asis */
-#define ASI_LEON3_IFLUSH 0x10
-#define ASI_LEON3_DFLUSH 0x11
-#define ASI_LEON3_CACHEMISS 1
-#define ASI_LEON3_SYSCTRL 0x02
-
-#define ASI_LEON23_ITAG 0x0c
-#define ASI_LEON23_DTAG 0x0e
-
-
-#ifndef __ASSEMBLER__
-
- unsigned int leonbare_leon23_loadnocache (unsigned int addr);
- unsigned int leonbare_leon23_loadnocache16 (unsigned int addr);
- unsigned int leonbare_leon23_loadnocache8 (unsigned int addr);
- unsigned int leonbare_leon23_storenocache (unsigned int addr,
- unsigned int value);
- unsigned int leonbare_leon23_storenocache16 (unsigned int addr,
- unsigned int value);
- unsigned int leonbare_leon23_storenocache8 (unsigned int addr,
- unsigned int value);
-
- unsigned int leonbare_leon3_loadnocache (unsigned int addr);
- unsigned int leonbare_leon3_loadnocache16 (unsigned int addr);
- unsigned int leonbare_leon3_loadnocache8 (unsigned int addr);
-
-
-/*
- * This is used to manipulate the on-chip registers.
- *
- * The following symbol must be defined in the linkcmds file and point
- * to the correct location.
- */
-
- extern unsigned long *LEON23_IRQ_mask_addr; /* in peripherals.h */
- extern unsigned long *LEON23_IRQ_force_addr; /* in peripherals.h */
- extern unsigned long *LEON23_IRQ_pending_addr; /* in peripherals.h */
- extern unsigned long *LEON23_IRQ_clear_addr; /* in peripherals.h */
-
-/*
- * Macros to manipulate the Interrupt Clear, Interrupt Force, Interrupt Mask,
- * and the Interrupt Pending Registers.
- *
- * NOTE: For operations which are not atomic, this code disables interrupts
- * to guarantee there are no intervening accesses to the same register.
- * The operations which read the register, modify the value and then
- * store the result back are vulnerable.
- */
-
-#define LEON_Clear_interrupt( _source ) \
- do { \
- (*LEON23_IRQ_clear_addr) = (1 << (_source)); \
- } while (0)
-
-#define LEON_Force_interrupt( _source ) \
- do { \
- (*LEON23_IRQ_force_addr) = (1 << (_source)); \
- } while (0)
-
-#define LEON_Is_interrupt_masked( _source ) \
- ((*LEON23_IRQ_mask_addr) & (1 << (_source)))
-
-#define LEON_Mask_interrupt( _source ) \
- do { \
- unsigned32 _level; \
- \
- _level = sparc_disable_interrupts(); \
- (*LEON23_IRQ_mask_addr) &= ~(1 << (_source)); \
- sparc_enable_interrupts( _level ); \
- } while (0)
-
-#define LEON_Unmask_interrupt( _source ) \
- do { \
- unsigned32 _level; \
- \
- _level = sparc_disable_interrupts(); \
- (*LEON23_IRQ_mask_addr) |= (1 << (_source)); \
- sparc_enable_interrupts( _level ); \
- } while (0)
-
-#define LEON_Disable_interrupt( _source, _previous ) \
- do { \
- unsigned32 _level; \
- unsigned32 _mask = 1 << (_source); \
- \
- _level = sparc_disable_interrupts(); \
- (_previous) = (*LEON23_IRQ_mask_addr); \
- (*LEON23_IRQ_mask_addr) = _previous & ~_mask; \
- sparc_enable_interrupts( _level ); \
- (_previous) &= _mask; \
- } while (0)
-
-#define LEON_Restore_interrupt( _source, _previous ) \
- do { \
- unsigned32 _level; \
- unsigned32 _mask = 1 << (_source); \
- \
- _level = sparc_disable_interrupts(); \
- (*LEON23_IRQ_mask_addr) = \
- ((*LEON23_IRQ_mask_addr) & ~_mask) | (_previous); \
- sparc_enable_interrupts( _level ); \
- } while (0)
-
-/*
- * Each timer control register is organized as follows:
- *
- * D0 - Enable
- * 1 = enable counting
- * 0 = hold scaler and counter
- *
- * D1 - Counter Reload
- * 1 = reload counter at zero and restart
- * 0 = stop counter at zero
- *
- * D2 - Counter Load
- * 1 = load counter with preset value
- * 0 = no function
- *
- */
-
-#define LEON_REG_TIMER_COUNTER_IRQEN 0x00000008
-
-#define LEON_REG_TIMER_COUNTER_RELOAD_AT_ZERO 0x00000002
-#define LEON_REG_TIMER_COUNTER_STOP_AT_ZERO 0x00000000
-
-#define LEON_REG_TIMER_COUNTER_LOAD_COUNTER 0x00000004
-
-#define LEON_REG_TIMER_COUNTER_ENABLE_COUNTING 0x00000001
-#define LEON_REG_TIMER_COUNTER_DISABLE_COUNTING 0x00000000
-
-#define LEON_REG_TIMER_COUNTER_RELOAD_MASK 0x00000002
-#define LEON_REG_TIMER_COUNTER_ENABLE_MASK 0x00000001
-
-#define LEON_REG_TIMER_COUNTER_DEFINED_MASK 0x00000003
-#define LEON_REG_TIMER_COUNTER_CURRENT_MODE_MASK 0x00000003
-
-/* console.c */
- int lo_sprintf (char *buf, const char *fmt, ...);
-
-/* do a virtual address read without cache */
- static __inline__ unsigned long leon23_getpsr ()
- {
- unsigned long retval;
- __asm__ __volatile__ ("mov %%psr, %0\n\t":"=r" (retval):);
- return retval;
- }
-
- extern __inline__ void sparc_leon2_dcache_flush (void)
- {
- __asm__
- __volatile__ ("sta %%g0, [%%g0] %0\n\t"::"i"
- (ASI_LEON2_IFLUSH):"memory");
- __asm__
- __volatile__ ("sta %%g0, [%%g0] %0\n\t"::"i"
- (ASI_LEON2_DFLUSH):"memory");
- };
-
-
- extern __inline__ void sparc_leon_dcache_flush (void)
- {
- switch (sparc_leon23_get_psr_version ())
- {
- case 0:
- case 2:
- sparc_leon2_dcache_flush ();
- break;
- default:
- sparc_leon3_dcache_flush ();
- break;
- }
- }
-
- extern int lolevelirqinstall (int irqnr, void (*handler) ());
- extern unsigned long locore_readtbr ();
- extern void _leonbase_Stop ();
-
- extern void uninstall_winoverflow_hook ();
- extern int install_winoverflow_hook (void (*func) (void));
-
- extern void sparc_leon23_icache_flush ();
- extern void sparc_leon23_dcache_flush ();
-
-#endif /* ! __ASSEMBLER__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#define TACODE_IRQCALL 2
-#define TACODE_IRQCALL_FLUSH 6
-
-#define TACODE_FLUSH 3
-#define TACODE_IRQCALLDIS 5
-
-
-
-#endif /* !_INCLUDE_LEON_h */
-/* end of include file */
diff --git a/libgloss/sparc_leon/asm-leon/leon3.h b/libgloss/sparc_leon/asm-leon/leon3.h
deleted file mode 100644
index e8b6cfee5..000000000
--- a/libgloss/sparc_leon/asm-leon/leon3.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _INCLUDE_LEON3_h
-#define _INCLUDE_LEON3_h
-
-#ifndef __ASSEMBLER__
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define ASI_LEON3_CACHEMISS 1
-#define ASI_LEON3_SYSCTRL 0x02
-#define ASI_LEON3_DFLUSH 0x11
-
-#define ASI_LEON3_SYSCTRL_ICFG 0x08
-#define ASI_LEON3_SYSCTRL_DCFG 0x0c
-#define ASI_LEON3_SYSCTRL_CFG_SNOOPING (1<<27)
-#define ASI_LEON3_SYSCTRL_CFG_SSIZE(c) (1<<((c>>20)&0xf))
-
-
- extern __inline__ unsigned long sparc_leon23_get_psr (void)
- {
- unsigned int retval;
- __asm__ __volatile__ ("rd %%psr, %0\n\t":"=r" (retval):);
- return (retval);
- }
-
- extern __inline__ unsigned long sparc_leon23_get_psr_version (void)
- {
- unsigned int psr = sparc_leon23_get_psr ();
- return (psr >> 24) & 0xf;
- }
-#define LEON_ISLEON2 (sparc_leon23_get_psr_version() == 2 || sparc_leon23_get_psr_version() == 0)
-#define LEON_ISLEON3 (sparc_leon23_get_psr_version() == 3)
-
- extern __inline__ unsigned long sparc_leon3_get_dcachecfg (void)
- {
- unsigned int retval;
- __asm__
- __volatile__ ("lda [%1] %2, %0\n\t":"=r" (retval):"r"
- (ASI_LEON3_SYSCTRL_DCFG), "i" (ASI_LEON3_SYSCTRL));
- return (retval);
- }
-
- extern __inline__ void sparc_leon3_enable_snooping (void)
- {
- /*enable snooping */
- __asm__ volatile ("lda [%%g0] 2, %%l1\n\t"
- "set 0x800000, %%l2\n\t"
- "or %%l2, %%l1, %%l2\n\t"
- "sta %%l2, [%%g0] 2\n\t":::"l1", "l2");
- };
-
- extern __inline__ void sparc_leon3_disable_cache (void)
- {
- /*asi 2 */
- __asm__ volatile ("lda [%%g0] 2, %%l1\n\t"
- "set 0x00000f, %%l2\n\t"
- "andn %%l2, %%l1, %%l2\n\t"
- "sta %%l2, [%%g0] 2\n\t":::"l1", "l2");
- };
-
-
-
- extern __inline__ void sparc_leon3_dcache_flush (void)
- {
- __asm__ __volatile__ (" flush "); //iflush
- __asm__
- __volatile__ ("sta %%g0, [%%g0] %0\n\t"::"i"
- (ASI_LEON3_DFLUSH):"memory");
- };
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !ASM */
-
-
-#endif /* !_INCLUDE_LEON3_h */
-/* end of include file */
diff --git a/libgloss/sparc_leon/asm-leon/leonbare_debug.h b/libgloss/sparc_leon/asm-leon/leonbare_debug.h
deleted file mode 100644
index ca9362f0e..000000000
--- a/libgloss/sparc_leon/asm-leon/leonbare_debug.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef __LEONBARE_KERNEL_DEBUG_H__
-#define __LEONBARE_KERNEL_DEBUG_H__
-
-#include <asm-leon/leondbg.h>
-
-/*
- #define LBDEBUG_DO_DEBUG
- #define LBDEBUG_DO_ASSERT
-*/
-
-#define LBDEBUG_ALWAYS_NR (1<<0)
-#define LBDEBUG_ASSERT_NR (1<<1)
-#define LBDEBUG_FNCALL_NR (1<<2)
-#define LBDEBUG_FNEXIT_NR (1<<3)
-#define LBDEBUG_SCHED_NR (1<<4)
-#define LBDEBUG_QUEUE_NR (1<<5)
-#define LBDEBUG_THREAD_NR (1<<6)
-
-#define LBDEBUG_PRINTF dbgleon_printf /*leonbare_debug_printf */
-
-#ifdef LBDEBUG_DO_DEBUG
-#ifndef __ASSEMBLER__
-extern int leonbare_debug;
-#endif
-# define PDEBUG_FLAGS_CHECK(c) ((c)&leonbare_debug)
-# define PDEBUG_FLAGS_SET(c) leonbare_debug |= c
-#else
-# define PDEBUG_FLAGS_CHECK(c) 0
-# define PDEBUG_FLAGS_SET(c)
-#endif
-
-#ifdef LBDEBUG_DO_DEBUG
-# define LBDEBUG(x, fmt, args...) do { if (PDEBUG_FLAGS_CHECK(x)) { LBDEBUG_PRINTF(fmt,args); } } while(0)
-#else
-# define LBDEBUG(x, fmt, args...)
-#endif
-
-#ifdef LBDEBUG_DO_ASSERT
-# define LBPASSERT(x, fmt, args...) if (!(x)) { LBDEBUG_PRINTF(fmt,args); while(1); }
-#else
-# define LBPASSERT(x, fmt, args...)
-#endif
-
-#ifndef LBDEBUG___FUNCTION__
-#define LBDEBUG___FUNCTION__ __FUNCTION__
-#endif
-
-#ifndef LBDEBUG___FUNCTION_WIDTH__
-#define LBDEBUG___FUNCTION_WIDTH__ "28"
-#endif
-
-#ifdef LBDEBUG_DO_FILE
-#ifndef LBDEBUG___FILE__
-#define LBDEBUG___FILE__ __FILE__
-#endif
-#ifndef LBDEBUG___FILE_WIDTH__
-#define LBDEBUG___FILE_WIDTH__ "28"
-#endif
-#define LBDEBUG___FILE_APPEND ,__FILE__
-#define LBDEBUG___FILE_FMT_APPEND ":%" LBDEBUG___FILE_WIDTH__ "s"
-#else
-#define LBDEBUG___FILE_APPEND
-#define LBDEBUG___FILE_FMT_APPEND
-#endif
-
-#ifdef LBDEBUG_DO_DEBUG
-# define LBDEBUG_HEADER(code) \
- if (PDEBUG_FLAGS_CHECK(code)) { \
- register unsigned int _GETSP asm("sp"); \
- LBDEBUG_PRINTF("[sp:%08x self(%08x):", _GETSP, LEONBARE_KR_CURRENT); \
- LBDEBUG_PRINTF("%10s",LEONBARE_TH_NAME_DBG(LEONBARE_KR_CURRENT)); \
- LBDEBUG_PRINTF(" %03d @ %" LBDEBUG___FUNCTION_WIDTH__ "s()" LBDEBUG___FILE_FMT_APPEND "]:" , __LINE__,LBDEBUG___FUNCTION__ LBDEBUG___FILE_APPEND); \
- }
-
-# define LBDEBUG_HEADER_PRINTF(code,fmt,args...) \
- if (PDEBUG_FLAGS_CHECK(code)) { \
- LBDEBUG_HEADER(code); \
- LBDEBUG_PRINTF(fmt,args); \
- }
-
-# define LBDEBUG_CODE_PRINTF(code,fmt,args...) \
- if (PDEBUG_FLAGS_CHECK(code)) { \
- LBDEBUG_PRINTF(fmt,args); \
- }
-#else
-# define LBDEBUG_HEADER(code)
-# define LBDEBUG_HEADER_PRINTF(code,fmt,args...)
-# define LBDEBUG_CODE_PRINTF(code,fmt,args...)
-#endif
-
-#define LBDEBUG_FNCALL LBDEBUG_HEADER_PRINTF(LBDEBUG_FNCALL_NR,"enter\n",0)
-#define LBDEBUG_FNEXIT LBDEBUG_HEADER_PRINTF(LBDEBUG_FNEXIT_NR,"exit\n",0)
-
-#ifndef __ASSEMBLER__
-
-int leonbare_debug_printf (const char *fmt, ...);
-
-#endif
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/leonbare_kernel.h b/libgloss/sparc_leon/asm-leon/leonbare_kernel.h
deleted file mode 100644
index 0924d4723..000000000
--- a/libgloss/sparc_leon/asm-leon/leonbare_kernel.h
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef __LEONBARE_KERNEL_H__
-#define __LEONBARE_KERNEL_H__
-
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/leon.h>
-#ifndef __ASSEMBLER__
-#include <asm-leon/leonbare_kernel_queue.h>
-#include <reent.h>
-#endif
-#include "irq.h"
-
-#define LEONBARE_RUNQ_READY_NR (2) /* queue 0-1 for ready */
-#define LEONBARE_RUNQ_SUSPENDED_IDX (2) /* queue 2 for suspended */
-#define LEONBARE_RUNQ_PREPARE_IDX (3) /* LEONBARE_RUNQ_READY_NR times queues */
-#define LEONBARE_RUNQ_KILLED_IDX (LEONBARE_RUNQ_PREPARE_IDX+LEONBARE_RUNQ_READY_NR) /* queue 2 for killed threads */
-#define LEONBARE_RUNQ_NR (LEONBARE_RUNQ_KILLED_IDX+1)
-
-#define LEONBARE_RUNQ_ISREADY(idx) ((idx) >= 0 && (idx) < LEONBARE_RUNQ_READY_NR)
-#define LEONBARE_RUNQ_ISPREPARE(idx) ((idx) >= LEONBARE_RUNQ_PREPARE_IDX && (idx) < LEONBARE_RUNQ_PREPARE_IDX+LEONBARE_RUNQ_READY_NR)
-#define LEONBARE_RUNQ_ISSUSPEND(idx) ((idx) == LEONBARE_RUNQ_SUSPENDED_IDX)
-#define LEONBARE_RUNQ_ISKILLED(idx) ((idx) == LEONBARE_RUNQ_KILLED_IDX)
-
-#ifndef __ASSEMBLER__
-
-#ifndef NULL
-#define NULL ((void *)0)
-#endif
-
-#define MACRO_BEGIN do {
-#define MACRO_END } while (0)
-
-#define optbarrier() __asm__ __volatile__("": : :"memory")
-
-typedef struct leonbare_thread_ctx
-{
- unsigned long sf_locals[8];
- unsigned long sf_ins[8];
- unsigned long outs[8];
- unsigned long globals[8];
- unsigned long psr;
- unsigned long wim;
- unsigned long magic;
- unsigned long fpu;
- /* size aligned to 8 */
-} leonbare_thread_ctx_t;
-#define LEONBARE_THREAD_CTX_SZ sizeof(struct leonbare_thread_ctx)
-
-typedef
-LBTAILQ_HEAD (leonbare_mutex_queue, leonbare_mutex) *
- leonbare_mutex_queue_t;
-
-#endif
-#define LEONBARE_THREAD_OFFSET_CTX 0
-#ifndef __ASSEMBLER__
-
- struct leonbare_thread_protect
- {
- unsigned int runq;
- unsigned int krp_runq_depth;
- unsigned int krp_k_depth;
- struct leonbare_mutex *krp_m;
- unsigned int krp_m_depth;
- unsigned int krp_flags;;
- unsigned int krp_flags_depth;
- };
-
-#define LEONBARE_INT_DISABLE_DECL unsigned long _irq_flags = leonbare_disable_traps();
-#define LEONBARE_INT_ENABLE_DECL leonbare_enable_traps(_irq_flags);
-
-#define leonbare_setu32p(a,v) leonbare_leon23_storenocache(a,v)
-#define leonbare_setu32(a,v) leonbare_leon23_storenocache(a,v)
-#define leonbare_getu32(a) leonbare_leon23_loadnocache(a)
-
-#define LEONBARE_KERNEL_UNCACHED
-#ifndef LEONBARE_KERNEL_UNCACHED
-#define LEONBARE_KERNEL_SETU32P(a,v) (a=v)
-#define LEONBARE_KERNEL_SETU32(a,v) (a=v) /* uncached version should return v */
-#define LEONBARE_KERNEL_GETU32(a) (a)
-#define LEONBARE_KERNEL_GETU32P(a) (a)
-#define LEONBARE_KERNEL_GETI32(a) (a)
-#define LEONBARE_KERNEL_GETU32P_CAST(a,typ) ((typ)(a))
-#define LEONBARE_KERNEL_GETU32P_BARE(a) (*(a)) /* uncached: no & */
-#define LEONBARE_KERNEL_SETU32P_BARE(a,v) (*(a) = v) /* uncached: no & */
-#else
-#define LEONBARE_KERNEL_SETU32P(a,v) (leonbare_setu32p(&a,v))
-#define LEONBARE_KERNEL_SETU32(a,v) (leonbare_setu32p(&a,v)) /* uncached version should return v */
-#define LEONBARE_KERNEL_GETU32(a) (leonbare_getu32(&a))
-#define LEONBARE_KERNEL_GETU32P(a) ((void *)leonbare_getu32(&a))
-#define LEONBARE_KERNEL_GETI32(a) (leonbare_getu32(&a))
-#define LEONBARE_KERNEL_GETU32P_CAST(a,typ) ((typ)(LEONBARE_KERNEL_GETU32P(a)))
-#define LEONBARE_KERNEL_GETU32P_BARE(a) ((void *)leonbare_getu32(a)) /* uncached: no & */
-#define LEONBARE_KERNEL_SETU32P_BARE(a,v) (leonbare_setu32p(a,v)) /* uncached: no & */
-#endif
-
-
-#define LEONBARE_SMP_SPINLOCK_AQUIRE(l)
-#define LEONBARE_SMP_SPINLOCK_RELEASE(l)
-
-#define LEONBARE_ISQ_ISDISABLED ((leon23_getpsr() & SPARC_PSR_PIL_MASK) == SPARC_PSR_PIL_MASK)
-
-#define _LEONBARE_PROTECT_IRQ_START \
- if (LEONBARE_KR_CURRENT->th_prot.krp_flags_depth++) { \
- LBPASSERT((LEONBARE_ISQ_ISDISABLED),"Internal error: Recursiv IRQ protection with irq's enabled",0); \
- } else { \
- LEONBARE_KR_CURRENT->th_prot.krp_flags = leonbare_disable_traps(); \
- }
-
-#define _LEONBARE_PROTECT_IRQ_END \
- if (--LEONBARE_KR_CURRENT->th_prot.krp_flags_depth) { \
- LBPASSERT((LEONBARE_ISQ_ISDISABLED),"Internal error: Recursiv IRQ protection with irq's enabled",0); \
- } else { \
- leonbare_enable_traps(LEONBARE_KR_CURRENT->th_prot.krp_flags); \
- }
-
-#define _LEONBARE_PROTECT_MUTEXSTRUCT_START(m) \
- if (LEONBARE_KR_CURRENT->th_prot.krp_m_depth++) { \
- LBPASSERT((LEONBARE_KR_CURRENT->th_prot.krp_m == m),"Mutex protection only allowed for one mutex at a time",0); \
- } else { \
- LEONBARE_SMP_SPINLOCK_AQUIRE(m->smp_lock); \
- LEONBARE_KR_CURRENT->th_prot.krp_m = m; \
- }
-
-#define _LEONBARE_PROTECT_MUTEXSTRUCT_END(m) \
- LBPASSERT((LEONBARE_KR_CURRENT->th_prot.krp_m == m),"Mutex protection only allowed for one mutex at a time",0); \
- if ((--LEONBARE_KR_CURRENT->th_prot.krp_m_depth) == 0) { \
- LEONBARE_SMP_SPINLOCK_RELEASE(m->smp_lock); \
- }
-
-#define _LEONBARE_PROTECT_KERNEL_START \
- if (LEONBARE_KR_CURRENT->th_prot.krp_k_depth++ == 0) { \
- LEONBARE_SMP_SPINLOCK_AQUIRE(LEONBARE_KR_LOCK); \
- }
-
-#define _LEONBARE_PROTECT_KERNEL_END \
- if ((--LEONBARE_KR_CURRENT->th_prot.krp_k_depth) == 0) { \
- LEONBARE_SMP_SPINLOCK_RELEASE(LEONBARE_KR_LOCK); \
- }
-
-
-#define LEONBARE_PROTECT_MUTEXSTRUCT_START(m) \
- _LEONBARE_PROTECT_IRQ_START; \
- _LEONBARE_PROTECT_MUTEXSTRUCT_START(m)
-
-#define LEONBARE_PROTECT_MUTEXSTRUCT_END(m) \
- _LEONBARE_PROTECT_MUTEXSTRUCT_END(m) \
- _LEONBARE_PROTECT_IRQ_END;
-
-
-#define LEONBARE_PROTECT_KERNEL_START() \
- _LEONBARE_PROTECT_IRQ_START; \
- _LEONBARE_PROTECT_KERNEL_START;
-
-#define LEONBARE_PROTECT_KERNEL_END() \
- _LEONBARE_PROTECT_KERNEL_END; \
- _LEONBARE_PROTECT_IRQ_END;
-
- typedef struct leonbare_thread
- {
- struct leonbare_thread_ctx th_ctx;
- unsigned int th_flags;
-
- int th_account; /* how many ticks the thread stays in the readyqueue for one round */
- int th_caccount; /* current value of th_account, updated on reinsertion */
- unsigned int th_pri_idx; /* ready queue index */
- unsigned int th_runq_idx; /* ready queue index index */
- unsigned int th_runq_which; /* 0: ready queue, 1: ready prepare queue */
-
- char *th_name;
- int th_result;
- int (*th_func) (void *);
- void *th_arg;
- char *th_stack_base;
- unsigned int th_stack_size;
- struct _reent th_reent; /* reentrant structure for newlib */
- struct _reent *th_reentp; /* pointer to eather pt_reent or global reent */
-
- struct leonbare_thread_protect th_prot;
-
- LBTAILQ_ENTRY (leonbare_thread) th_runq;
- LBTAILQ_ENTRY (leonbare_thread) th_allq;
- LBTAILQ_ENTRY (leonbare_thread) th_mutex;
- struct leonbare_mutex_queue th_mutex_locked;
-
- } *leonbare_thread_t __attribute__ ((aligned (8)));
-
-#define LEONBARE_TH_FLAGS_get(c) LEONBARE_KERNEL_GETU32((c)->th_flags)
-#define LEONBARE_TH_ACCOUNT_get(c) LEONBARE_KERNEL_GETI32((c)->th_account)
-#define LEONBARE_TH_CACCOUNT_get(c) LEONBARE_KERNEL_GETI32((c)->th_caccount)
-
-#define LEONBARE_TH_PRI_IDX_get(c) LEONBARE_KERNEL_GETU32((c)->th_pri_idx)
-#define LEONBARE_TH_RUNQ_IDX_get(c) LEONBARE_KERNEL_GETU32((c)->th_runq_idx)
-#define LEONBARE_TH_RUNQ_WHICH_get(c) LEONBARE_KERNEL_GETU32((c)->th_runq_which)
-
-#define LEONBARE_TH_NAME_get(c) LEONBARE_KERNEL_GETU32P((c)->th_name)
-#define LEONBARE_TH_RESULT_get(c) LEONBARE_KERNEL_GETI32((c)->th_result)
-#define LEONBARE_TH_FUNC_get(c) LEONBARE_KERNEL_GETU32((c)->th_func)
-#define LEONBARE_TH_ARG_get(c) LEONBARE_KERNEL_GETU32((c)->th_arg)
-#define LEONBARE_TH_STACK_BASE_get(c) LEONBARE_KERNEL_GETU32P((c)->th_stack_base)
-#define LEONBARE_TH_STACK_SIZE_get(c) LEONBARE_KERNEL_GETU32((c)->th_stack_size)
-#define LEONBARE_TH_REENTP_get(c) LEONBARE_KERNEL_GETU32P((c)->th_reentp)
-
-
-
-
-#define LEONBARE_TH_NAME(c) (c->th_name)
-#define LEONBARE_TH_NAME_DBG(c) (LEONBARE_TH_NAME(c) ? LEONBARE_TH_NAME(c) : "<unknown>")
-
-#define LEONBARE_REENT_SET(p) ((_impure_ptr=(p)->th_reentp)==_impure_ptr)
-
-#define LEONBARE_TH_READY (1<<0)
-#define LEONBARE_TH_SUSPENDED (1<<1)
-#define LEONBARE_TH_TERMINATED (1<<2)
-#define LEONBARE_TH_FINISHED (1<<3)
-
-#define LEONBARE_TH_SATEMASK (LEONBARE_TH_READY | \
- LEONBARE_TH_SUSPENDED | \
- LEONBARE_TH_TERMINATED | \
- LEONBARE_TH_FINISHED)
-
-#define LEONBARE_TH_SETSTATE(c,f) c->th_flags = ((c->th_flags & ~LEONBARE_TH_SATEMASK) | (f & LEONBARE_TH_SATEMASK))
-#define LEONBARE_TH_ORSTATE(c,f) c->th_flags |= (f & LEONBARE_TH_SATEMASK)
-
- typedef LBTAILQ_HEAD (leonbare_thread_queue,
- leonbare_thread) * leonbare_thread_queue_t;
-
- extern struct leonbare_kernel leonbare_kernel;
-#define KERNEL_GLOBAL leonbare_kernel
- typedef struct leonbare_kernel
- {
- leonbare_thread_t kr_cur, kr_next;
- struct leonbare_thread_queue kr_runq[LEONBARE_RUNQ_NR];
- struct leonbare_thread_queue kr_allq;
- struct leonbare_mutex_queue kr_allm;
- int kr_is_inkernel, kr_need_schedule, kr_is_preemption, kr_runq_which;
- int kr_protect_flags;
- } leonbare_kernel_t __attribute__ ((aligned (8)));
-#define LEONBARE_KR_CURRENT (KERNEL_GLOBAL.kr_cur)
-#define LEONBARE_KR_NEXT (KERNEL_GLOBAL.kr_next)
-#define LEONBARE_KR_RUNQ(i) (&(KERNEL_GLOBAL.kr_runq[i]))
-#define LEONBARE_KR_RUNQ_WHICH (KERNEL_GLOBAL.kr_runq_which)
-#define LEONBARE_KR_ALLQ (&(KERNEL_GLOBAL.kr_allq))
-#define LEONBARE_KR_ALLM (&(KERNEL_GLOBAL.kr_allm))
-#define LEONBARE_KR_IS_IN_KERNEL (KERNEL_GLOBAL.kr_is_inkernel)
-#define LEONBARE_KR_IS_PREEMPTION (KERNEL_GLOBAL.kr_is_preemption)
-
-#define LEONBARE_KR_NEED_SCHEDULE (LEONBARE_KR_CURRENT != LEONBARE_KR_NEXT)
-
-#define LEONBARE_STACKALIGN(sp) ((((unsigned int)sp) + 7) & ~7)
-
-/* context switching macros, implemented via setjmp/longjmp plus saving errno */
-#define SAVE_CONTEXT(t) ( _leonbare_kernel_savecontext((t), 0) )
-#define RESTORE_CONTEXT(t) _leonbare_kernel_switchto((t), 1)
-
-#define KERNEL_SCHEDULE(f,retval) \
- MACRO_BEGIN \
- LEONBARE_KR_IS_IN_KERNEL--; \
- if (LEONBARE_KR_IS_IN_KERNEL == 0 && LEONBARE_KR_NEED_SCHEDULE) { \
- LEONBARE_KR_IS_IN_KERNEL++; \
- if ((f) && (SAVE_CONTEXT(LEONBARE_KR_CURRENT) == 0)) { \
- leonbare_sched(); \
- } \
- optbarrier(); \
- LEONBARE_KR_IS_IN_KERNEL--; \
- } \
- MACRO_END
-
-#define KERNEL_ENTER LEONBARE_KR_IS_IN_KERNEL++;
-#define KERNEL_EXIT(f,ret) KERNEL_SCHEDULE(f,ret)
-
- int leonbare_thread_init ();
- int leonbare_thread_create (struct leonbare_thread *thread, char *stack,
- int stacksize);
- int leonbare_sched_update ();
- leonbare_thread_t leonbare_sched_paytime ();
- void leonbare_sched_insert (struct leonbare_thread *thread, int head,
- int prepare);
- unsigned int leonbare_sched ();
- unsigned int reschedule ();
- unsigned int _leonbare_kernel_switchto (struct leonbare_thread *old,
- struct leonbare_thread *new);
-
-#define LEONBARE_STACK_DEFINE(n,size) unsigned char n[size] __attribute__((aligned(8)));
-#define LEONBARE_STACK_SIZE_DEFAULT 1024*20
-
- typedef struct leonbare_mutex
- {
- unsigned int mx_owner_cnt;
- leonbare_thread_t mx_owner;
- struct leonbare_thread_queue mx_threads;
- LBTAILQ_ENTRY (leonbare_mutex) mx_allm;
- LBTAILQ_ENTRY (leonbare_mutex) mx_locked;
-
- } *leonbare_mutex_t;
-
-#define LEONBARE_MUTEX_OWNER_GET(m) LEONBARE_KERNEL_GETU32(m->mx_owner)
-#define LEONBARE_MUTEX_OWNER_SET(m,o) LEONBARE_KERNEL_SETU32(m->mx_owner,o)
-#define LEONBARE_MUTEX_OWNER_CNT_GET(m) LEONBARE_KERNEL_GETU32(m->mx_owner_cnt)
-#define LEONBARE_MUTEX_OWNER_CNT_SET(m,o) LEONBARE_KERNEL_SETU32(m->mx_owner_cnt,o)
-
-#define LEONBARE_MUTEX_LOCK_TIMEOUT -1
-#define LEONBARE_MUTEX_LOCK_OK 0
-#define LEONBARE_MUTEX_LOCK_ERROR 1
-
-#define LEONBARE_MUTEX_UNLOCK_OK 0
-#define LEONBARE_MUTEX_UNLOCK_ERROR 1
-
-
-#define LEONBARE_PROTECT_DECL(flags) unsigned long flags;
-#define LEONBARE_PROTECT_KERNEL(flags) flags = leonbare_disable_traps();
-#define LEONBARE_UNPROTECT_KERNEL(flags) leonbare_enable_traps(flags);
-
-#define LEONBARE_PROTECT_MUTEX(flags,m) flags = leonbare_disable_traps();
-#define LEONBARE_UNPROTECT_MUTEX(flags,m) leonbare_enable_traps(flags);
-
-#else
-
-#define LEONBARE_THREAD_CTX_STORE_LOCALS(base_reg) \
- std %l0, [%base_reg + LEONBARE_THREAD_CTX_STACK_L0]; \
- std %l2, [%base_reg + LEONBARE_THREAD_CTX_STACK_L2]; \
- std %l4, [%base_reg + LEONBARE_THREAD_CTX_STACK_L4]; \
- std %l6, [%base_reg + LEONBARE_THREAD_CTX_STACK_L6];
-
-#define LEONBARE_THREAD_CTX_STORE_INS(base_reg) \
- std %i0, [%base_reg + LEONBARE_THREAD_CTX_STACK_I0]; \
- std %i2, [%base_reg + LEONBARE_THREAD_CTX_STACK_I2]; \
- std %i4, [%base_reg + LEONBARE_THREAD_CTX_STACK_I4]; \
- std %i6, [%base_reg + LEONBARE_THREAD_CTX_STACK_I6];
-
-#define LEONBARE_THREAD_CTX_STORE_OUTS(base_reg) \
- std %o0, [%base_reg + LEONBARE_THREAD_CTX_STACK_O0]; \
- std %o2, [%base_reg + LEONBARE_THREAD_CTX_STACK_O2]; \
- std %o4, [%base_reg + LEONBARE_THREAD_CTX_STACK_O4]; \
- std %o6, [%base_reg + LEONBARE_THREAD_CTX_STACK_O6];
-
-#define LEONBARE_THREAD_CTX_STORE_GLOBALS(base_reg) \
- st %g1, [%base_reg + LEONBARE_THREAD_CTX_STACK_G1]; \
- std %g2, [%base_reg + LEONBARE_THREAD_CTX_STACK_G2]; \
- std %g4, [%base_reg + LEONBARE_THREAD_CTX_STACK_G4]; \
- std %g6, [%base_reg + LEONBARE_THREAD_CTX_STACK_G6];
-
-
-#define LEONBARE_THREAD_CTX_LOAD_LOCALS(base_reg) \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_L0], %l0; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_L2], %l2; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_L4], %l4; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_L6], %l6;
-
-#define LEONBARE_THREAD_CTX_LOAD_INS(base_reg) \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_I0], %i0; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_I2], %i2; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_I4], %i4; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_I6], %i6;
-
-#define LEONBARE_THREAD_CTX_LOAD_OUTS(base_reg) \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_O0], %o0; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_O2], %o2; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_O4], %o4; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_O6], %o6;
-
-#define LEONBARE_THREAD_CTX_LOAD_GLOBALS(base_reg) \
- ld [%base_reg + LEONBARE_THREAD_CTX_STACK_G1], %g1; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_G2], %g2; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_G4], %g4; \
- ldd [%base_reg + LEONBARE_THREAD_CTX_STACK_G6], %g6;
-
-
-#define LEONBARE_THREAD_CTX_STACK_L0 (0*8*4)
-#define LEONBARE_THREAD_CTX_STACK_L2 (LEONBARE_THREAD_CTX_STACK_L0+(2*4))
-#define LEONBARE_THREAD_CTX_STACK_L4 (LEONBARE_THREAD_CTX_STACK_L0+(4*4))
-#define LEONBARE_THREAD_CTX_STACK_L6 (LEONBARE_THREAD_CTX_STACK_L0+(6*4))
-
-#define LEONBARE_THREAD_CTX_STACK_I0 (1*8*4)
-#define LEONBARE_THREAD_CTX_STACK_I2 (LEONBARE_THREAD_CTX_STACK_I0+(2*4))
-#define LEONBARE_THREAD_CTX_STACK_I4 (LEONBARE_THREAD_CTX_STACK_I0+(4*4))
-#define LEONBARE_THREAD_CTX_STACK_I6 (LEONBARE_THREAD_CTX_STACK_I0+(6*4))
-
-#define LEONBARE_THREAD_CTX_STACK_O0 (2*8*4)
-#define LEONBARE_THREAD_CTX_STACK_O2 (LEONBARE_THREAD_CTX_STACK_O0+(2*4))
-#define LEONBARE_THREAD_CTX_STACK_O4 (LEONBARE_THREAD_CTX_STACK_O0+(4*4))
-#define LEONBARE_THREAD_CTX_STACK_O6 (LEONBARE_THREAD_CTX_STACK_O0+(6*4))
-
-#define LEONBARE_THREAD_CTX_STACK_G0 (3*8*4)
-#define LEONBARE_THREAD_CTX_STACK_G1 (LEONBARE_THREAD_CTX_STACK_G0+(1*4))
-#define LEONBARE_THREAD_CTX_STACK_G2 (LEONBARE_THREAD_CTX_STACK_G0+(2*4))
-#define LEONBARE_THREAD_CTX_STACK_G4 (LEONBARE_THREAD_CTX_STACK_G0+(4*4))
-#define LEONBARE_THREAD_CTX_STACK_G6 (LEONBARE_THREAD_CTX_STACK_G0+(6*4))
-
-#define LEONBARE_THREAD_CTX_STACK_PSR (4*8*4)
-#define LEONBARE_THREAD_CTX_STACK_WIM (LEONBARE_THREAD_CTX_STACK_PSR+4)
-#define LEONBARE_THREAD_CTX_STACK_MAGIC (LEONBARE_THREAD_CTX_STACK_PSR+8)
-#define LEONBARE_THREAD_CTX_STACK_FPU (LEONBARE_THREAD_CTX_STACK_PSR+12)
-
-#define LEONBARE_THREAD_CTX_SZ (LEONBARE_THREAD_CTX_STACK_PSR+16)
-
-#endif /* __ASSEMBLER__ */
-
-# define LEONBARE_STOPALL \
- LBDEBUG_HEADER_PRINTF(LBDEBUG_ALWAYS_NR,"Stopped at %s(%d), possibly not implemented yet\n",__FUNCTION__,__LINE__); \
- _leonbare_Stop();
-
-#define LEONBARE_THREAD_CTX_MAGIC 0x1234
-
-#ifdef LBDEBUG_DO_ASSERT
-#define LEONBARE_VERIFYIRQDISABLED() LBPASSERT(((leon23_getpsr() & SPARC_PSR_PIL_MASK) == SPARC_PSR_PIL_MASK),"Irq must be disabled (pil==0xf)\n",0)
-#define LEONBARE_VERIFYSCHED() leonbare_sched_verify()
-#else
-#define LEONBARE_VERIFYIRQDISABLED()
-#define LEONBARE_VERIFYSCHED()
-#endif
-#define LEONBARE_PRINTQUEUES() if (PDEBUG_FLAGS_CHECK(LBDEBUG_QUEUE_NR)) { leonbare_sched_printqueue(); }
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/leonbare_kernel_queue.h b/libgloss/sparc_leon/asm-leon/leonbare_kernel_queue.h
deleted file mode 100644
index a51df105b..000000000
--- a/libgloss/sparc_leon/asm-leon/leonbare_kernel_queue.h
+++ /dev/null
@@ -1,148 +0,0 @@
-//####BSDCOPYRIGHTBEGIN####
-//
-// -------------------------------------------
-//
-// Portions of this software may have been derived from OpenBSD,
-// FreeBSD or other sources, and are covered by the appropriate
-// copyright disclaimers included herein.
-//
-// Portions created by Red Hat are
-// Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
-//
-// -------------------------------------------
-//
-//####BSDCOPYRIGHTEND####
-//==========================================================================
-
-/*
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)queue.h 8.5 (Berkeley) 8/20/94
- * $FreeBSD: src/sys/sys/queue.h,v 1.32.2.4 2001/03/31 03:33:39 hsu Exp $
- */
-
-#ifndef _SYS_LEONBARE_QUEUE_H_
-#define _SYS_LEONBARE_QUEUE_H_
-
-
-/*
- * Tail queue definitions.
- */
-#define LBTAILQ_HEAD(name, type) \
-struct name { \
- struct type *tqh_first; /* first element */ \
- struct type **tqh_last; /* addr of last next element */ \
- char *tqh_name; \
-}
-
-#define LBTAILQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).tqh_first, 0 }
-
-#define LBTAILQ_ENTRY(type) \
-struct { \
- struct type *tqe_next; /* next element */ \
- struct type **tqe_prev; /* address of previous next element */ \
-}
-
-/*
- * Tail queue functions.
- */
-#define LBTAILQ_EMPTY(head) (LEONBARE_KERNEL_GETU32P((head)->tqh_first) == NULL)
-
-#define LBTAILQ_HASTWO(head, field) ((!LBTAILQ_EMPTY(head)) && LBTAILQ_NEXT(LBTAILQ_FIRST(head),field))
-
-#define LBTAILQ_FOREACH(var, head, field) \
- for (var = LBTAILQ_FIRST(head); var; var = LBTAILQ_NEXT(var, field))
-
-#define LBTAILQ_FIRST(head) LEONBARE_KERNEL_GETU32P_CAST((head)->tqh_first,__typeof((head)->tqh_first))
-
-#define LBTAILQ_LAST(head, headname) \
- LEONBARE_KERNEL_GETU32P_BARE(LEONBARE_KERNEL_GETU32P(((struct headname *)(LEONBARE_KERNEL_GETU32P((head)->tqh_last)))->tqh_last))
-
-#define LBTAILQ_NEXT(elm, field) LEONBARE_KERNEL_GETU32P_CAST((elm)->field.tqe_next,__typeof((elm)->field.tqe_next))
-
-#define LBTAILQ_PREV(elm, headname, field) \
- LEONBARE_KERNEL_GETU32P_BARE(LEONBARE_KERNEL_GETU32P(((struct headname *)(LEONBARE_KERNEL_GETU32P((elm)->field.tqe_prev)))->tqh_last))
-
-/* #define LBTAILQ_INIT(head) do { \ */
-/* (head)->tqh_first = NULL; \ */
-/* (head)->tqh_last = &(head)->tqh_first; \ */
-/* (head)->tqh_name = 0; \ */
-/* } while (0) */
-
-#define LBTAILQ_INIT(head) do { \
- LEONBARE_KERNEL_SETU32P((head)->tqh_first,NULL); \
- LEONBARE_KERNEL_SETU32P((head)->tqh_last,&(head)->tqh_first); \
- LEONBARE_KERNEL_SETU32P((head)->tqh_name,0); \
-} while (0)
-
-/* #define LBTAILQ_INSERT_HEAD(head, elm, field) do { \ */
-/* if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ */
-/* (head)->tqh_first->field.tqe_prev = \ */
-/* &(elm)->field.tqe_next; \ */
-/* else \ */
-/* (head)->tqh_last = &(elm)->field.tqe_next; \ */
-/* (head)->tqh_first = (elm); \ */
-/* (elm)->field.tqe_prev = &(head)->tqh_first; \ */
-/* } while (0) */
-
-#define LBTAILQ_INSERT_HEAD(head, elm, field) do { \
- if ((LEONBARE_KERNEL_SETU32P((elm)->field.tqe_next,LEONBARE_KERNEL_GETU32P((head)->tqh_first))) != NULL) \
- LEONBARE_KERNEL_SETU32P(LEONBARE_KERNEL_GETU32P_CAST((head)->tqh_first,__typeof ((head)->tqh_first))->field.tqe_prev,&(elm)->field.tqe_next); \
- else \
- LEONBARE_KERNEL_SETU32P((head)->tqh_last,&(elm)->field.tqe_next); \
- LEONBARE_KERNEL_SETU32P((head)->tqh_first,(elm)); \
- LEONBARE_KERNEL_SETU32P((elm)->field.tqe_prev,&(head)->tqh_first); \
-} while (0)
-
-#define LBTAILQ_INSERT_TAIL(head, elm, field) do { \
- LEONBARE_KERNEL_SETU32P((elm)->field.tqe_next,NULL); \
- LEONBARE_KERNEL_SETU32P((elm)->field.tqe_prev,LEONBARE_KERNEL_GETU32P((head)->tqh_last)); \
- LEONBARE_KERNEL_SETU32P_BARE(LEONBARE_KERNEL_GETU32P((head)->tqh_last),(elm)); \
- LEONBARE_KERNEL_SETU32P((head)->tqh_last,&(elm)->field.tqe_next); \
-} while (0)
-
-#define LBTAILQ_REMOVE(head, elm, field) do { \
- if (LEONBARE_KERNEL_GETU32P((elm)->field.tqe_next) != NULL) \
- LEONBARE_KERNEL_SETU32P(LEONBARE_KERNEL_GETU32P_CAST((elm)->field.tqe_next, __typeof((elm)->field.tqe_next))->field.tqe_prev, LEONBARE_KERNEL_GETU32P((elm)->field.tqe_prev)); \
- else \
- LEONBARE_KERNEL_SETU32P((head)->tqh_last, LEONBARE_KERNEL_GETU32P((elm)->field.tqe_prev)); \
- LEONBARE_KERNEL_SETU32P_BARE(LEONBARE_KERNEL_GETU32P((elm)->field.tqe_prev),LEONBARE_KERNEL_GETU32P((elm)->field.tqe_next)); \
- LEONBARE_KERNEL_SETU32P((elm)->field.tqe_next, 0); \
- LEONBARE_KERNEL_SETU32P((elm)->field.tqe_prev, 0); /* mark removed */ \
-} while (0)
-
-#define LBTAILQ_REMOVED(elm, field) (LEONBARE_KERNEL_GETU32P((elm)->field.tqe_next) == NULL && LEONBARE_KERNEL_GETU32P((elm)->field.tqe_prev) == NULL)
-
-
-
-#endif /* !_SYS_QUEUE_H_ */
diff --git a/libgloss/sparc_leon/asm-leon/leoncompat.h b/libgloss/sparc_leon/asm-leon/leoncompat.h
deleted file mode 100644
index 715829609..000000000
--- a/libgloss/sparc_leon/asm-leon/leoncompat.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _INCLUDE_LEONCOMPAT_h
-#define _INCLUDE_LEONCOMPAT_h
-
-#include <asm-leon/leon.h>
-
-#ifndef __ASSEMBLER__
-
-#define LEONCOMPAT_VERSION _leon_version
-#define LEONCOMPAT_VERSION_ISLEON3 (LEONCOMPAT_VERSION == 3)
-extern int _leon_version;
-
-#endif /* __ASSEMBLER__ */
-
-#endif /* !_INCLUDE_LEONCOMPAT_h */
diff --git a/libgloss/sparc_leon/asm-leon/leondbg.h b/libgloss/sparc_leon/asm-leon/leondbg.h
deleted file mode 100644
index 7b5b1cd9d..000000000
--- a/libgloss/sparc_leon/asm-leon/leondbg.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _ASMSPARC_LEONDBG_H
-#define _ASMSPARC_LEONDBG_H
-
-#ifndef __ASSEMBLER__
-extern int dbgleon_printf (const char *fmt, ...);
-#endif
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/leonstack.h b/libgloss/sparc_leon/asm-leon/leonstack.h
deleted file mode 100644
index 94cb6eade..000000000
--- a/libgloss/sparc_leon/asm-leon/leonstack.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _INCLUDE_LEON_STACK_h
-#define _INCLUDE_LEON_STACK_h
-
-#ifndef __ASSEMBLER__
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* process trap regs */
- struct leonbare_pt_regs
- {
- unsigned long psr;
- unsigned long pc;
- unsigned long npc;
- unsigned long y;
- unsigned long u_regs[16]; /* globals and ins */
- };
-#define PT_REGS_SZ sizeof(struct leonbare_pt_regs)
-
-/* A Sparc stack frame */
- struct sparc_stackframe_regs
- {
- unsigned long sf_locals[8];
- unsigned long sf_ins[6];
- struct sparc_stackframe_regs *sf_fp;
- unsigned long sf_callers_pc;
- char *sf_structptr;
- unsigned long sf_xargs[6];
- unsigned long sf_xxargs[1];
- };
-#define SF_REGS_SZ sizeof(struct sparc_stackframe_regs)
-
-/* A register window */
- struct sparc_regwindow_regs
- {
- unsigned long locals[8];
- unsigned long ins[8];
- };
-#define RW_REGS_SZ sizeof(struct sparc_regwindow_regs)
-
-/* A fpu window */
- struct sparc_fpuwindow_regs
- {
- unsigned long locals[32];
- unsigned long fsr;
- unsigned long dummy;
- unsigned long irqpsr;
- unsigned long lastctx;
- };
-#define FW_REGS_SZ sizeof(struct sparc_fpuwindow_regs)
-
-#ifdef __cplusplus
-}
-#endif
-
-#else
-#define PT_REGS_SZ 0x50 /* 20*4 */
-#define SF_REGS_SZ 0x60 /* 24*4 */
-#define RW_REGS_SZ 0x20 /* 16*4 */
-#define FW_REGS_SZ 0x90 /* 36*4 */
-#endif /* !ASM */
-
-/* These are for pt_regs. */
-#define PT_PSR 0x0
-#define PT_PC 0x4
-#define PT_NPC 0x8
-#define PT_Y 0xc
-#define PT_G0 0x10
-#define PT_WIM PT_G0
-#define PT_G1 0x14
-#define PT_G2 0x18
-#define PT_G3 0x1c
-#define PT_G4 0x20
-#define PT_G5 0x24
-#define PT_G6 0x28
-#define PT_G7 0x2c
-#define PT_I0 0x30
-#define PT_I1 0x34
-#define PT_I2 0x38
-#define PT_I3 0x3c
-#define PT_I4 0x40
-#define PT_I5 0x44
-#define PT_I6 0x48
-#define PT_FP PT_I6
-#define PT_I7 0x4c
-
-/* Stack_frame offsets */
-#define SF_L0 0x00
-#define SF_L1 0x04
-#define SF_L2 0x08
-#define SF_L3 0x0c
-#define SF_L4 0x10
-#define SF_L5 0x14
-#define SF_L6 0x18
-#define SF_L7 0x1c
-#define SF_I0 0x20
-#define SF_I1 0x24
-#define SF_I2 0x28
-#define SF_I3 0x2c
-#define SF_I4 0x30
-#define SF_I5 0x34
-#define SF_FP 0x38
-#define SF_PC 0x3c
-#define SF_RETP 0x40
-#define SF_XARG0 0x44
-#define SF_XARG1 0x48
-#define SF_XARG2 0x4c
-#define SF_XARG3 0x50
-#define SF_XARG4 0x54
-#define SF_XARG5 0x58
-#define SF_XXARG 0x5c
-
-/* Reg_window offsets */
-#define RW_L0 0x00
-#define RW_L1 0x04
-#define RW_L2 0x08
-#define RW_L3 0x0c
-#define RW_L4 0x10
-#define RW_L5 0x14
-#define RW_L6 0x18
-#define RW_L7 0x1c
-#define RW_I0 0x20
-#define RW_I1 0x24
-#define RW_I2 0x28
-#define RW_I3 0x2c
-#define RW_I4 0x30
-#define RW_I5 0x34
-#define RW_I6 0x38
-#define RW_I7 0x3c
-
-/* Fpu_window offsets */
-#define FW_F0 0x00
-#define FW_F2 0x08
-#define FW_F4 0x10
-#define FW_F6 0x18
-#define FW_F8 0x20
-#define FW_F10 0x28
-#define FW_F12 0x30
-#define FW_F14 0x38
-#define FW_F16 0x40
-#define FW_F18 0x48
-#define FW_F20 0x50
-#define FW_F22 0x58
-#define FW_F24 0x60
-#define FW_F26 0x68
-#define FW_F28 0x70
-#define FW_F30 0x78
-#define FW_FSR 0x80
-
-#endif /* !_INCLUDE_LEON_STACK_h */
diff --git a/libgloss/sparc_leon/asm-leon/liblocks.h b/libgloss/sparc_leon/asm-leon/liblocks.h
deleted file mode 100644
index 66f605f59..000000000
--- a/libgloss/sparc_leon/asm-leon/liblocks.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef __LEONBARE_LIBLOCKS_H
-#define __LEONBARE_LIBLOCKS_H
-
-extern int (*__lbst_pthread_mutex_init) (pthread_mutex_t * __mutex,
- pthread_mutexattr_t * __mutex_attr);
-extern int (*__lbst_pthread_mutex_destroy) (pthread_mutex_t * __mutex);
-extern int (*__lbst_pthread_mutex_trylock) (pthread_mutex_t * __mutex);
-extern int (*__lbst_pthread_mutex_lock) (pthread_mutex_t * __mutex);
-extern int (*__lbst_pthread_mutex_unlock) (pthread_mutex_t * __mutex);
-extern int (*__lbst_pthread_mutexattr_init) (pthread_mutexattr_t * __attr);
-extern int (*__lbst_pthread_mutexattr_destroy) (pthread_mutexattr_t * __attr);
-extern int (*__lbst_pthread_mutexattr_settype) (pthread_mutexattr_t * __attr,
- int __kind);
-
-#endif /* __LEONBARE_LIBLOCKS_H */
diff --git a/libgloss/sparc_leon/asm-leon/linkage.h b/libgloss/sparc_leon/asm-leon/linkage.h
deleted file mode 100644
index d82eb90b1..000000000
--- a/libgloss/sparc_leon/asm-leon/linkage.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef H_LEONBARE_LINKAGE_H
-#define H_LEONBARE_LINKAGE_H
-
-#ifndef _ASM
-# define __inline__ __inline__ __attribute__((always_inline))
-
-#define likely(x) __builtin_expect(!!(x), 1)
-#define unlikely(x) __builtin_expect(!!(x), 0)
-#define barrier() __memory_barrier()
-
-#define gccalign8 __attribute__((aligned(8)))
-
-#else /* !_ASM */
-
-#define MCOUNT_SIZE 0 /* no instructions inserted */
-#define MCOUNT(x)
-
-/*
- * ENTRY provides the standard procedure entry code and an easy way to
- * insert the calls to mcount for profiling. ENTRY_NP is identical, but
- * never calls mcount.
- */
-#define ENTRY(x) \
- .section ".text"; \
- .align 4; \
- .global x; \
- .type x, #function; \
-x: MCOUNT(x)
-
-#define ENTRY_SIZE MCOUNT_SIZE
-
-#endif /* _ASM */
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/param.h b/libgloss/sparc_leon/asm-leon/param.h
deleted file mode 100644
index 4b24092c0..000000000
--- a/libgloss/sparc_leon/asm-leon/param.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _LEON_ASMSPARC_PARAM_H
-#define _LEON_ASMSPARC_PARAM_H
-
-/* note: this is also defined in machine/param.h */
-#define HZ 100UL /* Internal kernel timer frequency */
-#define CLOCK_TICK_RATE 1000000UL /* Underlying HZ */
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/queue.h b/libgloss/sparc_leon/asm-leon/queue.h
deleted file mode 100644
index 621bc3016..000000000
--- a/libgloss/sparc_leon/asm-leon/queue.h
+++ /dev/null
@@ -1,570 +0,0 @@
-//####BSDCOPYRIGHTBEGIN####
-//
-// -------------------------------------------
-//
-// Portions of this software may have been derived from OpenBSD,
-// FreeBSD or other sources, and are covered by the appropriate
-// copyright disclaimers included herein.
-//
-// Portions created by Red Hat are
-// Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
-//
-// -------------------------------------------
-//
-//####BSDCOPYRIGHTEND####
-//==========================================================================
-
-/*
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)queue.h 8.5 (Berkeley) 8/20/94
- * $FreeBSD: src/sys/sys/queue.h,v 1.32.2.4 2001/03/31 03:33:39 hsu Exp $
- */
-
-#ifndef _SYS_QUEUE_H_
-#define _SYS_QUEUE_H_
-
-#ifndef __ASSEMBLER__
-
-/*
- * This file defines five types of data structures: singly-linked lists,
- * singly-linked tail queues, lists, tail queues, and circular queues.
- *
- * A singly-linked list is headed by a single forward pointer. The elements
- * are singly linked for minimum space and pointer manipulation overhead at
- * the expense of O(n) removal for arbitrary elements. New elements can be
- * added to the list after an existing element or at the head of the list.
- * Elements being removed from the head of the list should use the explicit
- * macro for this purpose for optimum efficiency. A singly-linked list may
- * only be traversed in the forward direction. Singly-linked lists are ideal
- * for applications with large datasets and few or no removals or for
- * implementing a LIFO queue.
- *
- * A singly-linked tail queue is headed by a pair of pointers, one to the
- * head of the list and the other to the tail of the list. The elements are
- * singly linked for minimum space and pointer manipulation overhead at the
- * expense of O(n) removal for arbitrary elements. New elements can be added
- * to the list after an existing element, at the head of the list, or at the
- * end of the list. Elements being removed from the head of the tail queue
- * should use the explicit macro for this purpose for optimum efficiency.
- * A singly-linked tail queue may only be traversed in the forward direction.
- * Singly-linked tail queues are ideal for applications with large datasets
- * and few or no removals or for implementing a FIFO queue.
- *
- * A list is headed by a single forward pointer (or an array of forward
- * pointers for a hash table header). The elements are doubly linked
- * so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before
- * or after an existing element or at the head of the list. A list
- * may only be traversed in the forward direction.
- *
- * A tail queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or
- * after an existing element, at the head of the list, or at the end of
- * the list. A tail queue may be traversed in either direction.
- *
- * A circle queue is headed by a pair of pointers, one to the head of the
- * list and the other to the tail of the list. The elements are doubly
- * linked so that an arbitrary element can be removed without a need to
- * traverse the list. New elements can be added to the list before or after
- * an existing element, at the head of the list, or at the end of the list.
- * A circle queue may be traversed in either direction, but has a more
- * complex end of list detection.
- *
- * For details on the use of these macros, see the queue(3) manual page.
- *
- *
- * SLIST LIST STAILQ TAILQ CIRCLEQ
- * _HEAD + + + + +
- * _ENTRY + + + + +
- * _INIT + + + + +
- * _EMPTY + + + + +
- * _FIRST + + + + +
- * _NEXT + + + + +
- * _PREV - - - + +
- * _LAST - - + + +
- * _FOREACH + + + + +
- * _FOREACH_REVERSE - - - + +
- * _INSERT_HEAD + + + + +
- * _INSERT_BEFORE - + - + +
- * _INSERT_AFTER + + + + +
- * _INSERT_TAIL - - + + +
- * _REMOVE_HEAD + - + - -
- * _REMOVE + + + + +
- *
- */
-
-/*
- * Singly-linked List definitions.
- */
-#define SLIST_HEAD(name, type) \
-struct name { \
- struct type *slh_first; /* first element */ \
-}
-
-#define SLIST_HEAD_INITIALIZER(head) \
- { NULL }
-
-#define SLIST_ENTRY(type) \
-struct { \
- struct type *sle_next; /* next element */ \
-}
-
-/*
- * Singly-linked List functions.
- */
-#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
-
-#define SLIST_FIRST(head) ((head)->slh_first)
-
-#define SLIST_FOREACH(var, head, field) \
- for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
-
-#define SLIST_INIT(head) { \
- (head)->slh_first = NULL; \
-}
-
-#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
- (elm)->field.sle_next = (slistelm)->field.sle_next; \
- (slistelm)->field.sle_next = (elm); \
-} while (0)
-
-#define SLIST_INSERT_HEAD(head, elm, field) do { \
- (elm)->field.sle_next = (head)->slh_first; \
- (head)->slh_first = (elm); \
-} while (0)
-
-#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
-
-#define SLIST_REMOVE_HEAD(head, field) do { \
- (head)->slh_first = (head)->slh_first->field.sle_next; \
-} while (0)
-
-#define SLIST_REMOVE(head, elm, type, field) do { \
- if ((head)->slh_first == (elm)) { \
- SLIST_REMOVE_HEAD((head), field); \
- } \
- else { \
- struct type *curelm = (head)->slh_first; \
- while( curelm->field.sle_next != (elm) ) \
- curelm = curelm->field.sle_next; \
- curelm->field.sle_next = \
- curelm->field.sle_next->field.sle_next; \
- } \
-} while (0)
-
-/*
- * Singly-linked Tail queue definitions.
- */
-#define STAILQ_HEAD(name, type) \
-struct name { \
- struct type *stqh_first;/* first element */ \
- struct type **stqh_last;/* addr of last next element */ \
-}
-
-#define STAILQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).stqh_first }
-
-#define STAILQ_ENTRY(type) \
-struct { \
- struct type *stqe_next; /* next element */ \
-}
-
-/*
- * Singly-linked Tail queue functions.
- */
-#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
-
-#define STAILQ_INIT(head) do { \
- (head)->stqh_first = NULL; \
- (head)->stqh_last = &(head)->stqh_first; \
-} while (0)
-
-#define STAILQ_FIRST(head) ((head)->stqh_first)
-
-#define STAILQ_LAST(head, type, field) \
- (STAILQ_EMPTY(head) ? \
- NULL : \
- ((struct type *) \
- ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
-
-#define STAILQ_FOREACH(var, head, field) \
- for((var) = (head)->stqh_first; (var); (var) = (var)->field.stqe_next)
-
-#define STAILQ_INSERT_HEAD(head, elm, field) do { \
- if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \
- (head)->stqh_last = &(elm)->field.stqe_next; \
- (head)->stqh_first = (elm); \
-} while (0)
-
-#define STAILQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.stqe_next = NULL; \
- *(head)->stqh_last = (elm); \
- (head)->stqh_last = &(elm)->field.stqe_next; \
-} while (0)
-
-#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
- if (((elm)->field.stqe_next = (tqelm)->field.stqe_next) == NULL)\
- (head)->stqh_last = &(elm)->field.stqe_next; \
- (tqelm)->field.stqe_next = (elm); \
-} while (0)
-
-#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
-
-#define STAILQ_REMOVE_HEAD(head, field) do { \
- if (((head)->stqh_first = \
- (head)->stqh_first->field.stqe_next) == NULL) \
- (head)->stqh_last = &(head)->stqh_first; \
-} while (0)
-
-#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
- if (((head)->stqh_first = (elm)->field.stqe_next) == NULL) \
- (head)->stqh_last = &(head)->stqh_first; \
-} while (0)
-
-#define STAILQ_REMOVE(head, elm, type, field) do { \
- if ((head)->stqh_first == (elm)) { \
- STAILQ_REMOVE_HEAD(head, field); \
- } \
- else { \
- struct type *curelm = (head)->stqh_first; \
- while( curelm->field.stqe_next != (elm) ) \
- curelm = curelm->field.stqe_next; \
- if((curelm->field.stqe_next = \
- curelm->field.stqe_next->field.stqe_next) == NULL) \
- (head)->stqh_last = &(curelm)->field.stqe_next; \
- } \
-} while (0)
-
-/*
- * List definitions.
- */
-#define LIST_HEAD(name, type) \
-struct name { \
- struct type *lh_first; /* first element */ \
-}
-
-#define LIST_HEAD_INITIALIZER(head) \
- { NULL }
-
-#define LIST_ENTRY(type) \
-struct { \
- struct type *le_next; /* next element */ \
- struct type **le_prev; /* address of previous next element */ \
-}
-
-/*
- * List functions.
- */
-
-#define LIST_EMPTY(head) ((head)->lh_first == NULL)
-
-#define LIST_FIRST(head) ((head)->lh_first)
-
-#define LIST_FOREACH(var, head, field) \
- for((var) = (head)->lh_first; (var); (var) = (var)->field.le_next)
-
-#define LIST_INIT(head) do { \
- (head)->lh_first = NULL; \
-} while (0)
-
-#define LIST_INSERT_AFTER(listelm, elm, field) do { \
- if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \
- (listelm)->field.le_next->field.le_prev = \
- &(elm)->field.le_next; \
- (listelm)->field.le_next = (elm); \
- (elm)->field.le_prev = &(listelm)->field.le_next; \
-} while (0)
-
-#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.le_prev = (listelm)->field.le_prev; \
- (elm)->field.le_next = (listelm); \
- *(listelm)->field.le_prev = (elm); \
- (listelm)->field.le_prev = &(elm)->field.le_next; \
-} while (0)
-
-#define LIST_INSERT_HEAD(head, elm, field) do { \
- if (((elm)->field.le_next = (head)->lh_first) != NULL) \
- (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
- (head)->lh_first = (elm); \
- (elm)->field.le_prev = &(head)->lh_first; \
-} while (0)
-
-#define LIST_NEXT(elm, field) ((elm)->field.le_next)
-
-#define LIST_REMOVE(elm, field) do { \
- if ((elm)->field.le_next != NULL) \
- (elm)->field.le_next->field.le_prev = \
- (elm)->field.le_prev; \
- *(elm)->field.le_prev = (elm)->field.le_next; \
-} while (0)
-
-/*
- * Tail queue definitions.
- */
-#define TAILQ_HEAD(name, type) \
-struct name { \
- struct type *tqh_first; /* first element */ \
- struct type **tqh_last; /* addr of last next element */ \
- char *tqh_name; \
-}
-
-#define TAILQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).tqh_first, 0 }
-
-#define TAILQ_ENTRY(type) \
-struct { \
- struct type *tqe_next; /* next element */ \
- struct type **tqe_prev; /* address of previous next element */ \
-}
-
-/*
- * Tail queue functions.
- */
-#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
-
-#define TAILQ_HASTWO(head, field) ((!TAILQ_EMPTY(head)) && TAILQ_NEXT(TAILQ_FIRST(head),field))
-
-#define TAILQ_FOREACH(var, head, field) \
- for (var = TAILQ_FIRST(head); var; var = TAILQ_NEXT(var, field))
-
-#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
- for ((var) = TAILQ_LAST((head), headname); \
- (var); \
- (var) = TAILQ_PREV((var), headname, field))
-
-#define TAILQ_FIRST(head) ((head)->tqh_first)
-
-#define TAILQ_LAST(head, headname) \
- (*(((struct headname *)((head)->tqh_last))->tqh_last))
-
-#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-
-#define TAILQ_PREV(elm, headname, field) \
- (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-
-#define TAILQ_INIT(head) do { \
- (head)->tqh_first = NULL; \
- (head)->tqh_last = &(head)->tqh_first; \
- (head)->tqh_name = 0; \
-} while (0)
-
-#define TAILQ_INSERT_HEAD(head, elm, field) do { \
- if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
- (head)->tqh_first->field.tqe_prev = \
- &(elm)->field.tqe_next; \
- else \
- (head)->tqh_last = &(elm)->field.tqe_next; \
- (head)->tqh_first = (elm); \
- (elm)->field.tqe_prev = &(head)->tqh_first; \
-} while (0)
-
-#define TAILQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.tqe_next = NULL; \
- (elm)->field.tqe_prev = (head)->tqh_last; \
- *(head)->tqh_last = (elm); \
- (head)->tqh_last = &(elm)->field.tqe_next; \
-} while (0)
-
-#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
- if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
- (elm)->field.tqe_next->field.tqe_prev = \
- &(elm)->field.tqe_next; \
- else \
- (head)->tqh_last = &(elm)->field.tqe_next; \
- (listelm)->field.tqe_next = (elm); \
- (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
-} while (0)
-
-#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
- (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
- (elm)->field.tqe_next = (listelm); \
- *(listelm)->field.tqe_prev = (elm); \
- (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
-} while (0)
-
-#define TAILQ_REMOVE(head, elm, field) do { \
- if (((elm)->field.tqe_next) != NULL) \
- (elm)->field.tqe_next->field.tqe_prev = \
- (elm)->field.tqe_prev; \
- else \
- (head)->tqh_last = (elm)->field.tqe_prev; \
- *(elm)->field.tqe_prev = (elm)->field.tqe_next; \
- (elm)->field.tqe_next = 0; \
- (elm)->field.tqe_prev = 0; /* mark removed */ \
-} while (0)
-
-#define TAILQ_REMOVED(elm, field) ((elm)->field.tqe_next == NULL && (elm)->field.tqe_prev == NULL)
-
-/*
- * Circular queue definitions.
- */
-#define CIRCLEQ_HEAD(name, type) \
-struct name { \
- struct type *cqh_first; /* first element */ \
- struct type *cqh_last; /* last element */ \
-}
-
-#define CIRCLEQ_ENTRY(type) \
-struct { \
- struct type *cqe_next; /* next element */ \
- struct type *cqe_prev; /* previous element */ \
-}
-
-/*
- * Circular queue functions.
- */
-#define CIRCLEQ_EMPTY(head) ((head)->cqh_first == (void *)(head))
-
-#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
-
-#define CIRCLEQ_FOREACH(var, head, field) \
- for((var) = (head)->cqh_first; \
- (var) != (void *)(head); \
- (var) = (var)->field.cqe_next)
-
-#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
- for((var) = (head)->cqh_last; \
- (var) != (void *)(head); \
- (var) = (var)->field.cqe_prev)
-
-#define CIRCLEQ_INIT(head) do { \
- (head)->cqh_first = (void *)(head); \
- (head)->cqh_last = (void *)(head); \
-} while (0)
-
-#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
- (elm)->field.cqe_next = (listelm)->field.cqe_next; \
- (elm)->field.cqe_prev = (listelm); \
- if ((listelm)->field.cqe_next == (void *)(head)) \
- (head)->cqh_last = (elm); \
- else \
- (listelm)->field.cqe_next->field.cqe_prev = (elm); \
- (listelm)->field.cqe_next = (elm); \
-} while (0)
-
-#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
- (elm)->field.cqe_next = (listelm); \
- (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
- if ((listelm)->field.cqe_prev == (void *)(head)) \
- (head)->cqh_first = (elm); \
- else \
- (listelm)->field.cqe_prev->field.cqe_next = (elm); \
- (listelm)->field.cqe_prev = (elm); \
-} while (0)
-
-#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
- (elm)->field.cqe_next = (head)->cqh_first; \
- (elm)->field.cqe_prev = (void *)(head); \
- if ((head)->cqh_last == (void *)(head)) \
- (head)->cqh_last = (elm); \
- else \
- (head)->cqh_first->field.cqe_prev = (elm); \
- (head)->cqh_first = (elm); \
-} while (0)
-
-#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.cqe_next = (void *)(head); \
- (elm)->field.cqe_prev = (head)->cqh_last; \
- if ((head)->cqh_first == (void *)(head)) \
- (head)->cqh_first = (elm); \
- else \
- (head)->cqh_last->field.cqe_next = (elm); \
- (head)->cqh_last = (elm); \
-} while (0)
-
-#define CIRCLEQ_LAST(head) ((head)->cqh_last)
-
-#define CIRCLEQ_NEXT(elm,field) ((elm)->field.cqe_next)
-
-#define CIRCLEQ_PREV(elm,field) ((elm)->field.cqe_prev)
-
-#define CIRCLEQ_REMOVE(head, elm, field) do { \
- if ((elm)->field.cqe_next == (void *)(head)) \
- (head)->cqh_last = (elm)->field.cqe_prev; \
- else \
- (elm)->field.cqe_next->field.cqe_prev = \
- (elm)->field.cqe_prev; \
- if ((elm)->field.cqe_prev == (void *)(head)) \
- (head)->cqh_first = (elm)->field.cqe_next; \
- else \
- (elm)->field.cqe_prev->field.cqe_next = \
- (elm)->field.cqe_next; \
-} while (0)
-
-/*
- * XXX insque() and remque() are an old way of handling certain queues.
- * They bogusly assumes that all queue heads look alike.
- */
-
-struct quehead
-{
- struct quehead *qh_link;
- struct quehead *qh_rlink;
-};
-
-#ifdef __GNUC__
-
-static __inline void
-insque (void *a, void *b)
-{
- struct quehead *element = a, *head = b;
-
- element->qh_link = head->qh_link;
- element->qh_rlink = head;
- head->qh_link = element;
- element->qh_link->qh_rlink = element;
-}
-
-static __inline void
-remque (void *a)
-{
- struct quehead *element = a;
-
- element->qh_link->qh_rlink = element->qh_rlink;
- element->qh_rlink->qh_link = element->qh_link;
- element->qh_rlink = 0;
-}
-
-#else /* !__GNUC__ */
-
-void insque __P ((void *a, void *b));
-void remque __P ((void *a));
-
-#endif /* __GNUC__ */
-
-#endif /* __ASSEMBLER__ */
-
-
-#endif /* !_SYS_QUEUE_H_ */
diff --git a/libgloss/sparc_leon/asm-leon/spinlock.h b/libgloss/sparc_leon/asm-leon/spinlock.h
deleted file mode 100644
index c3c0a7c4e..000000000
--- a/libgloss/sparc_leon/asm-leon/spinlock.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _INCLUDE_LEONSPINLOCK_h
-#define _INCLUDE_LEONSPINLOCK_h
-
-typedef struct
-{
- unsigned char lock;
-} raw_spinlock_t;
-
-#define __RAW_SPIN_LOCK_UNLOCKED { 0 }
-
-typedef struct
-{
- volatile unsigned int lock;
-} raw_rwlock_t;
-
-#define __RAW_RW_LOCK_UNLOCKED { 0 }
-
-static inline void
-__raw_spin_lock (raw_spinlock_t * lock)
-{
- __asm__ __volatile__ ("\n1:\n\t" "ldstuba [%0]1, %%g2\n\t" /* ASI_LEON23_DCACHE_MISS */
- "orcc %%g2, 0x0, %%g0\n\t" "bne,a 2f\n\t" " ldub [%0], %%g2\n\t" ".subsection 2\n" "2:\n\t" "orcc %%g2, 0x0, %%g0\n\t" "bne,a 2b\n\t" " ldub [%0], %%g2\n\t" "b,a 1b\n\t" ".previous\n": /* no outputs */
- :"r" (lock):"g2", "memory", "cc");
-}
-
-static inline int
-__raw_spin_trylock (raw_spinlock_t * lock)
-{
- unsigned int result;
- __asm__ __volatile__ ("ldstuba [%1]1, %0" /* ASI_LEON23_DCACHE_MISS */
- :"=r" (result):"r" (lock):"memory");
- return (result == 0);
-}
-
-static inline void
-__raw_spin_unlock (raw_spinlock_t * lock)
-{
- __asm__ __volatile__ ("stb %%g0, [%0]"::"r" (lock):"memory");
-}
-
-
-
-#endif /* _INCLUDE_LEONSPINLOCK_h */
-/* end of include file */
diff --git a/libgloss/sparc_leon/asm-leon/stack.h b/libgloss/sparc_leon/asm-leon/stack.h
deleted file mode 100644
index 5ba773bc3..000000000
--- a/libgloss/sparc_leon/asm-leon/stack.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _SYS_STACK_H_
-#define _SYS_STACK_H_
-
-#if !defined(_ASM)
-#include <sys/types.h>
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/*
- * A stack frame looks like:
- *
- * %fp->| |
- * |-------------------------------|
- * | Locals, temps, saved floats |
- * |-------------------------------|
- * | outgoing parameters past 6 |
- * |-------------------------------|-\
- * | 6 words for callee to dump | |
- * | register arguments | |
- * |-------------------------------| > minimum stack frame
- * | One word struct-ret address | |
- * |-------------------------------| |
- * | 16 words to save IN and | |
- * %sp->| LOCAL register on overflow | |
- * |-------------------------------|-/
- */
-
-/*
- * Constants defining a 32-bit stack frame.
- */
-#define WINDOWSIZE (16*4) /* size of window save area */
-#define ARGPUSHSIZE (6*4) /* size of arg dump area */
-#define ARGPUSH (WINDOWSIZE + 4) /* arg dump area offset */
-#define MINFRAME (WINDOWSIZE + ARGPUSHSIZE + 4) /* min frame */
-
-#define STACK_GROWTH_DOWN /* stacks grow from high to low addresses */
-
-/*
- * Stack alignment macros.
- */
-#define STACK_ALIGN 8
-#define SA(X) (((X)+(STACK_ALIGN-1)) & ~(STACK_ALIGN-1))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SYS_STACK_H */
diff --git a/libgloss/sparc_leon/asm-leon/time.h b/libgloss/sparc_leon/asm-leon/time.h
deleted file mode 100644
index 487190e21..000000000
--- a/libgloss/sparc_leon/asm-leon/time.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _ASMSPARC_TIME_H
-#define _ASMSPARC_TIME_H
-
-extern struct timespec xtime;
-extern unsigned long tick_nsec; /* nsec per tick (resolution) */
-extern unsigned long nodotimer;
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/timer.h b/libgloss/sparc_leon/asm-leon/timer.h
deleted file mode 100644
index f650d2e27..000000000
--- a/libgloss/sparc_leon/asm-leon/timer.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef _ASMSPARC_TIMER_H
-#define _ASMSPARC_TIMER_H
-
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_queue.h>*/
-#include <sys/time.h>
-#include <asm-leon/clock.h>
-
-#ifndef __ASSEMBLER__
-typedef int (*timerevent_handler) (void *);
-struct timerevent
-{
- TAILQ_ENTRY (timerevent) n;
- struct timespec expire;
- timerevent_handler handler;
- void *arg;
-
-};
-#endif
-
-#define GT_TIMESPEC(t1, t2) \
- (t1.tv_sec > t2.tv_sec || \
- (t1.tv_sec == t2.tv_sec && \
- t1.tv_nsec > t2.tv_nsec))
-
-#define GT_TIMEVAL(t1, t2) \
- (t1.tv_sec > t2.tv_sec || \
- (t1.tv_sec == t2.tv_sec && \
- t1.tv_usec > t2.tv_usec))
-
-/*
- * MINUS_TIME only works if src1 > src2
- */
-#define MINUS_TIMEVAL(dst, src1, src2) \
- if ((src2).tv_usec > (src1).tv_usec) { \
- (dst).tv_sec = (src1).tv_sec - (src2).tv_sec - 1; \
- (dst).tv_usec = ((src1).tv_usec - (src2).tv_usec) + USEC_PER_SEC; \
- } \
- else { \
- (dst).tv_sec = (src1).tv_sec - (src2).tv_sec; \
- (dst).tv_usec = (src1).tv_usec - (src2).tv_usec; \
- }
-
-/* Protypes */
-#ifndef __ASSEMBLER__
-void leonbare_init_ticks ();
-int addtimer (struct timerevent *e);
-#endif
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/types.h b/libgloss/sparc_leon/asm-leon/types.h
deleted file mode 100644
index fa9e721fc..000000000
--- a/libgloss/sparc_leon/asm-leon/types.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#ifndef H_LEONBARE_TYPES_H
-#define H_LEONBARE_TYPES_H
-
-typedef unsigned long long u64;
-
-#endif
diff --git a/libgloss/sparc_leon/asm-leon/winmacros.h b/libgloss/sparc_leon/asm-leon/winmacros.h
deleted file mode 100644
index 37ca6760e..000000000
--- a/libgloss/sparc_leon/asm-leon/winmacros.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-
-/* Store the register window onto the 8-byte aligned area starting
- * at %reg. It might be %sp, it might not, we don't care.
- */
-#define RW_STORE(reg) \
- std %l0, [%reg + RW_L0]; \
- std %l2, [%reg + RW_L2]; \
- std %l4, [%reg + RW_L4]; \
- std %l6, [%reg + RW_L6]; \
- std %i0, [%reg + RW_I0]; \
- std %i2, [%reg + RW_I2]; \
- std %i4, [%reg + RW_I4]; \
- std %i6, [%reg + RW_I6];
-
-/* Load a register window from the area beginning at %reg. */
-#define RW_LOAD(reg) \
- ldd [%reg + RW_L0], %l0; \
- ldd [%reg + RW_L2], %l2; \
- ldd [%reg + RW_L4], %l4; \
- ldd [%reg + RW_L6], %l6; \
- ldd [%reg + RW_I0], %i0; \
- ldd [%reg + RW_I2], %i2; \
- ldd [%reg + RW_I4], %i4; \
- ldd [%reg + RW_I6], %i6;
-
-/* Loading and storing struct pt_reg trap frames. */
-#define PT_LOAD_INS(base_reg) \
- ldd [%base_reg + SF_REGS_SZ + PT_I0], %i0; \
- ldd [%base_reg + SF_REGS_SZ + PT_I2], %i2; \
- ldd [%base_reg + SF_REGS_SZ + PT_I4], %i4; \
- ldd [%base_reg + SF_REGS_SZ + PT_I6], %i6;
-
-#define PT_LOAD_GLOBALS(base_reg) \
- ld [%base_reg + SF_REGS_SZ + PT_G1], %g1; \
- ldd [%base_reg + SF_REGS_SZ + PT_G2], %g2; \
- ldd [%base_reg + SF_REGS_SZ + PT_G4], %g4; \
- ldd [%base_reg + SF_REGS_SZ + PT_G6], %g6;
-
-#define PT_LOAD_GLOBALS_23(base_reg) \
- ldd [%base_reg + SF_REGS_SZ + PT_G2], %g2;
-
-#define PT_LOAD_YREG(base_reg, scratch) \
- ld [%base_reg + SF_REGS_SZ + PT_Y], %scratch; \
- wr %scratch, 0x0, %y;
-
-#define PT_LOAD_PRIV(base_reg, pt_psr, pt_pc, pt_npc) \
- ld [%base_reg + SF_REGS_SZ + PT_PSR], %pt_psr; \
- ld [%base_reg + SF_REGS_SZ + PT_PC], %pt_pc; \
- ld [%base_reg + SF_REGS_SZ + PT_NPC], %pt_npc;
-
-#define PT_LOAD_ALL(base_reg, pt_psr, pt_pc, pt_npc, scratch) \
- PT_LOAD_YREG(base_reg, scratch) \
- PT_LOAD_INS(base_reg) \
- PT_LOAD_GLOBALS(base_reg) \
- PT_LOAD_PRIV(base_reg, pt_psr, pt_pc, pt_npc)
-
-#define PT_LOAD_ALL_FAST(base_reg, pt_psr, pt_pc, pt_npc, scratch) \
- PT_LOAD_YREG(base_reg, scratch) \
- PT_LOAD_GLOBALS(base_reg)
-
-#define PT_STORE_INS(base_reg) \
- std %i0, [%base_reg + SF_REGS_SZ + PT_I0]; \
- std %i2, [%base_reg + SF_REGS_SZ + PT_I2]; \
- std %i4, [%base_reg + SF_REGS_SZ + PT_I4]; \
- std %i6, [%base_reg + SF_REGS_SZ + PT_I6];
-
-#define PT_STORE_GLOBALS(base_reg) \
- st %g1, [%base_reg + SF_REGS_SZ + PT_G1]; \
- std %g2, [%base_reg + SF_REGS_SZ + PT_G2]; \
- std %g4, [%base_reg + SF_REGS_SZ + PT_G4]; \
- std %g6, [%base_reg + SF_REGS_SZ + PT_G6];
-
-#define PT_STORE_GLOBALS_23(base_reg) \
- std %g2, [%base_reg + SF_REGS_SZ + PT_G2];
-
-#define PT_STORE_YREG(base_reg, scratch) \
- rd %y, %scratch; \
- st %scratch, [%base_reg + SF_REGS_SZ + PT_Y];
-
-#define PT_STORE_PRIV(base_reg, pt_psr, pt_pc, pt_npc) \
- st %pt_psr, [%base_reg + SF_REGS_SZ + PT_PSR]; \
- st %pt_pc, [%base_reg + SF_REGS_SZ + PT_PC]; \
- st %pt_npc, [%base_reg + SF_REGS_SZ + PT_NPC];
-
-#define PT_STORE_ALL(base_reg, reg_psr, reg_pc, reg_npc, g_scratch) \
- PT_STORE_PRIV(base_reg, reg_psr, reg_pc, reg_npc) \
- PT_STORE_GLOBALS(base_reg) \
- PT_STORE_YREG(base_reg, g_scratch) \
- PT_STORE_INS(base_reg)
-
-#define PT_STORE_ALL_FAST(base_reg, reg_psr, reg_pc, reg_npc, g_scratch) \
- PT_STORE_GLOBALS(base_reg) \
- PT_STORE_YREG(base_reg, g_scratch)
-
-/* Store the fpu register window*/
-#define FW_STORE(reg) \
- std %f0, [reg + FW_F0]; \
- std %f2, [reg + FW_F2]; \
- std %f4, [reg + FW_F4]; \
- std %f6, [reg + FW_F6]; \
- std %f8, [reg + FW_F8]; \
- std %f10, [reg + FW_F10]; \
- std %f12, [reg + FW_F12]; \
- std %f14, [reg + FW_F14]; \
- std %f16, [reg + FW_F16]; \
- std %f18, [reg + FW_F18]; \
- std %f20, [reg + FW_F20]; \
- std %f22, [reg + FW_F22]; \
- std %f24, [reg + FW_F24]; \
- std %f26, [reg + FW_F26]; \
- std %f28, [reg + FW_F28]; \
- std %f30, [reg + FW_F30]; \
- st %fsr, [reg + FW_FSR];
-
-/* Load a fpu register window from the area beginning at reg. */
-#define FW_LOAD(reg) \
- ldd [reg + FW_F0], %f0; \
- ldd [reg + FW_F2], %f2; \
- ldd [reg + FW_F4], %f4; \
- ldd [reg + FW_F6], %f6; \
- ldd [reg + FW_F8], %f8; \
- ldd [reg + FW_F10], %f10; \
- ldd [reg + FW_F12], %f12; \
- ldd [reg + FW_F14], %f14; \
- ldd [reg + FW_F16], %f16; \
- ldd [reg + FW_F18], %f18; \
- ldd [reg + FW_F20], %f20; \
- ldd [reg + FW_F22], %f22; \
- ldd [reg + FW_F24], %f24; \
- ldd [reg + FW_F26], %f26; \
- ldd [reg + FW_F28], %f28; \
- ldd [reg + FW_F30], %f30; \
- ld [reg + FW_FSR], %fsr;
-
-#define SET_WIM_CWPMIN2(psr_reg,tmp1,tmp2,tmp3,tmp4) \
- sethi %hi(_nwindows_min2), %##tmp1; \
- and %##psr_reg, SPARC_PSR_WIN_MASK, %##tmp3; \
- mov 1, %##tmp2; \
- ld [ %##tmp1 + %lo(_nwindows_min2)], %##tmp1; \
- sll %##tmp2, %##tmp3, %##tmp3; \
- sll %##tmp3, 2, %##tmp4; \
- srl %##tmp3, %##tmp1, %##tmp1; \
- or %##tmp4, %##tmp1, %##tmp3; \
- wr %##tmp3, 0x0, %wim; \
- nop; nop; nop;
-
-#define SET_WIM_CWPMIN1(psr_reg,tmp1,tmp2,tmp3,tmp4) \
- sethi %hi(_nwindows_min1), %##tmp1; \
- and %##psr_reg, SPARC_PSR_WIN_MASK, %##tmp3; \
- mov 1, %##tmp2; \
- ld [ %##tmp1 + %lo(_nwindows_min1)], %##tmp1; \
- sll %##tmp2, %##tmp3, %##tmp3; \
- sll %##tmp3, 1, %##tmp4; \
- srl %##tmp3, %##tmp1, %##tmp1; \
- or %##tmp4, %##tmp1, %##tmp3; \
- wr %##tmp3, 0x0, %wim; \
- nop; nop; nop;
diff --git a/libgloss/sparc_leon/bdinit.S b/libgloss/sparc_leon/bdinit.S
deleted file mode 100644
index 0e97af7f1..000000000
--- a/libgloss/sparc_leon/bdinit.S
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
- .section .text
- /* ------- */
- .weak bdinit1
- .set bdinit1,__bdinit1
- /* ------- */
-__bdinit1:
- retl
- nop
-
- .section .text
- /* ------- */
- .weak bdinit2
- .set bdinit2,__bdinit2
- /* ------- */
-__bdinit2:
- retl
- nop
-
- .section .text
- /* ------- */
- .weak prelibchook
- .set prelibchook,__prelibchook
- /* ------- */
-__prelibchook:
- retl
- nop
-
-
diff --git a/libgloss/sparc_leon/busscan.S b/libgloss/sparc_leon/busscan.S
deleted file mode 100644
index e7f139635..000000000
--- a/libgloss/sparc_leon/busscan.S
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-!unsigned int ahbslv_scan(register unsigned int vendor,register unsigned int driver) {
-! register unsigned int conf, mbar,i, *confp;
-! register unsigned int cfg_area = (unsigned int ) (LEON3_IO_AREA | LEON3_CONF_AREA | LEON3_AHB_SLAVE_CONF_AREA);
-! for (i = 0; i < LEON3_AHB_SLAVES; i++)
-! {
-! confp = (unsigned int*)(cfg_area + (i * LEON3_AHB_CONF_WORDS * 4));
-! conf = *confp;
-! //mbar = *(unsigned int*)(i * LEON3_AHB_CONF_WORDS+ (4 * 4));
-! if ((amba_vendor(conf) == vendor) && (amba_device(conf) == driver)) {
-! return (unsigned int)confp;
-! }
-! }
-! return 0;
-!}
-
-
- .section ".text"
- .global ahbslv_scan
- .align 4
-
-ahbslv_scan:
- mov %o0, %g1
- mov -2048, %o5
- mov 0, %o3
- sll %o3, 5, %o0
-.LL11:
- add %o5, %o0, %o4
- ld [%o5+%o0], %o2
- srl %o2, 24, %o0
- cmp %o0, %g1
- bne,a .LL10
- add %o3, 1, %o3
- srl %o2, 12, %o0
- and %o0, 4095, %o0
- cmp %o0, %o1
- be .LL1
- mov %o4, %o2
- add %o3, 1, %o3
-.LL10:
- cmp %o3, 7
- bleu,a .LL11
- sll %o3, 5, %o0
- mov 0, %o2
-.LL1:
- retl
- mov %o2, %o0
-
-
-!unsigned int apbslv_scan(register unsigned int base,register unsigned int vendor, register unsigned int driver) {
-! register unsigned int conf, mbar,i, *confp;
-! for (i = 0; i < LEON3_APB_SLAVES; i++)
-! {
-! confp = (unsigned int*)(base + (i * LEON3_APB_CONF_WORDS * 4));
-! conf = *confp;
-! //mbar = *(unsigned int*)(i * LEON3_AHB_CONF_WORDS+ (4 * 4));
-! if ((amba_vendor(conf) == vendor) && (amba_device(conf) == driver)) {
-! return (unsigned int)confp;
-! }
-! }
-! return 0;
-!}
-
-
- .section ".text"
- .align 4
- .global apbslv_scan
-
-apbslv_scan:
- mov %o0, %g1
- mov 0, %o4
- sll %o4, 3, %o0
-.LL22:
- add %g1, %o0, %o5
- ld [%g1+%o0], %o3
- srl %o3, 24, %o0
- cmp %o0, %o1
- bne,a .LL21
- add %o4, 1, %o4
- srl %o3, 12, %o0
- and %o0, 4095, %o0
- cmp %o0, %o2
- be .LL12
- mov %o5, %o3
- add %o4, 1, %o4
-.LL21:
- cmp %o4, 15
- bleu,a .LL22
- sll %o4, 3, %o0
- mov 0, %o3
-.LL12:
- retl
- mov %o3, %o0
-
-
-
-!unsigned int getbase(register unsigned int *mbar,register unsigned int iobase) {
-! register unsigned int conf = mbar[1];
-! return ((iobase & 0xfff00000) |
-! ((conf & 0xfff00000)>> 12)) & (((conf & 0x0000fff0) <<4) | 0xfff00000);
-!
-!}
-
-
- .section ".text"
- .align 4
- .global iobar_getbase
-
-iobar_getbase:
- ld [%o0+4], %o2
- sethi %hi(-1048576), %o3
- and %o1, %o3, %o1
- and %o2, %o3, %o0
- srl %o0, 12, %o0
- or %o1, %o0, %o1
- sethi %hi(64512), %o0
- or %o0, 1008, %o0
- and %o2, %o0, %o2
- sll %o2, 4, %o2
- or %o2, %o3, %o2
- and %o1, %o2, %o1
- retl
- mov %o1, %o0
-
diff --git a/libgloss/sparc_leon/cacheA.S b/libgloss/sparc_leon/cacheA.S
deleted file mode 100644
index e98288482..000000000
--- a/libgloss/sparc_leon/cacheA.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-
- .seg "data"
- .global sparc_leon23_cache_flush, sparc_leon23_icache_flush, sparc_leon23_dcache_flush
-
- .global _leon_version
-
- .seg "text"
-
-/* =============================================== */
-
-/* use only %o7 */
-sparc_leon23_icache_flush:
-sparc_leon3_icache_flush:
- retl
-sparc_leon23_cache_flush:
-sparc_leon3_cache_flush:
- sta %g0, [%g0] ASI_LEON3_IFLUSH
-sparc_leon23_dcache_flush:
-sparc_leon3_dcache_flush:
- retl
- sta %g0, [%g0] ASI_LEON3_DFLUSH
-
-
-
diff --git a/libgloss/sparc_leon/catch_interrupt.c b/libgloss/sparc_leon/catch_interrupt.c
deleted file mode 100644
index f55defaa6..000000000
--- a/libgloss/sparc_leon/catch_interrupt.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-#define NULL 0
-struct irqaction *_irqtbl[32] =
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-0, 0, 0, 0, 0, 0, 0 };
-struct irqaction _oirqtbl[32] =
- { INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION,
- INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION,
- INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION,
- INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION,
- INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION,
- INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION,
- INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION,
- INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION, INIT_IRQACTION
-};
-
-int
-catch_interrupt (int func, int irq)
-{
- struct irqaction *a = _irqtbl[irq];
- struct irqaction *n = &_oirqtbl[irq];
- if (irq >= 32)
- return 0;
-
- while (a)
- {
- if (a == n)
- {
- int tmp = (int) a->handler;
- a->handler = (irqhandler) func;
- return tmp;
- }
- a = a->next;
- }
- n->handler = (irqhandler) func;
- chained_catch_interrupt (irq, n);
- return 0;
-}
-
-void
-chained_catch_interrupt (int irq, struct irqaction *a)
-{
- a->next = _irqtbl[irq];
- _irqtbl[irq] = a;
-}
-
-int no_inirq_check = 0;
-int inirq[32] = { 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-extern struct irqmp_type irqmp;
-
-void (*handler_irq_pre) (void) = 0;
-void (*handler_irq_post) (void) = 0;
-handler_irq (int irq, struct leonbare_pt_regs *pt_regs)
-{
- struct irqaction *a;
-
- if (irq == irqmp.eirq)
- irq = irqmp.addr[48] & 0x1f;
- if (!irq)
- irq = irqmp.eirq;
-
- a = _irqtbl[irq];
-
- while (a)
- {
- if (a->handler)
- {
-#ifndef CONFIG_LEONBARE_NONESTEDIRQ
- if (no_inirq_check || !(inirq[irq]))
- {
-#endif
- inirq[irq]++;
- if (handler_irq_pre)
- handler_irq_pre ();
- a->handler (irq, a->dev_id, pt_regs);
- if (handler_irq_post)
- handler_irq_post ();
- inirq[irq]--;
-#ifndef CONFIG_LEONBARE_NONESTEDIRQ
- }
-#endif
- }
- a = a->next;
- }
-}
-
-schedulehandler schedule_callback = 0;
diff --git a/libgloss/sparc_leon/catch_interrupt_mvt.c b/libgloss/sparc_leon/catch_interrupt_mvt.c
deleted file mode 100644
index da0332a17..000000000
--- a/libgloss/sparc_leon/catch_interrupt_mvt.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-#define NULL 0
-
-
-/* multi vector trapping version of trap handler installs */
-int
-mvtlolevelirqinstall (int irqnr, void (*handler) ())
-{
- unsigned long h = (unsigned long) handler;
- unsigned long *addr =
- (unsigned long *) ((locore_readtbr () & ~0xFFF) + 0x100 + (16 * irqnr));
-
- if (irqnr == 0 || irqnr >= 15)
- {
- return 0;
- }
-
- addr[0] = ((h >> 10) & 0x3fffff) | 0x29000000; /* 29000000: sethi %hi(handler), %l4 */
- addr[1] = ((h) & 0x3ff) | 0x81c52000; /* 81c52000: jmpl %l4 + %lo(handler), %g0 */
- addr[2] = 0x01000000; /* 01000000: nop */
- addr[3] = 0x01000000; /* 01000000: nop */
- return 1;
-}
-
-int
-lolevelirqinstall (int irqnr, void (*handler) ())
-{
- return mvtlolevelirqinstall (irqnr, handler);
-}
diff --git a/libgloss/sparc_leon/catch_interrupt_pending.c b/libgloss/sparc_leon/catch_interrupt_pending.c
deleted file mode 100644
index 1193cadea..000000000
--- a/libgloss/sparc_leon/catch_interrupt_pending.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-#define NULL 0
-
-TAILQ_HEAD (pending_queue, pendingaction) pending =
-TAILQ_HEAD_INITIALIZER (pending);
-
- void add_pending (struct pendingaction *a)
-{
- unsigned long old = leonbare_disable_traps ();
- TAILQ_INSERT_TAIL (&pending, a, next);
- leonbare_enable_traps (old);
-}
-
-struct pendingaction *
-get_pending ()
-{
- struct pendingaction *a = 0;
- unsigned long old = leonbare_disable_traps ();
- if (a = TAILQ_FIRST (&pending))
- {
- TAILQ_REMOVE (&pending, a, next);
- }
- leonbare_enable_traps (old);
- return a;
-}
-
-void
-process_pending ()
-{
- struct pendingaction *a;
- while (a = get_pending ())
- {
- if (a->handler)
- {
- a->handler (a->arg);
- }
- }
-}
diff --git a/libgloss/sparc_leon/catch_interrupt_svt.c b/libgloss/sparc_leon/catch_interrupt_svt.c
deleted file mode 100644
index 065b5f1d3..000000000
--- a/libgloss/sparc_leon/catch_interrupt_svt.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-#define NULL 0
-
-/* single vector trapping version of trap handler installs */
-struct svt_trap_entry
-{
- int start, end, func;
-};
-extern struct svt_trap_entry trap_table[28];
-extern struct svt_trap_entry svt_trap_table_ext[17];
-extern struct svt_trap_entry svt_trap_table_ext_end;
-
-static struct svt_trap_entry *
-gettrap_pos (int nr)
-{
- struct svt_trap_entry *p = trap_table;
- while ((p->start) || (p->end) || (p->func))
- {
- if (p->start <= nr && p->end >= nr)
- {
- break;
- }
- p++;
- }
- return p;
-}
-
-int
-svtloleveltrapinstall (int trap, void (*handler) ())
-{
- struct svt_trap_entry *p = gettrap_pos (trap);
- if (p >= &svt_trap_table_ext_end)
- {
- return 0;
- }
- p->start = trap;
- p->end = trap;
- p->func = handler;
- return 1;
-}
-
-int
-svtlolevelirqinstall (int irqnr, void (*handler) ())
-{
- if (irqnr == 0 || irqnr >= 15)
- {
- return 0;
- }
- return svtloleveltrapinstall (irqnr + 0x10, handler);
-}
diff --git a/libgloss/sparc_leon/configure b/libgloss/sparc_leon/configure
deleted file mode 100755
index 0c93718f1..000000000
--- a/libgloss/sparc_leon/configure
+++ /dev/null
@@ -1,3877 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68.
-#
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-"
- as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
- exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1"
- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
- as_have_required=yes
-else
- as_have_required=no
-fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- as_found=:
- case $as_dir in #(
- /*)
- for as_base in sh bash ksh sh5; do
- # Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
- CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
- break 2
-fi
-fi
- done;;
- esac
- as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
- if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
-fi
-
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
- else
- $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
- fi
- exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
-
-ac_unique_file="crt0.S"
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-target_makefile_frag_path
-host_makefile_frag_path
-CCASFLAGS
-CCAS
-RANLIB
-LD
-AR
-AS
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-am__leading_dot
-CC
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files='host_makefile_frag
-target_makefile_frag'
-ac_user_opts='
-enable_option_checking
-enable_dependency_tracking
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CCAS
-CCASFLAGS'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *=) ac_optarg= ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- case $ac_envvar in #(
- '' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
- esac
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking ...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-
-Program names:
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST cross-compile to build programs to run on HOST [BUILD]
- --target=TARGET configure for building compilers for TARGET [HOST]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-
- cat <<\_ACEOF
-
-Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
-
-Some influential environment variables:
- CCAS assembler compiler command (defaults to CC)
- CCASFLAGS assembler compiler flags (defaults to CFLAGS)
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to the package provider.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-configure
-generated by GNU Autoconf 2.68
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
- if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.68. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
- done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
- 2)
- as_fn_append ac_configure_args1 " '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- as_fn_append ac_configure_args " '$ac_arg'"
- ;;
- esac
- done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
-elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
-else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special files
- # actually), so we avoid doing that. DJGPP emulates it as a regular file.
- if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) as_fn_append ac_configure_args " '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-if test "${enable_shared}" = "yes" ; then
- echo "Shared libraries not supported for cross compiling, ignored"
-fi
-
-if test "$srcdir" = "." ; then
- if test "${with_target_subdir}" != "." ; then
- libgloss_topdir="${srcdir}/${with_multisrctop}../../.."
- else
- libgloss_topdir="${srcdir}/${with_multisrctop}../.."
- fi
-else
- libgloss_topdir="${srcdir}/../.."
-fi
-ac_aux_dir=
-for ac_dir in $libgloss_topdir "$srcdir"/$libgloss_topdir; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in $libgloss_topdir \"$srcdir\"/$libgloss_topdir" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if ${ac_cv_target+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$target_alias" = x; then
- ac_cv_target=$ac_cv_host
-else
- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
-test "$program_prefix" != NONE &&
- program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
- done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
- enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
- AMDEP_TRUE=
- AMDEP_FALSE='#'
-else
- AMDEP_TRUE='#'
- AMDEP_FALSE=
-fi
-
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-depcc="$CC" am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -z "$CC" && as_fn_error $? "no acceptable cc found in \$PATH" "$LINENO" 5
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using GNU C" >&5
-$as_echo_n "checking whether we are using GNU C... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_c_compiler_gnu=yes
-else
- ac_cv_c_compiler_gnu=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-
-if test $ac_cv_c_compiler_gnu = yes; then
- GCC=yes
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-else
- CFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
- 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
-
-AS=${AS-as}
-
-AR=${AR-ar}
-
-LD=${LD-ld}
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-# By default we simply use the C compiler to build assembly code.
-
-test "${CCAS+set}" = set || CCAS=$CC
-test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
-
-
-
-
-host_makefile_frag=${srcdir}/../config/default.mh
-target_makefile_frag=${srcdir}/../config/default.mt
-
-host_makefile_frag_path=$host_makefile_frag
-
-
-target_makefile_frag_path=$target_makefile_frag
-
-
-
-ac_config_files="$ac_config_files Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes: double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \.
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
- if test ! -f "$cache_file" || test -h "$cache_file"; then
- cat confcache >"$cache_file"
- else
- case $cache_file in #(
- */* | ?:*)
- mv -f confcache "$cache_file"$$ &&
- mv -f "$cache_file"$$ "$cache_file" ;; #(
- *)
- mv -f confcache "$cache_file" ;;
- esac
- fi
- fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then branch to the quote section. Otherwise,
-# look for a macro that doesn't take arguments.
-ac_script='
-:mline
-/\\$/{
- N
- s,\\\n,,
- b mline
-}
-t clear
-:clear
-s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
-t quote
-s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
-t quote
-b any
-:quote
-s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
-s/\$/$$/g
-H
-:any
-${
- g
- s/^\n//
- s/\n/ /g
- p
-}
-'
-DEFS=`sed -n "$ac_script" confdefs.h`
-
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by $as_me, which was
-generated by GNU Autoconf 2.68. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration. Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
- --config print configuration, then exit
- -q, --quiet, --silent
- do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Configuration commands:
-$config_commands
-
-Report bugs to the package provider."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.68,
- with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=?*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- --*=)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
- --config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- '') as_fn_error $? "missing file argument" ;;
- esac
- as_fn_append CONFIG_FILES " '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h | --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
- *) as_fn_append ac_config_targets " $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
- exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
- $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-srcdir=${srcdir}
-target=${target}
-with_multisubdir=${with_multisubdir}
-ac_configure_args="${ac_configure_args} --enable-multilib"
-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-libgloss_topdir=${libgloss_topdir}
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-
- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp= ac_tmp=
- trap 'exit_status=$?
- : "${ac_tmp:=$tmp}"
- { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
- trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-if $AWK 'BEGIN { getline <"/dev/null" }' </dev/null 2>/dev/null; then
- ac_cs_awk_getline=:
- ac_cs_awk_pipe_init=
- ac_cs_awk_read_file='
- while ((getline aline < (F[key])) > 0)
- print(aline)
- close(F[key])'
- ac_cs_awk_pipe_fini=
-else
- ac_cs_awk_getline=false
- ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\""
- ac_cs_awk_read_file='
- print "|#_!!_#|"
- print "cat " F[key] " &&"
- '$ac_cs_awk_pipe_init
- # The final `:' finishes the AND list.
- ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }'
-fi
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
- eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-# Create commands to substitute file output variables.
-{
- echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" &&
- echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' &&
- echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' &&
- echo "_ACAWK" &&
- echo "_ACEOF"
-} >conf$$files.sh &&
-. ./conf$$files.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-rm -f conf$$files.sh
-
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
- \$ac_cs_awk_pipe_init
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
- if (nfields == 3 && !substed) {
- key = field[2]
- if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) {
- \$ac_cs_awk_read_file
- next
- }
- }
- print line
-}
-\$ac_cs_awk_pipe_fini
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
- || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
-h
-s///
-s/^/:/
-s/[ ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[ ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-
-eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$ac_tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
- esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- as_fn_append ac_file_inputs " '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
- fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
-
- case $ac_tag in
- *:-:* | *:-) cat >"$ac_tmp/stdin" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir="$ac_dir"; as_fn_mkdir_p
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" |
-if $ac_cs_awk_getline; then
- $AWK -f "$ac_tmp/subs.awk"
-else
- $AWK -f "$ac_tmp/subs.awk" | $SHELL
-fi \
- >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
- "$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&2;}
-
- rm -f "$ac_tmp/stdin"
- case $ac_file in
- -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
- *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
- esac \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-
-
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
- esac
-
-
- case $ac_file$ac_mode in
- "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir=$dirpart/$fdir; as_fn_mkdir_p
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
- ;;
- "Makefile":F) . ${libgloss_topdir}/config-ml.in ;;
-
- esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
- as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/libgloss/sparc_leon/configure.in b/libgloss/sparc_leon/configure.in
deleted file mode 100644
index fab622f7b..000000000
--- a/libgloss/sparc_leon/configure.in
+++ /dev/null
@@ -1,58 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.59)
-AC_INIT(crt0.S)
-
-if test "${enable_shared}" = "yes" ; then
- echo "Shared libraries not supported for cross compiling, ignored"
-fi
-
-if test "$srcdir" = "." ; then
- if test "${with_target_subdir}" != "." ; then
- libgloss_topdir="${srcdir}/${with_multisrctop}../../.."
- else
- libgloss_topdir="${srcdir}/${with_multisrctop}../.."
- fi
-else
- libgloss_topdir="${srcdir}/../.."
-fi
-AC_CONFIG_AUX_DIR($libgloss_topdir)
-
-AC_CANONICAL_SYSTEM
-AC_ARG_PROGRAM
-
-AC_PROG_INSTALL
-
-LIB_AC_PROG_CC
-AS=${AS-as}
-AC_SUBST(AS)
-AR=${AR-ar}
-AC_SUBST(AR)
-LD=${LD-ld}
-AC_SUBST(LD)
-AC_PROG_RANLIB
-LIB_AM_PROG_AS
-
-host_makefile_frag=${srcdir}/../config/default.mh
-target_makefile_frag=${srcdir}/../config/default.mt
-
-dnl We have to assign the same value to other variables because autoconf
-dnl doesn't provide a mechanism to substitute a replacement keyword with
-dnl arbitrary data or pathnames.
-dnl
-host_makefile_frag_path=$host_makefile_frag
-AC_SUBST(host_makefile_frag_path)
-AC_SUBST_FILE(host_makefile_frag)
-target_makefile_frag_path=$target_makefile_frag
-AC_SUBST(target_makefile_frag_path)
-AC_SUBST_FILE(target_makefile_frag)
-
-AC_CONFIG_FILES(Makefile,
-. ${libgloss_topdir}/config-ml.in,
-srcdir=${srcdir}
-target=${target}
-with_multisubdir=${with_multisubdir}
-ac_configure_args="${ac_configure_args} --enable-multilib"
-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-libgloss_topdir=${libgloss_topdir}
-)
-AC_OUTPUT
diff --git a/libgloss/sparc_leon/console.c b/libgloss/sparc_leon/console.c
deleted file mode 100644
index 849aad94f..000000000
--- a/libgloss/sparc_leon/console.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <stdlib.h>
-#include <ctype.h>
-
-int *console = (int *) 0x80000100;
diff --git a/libgloss/sparc_leon/console_dbg.c b/libgloss/sparc_leon/console_dbg.c
deleted file mode 100644
index 57c258fb4..000000000
--- a/libgloss/sparc_leon/console_dbg.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <stdlib.h>
-#include <ctype.h>
-#ifdef _HAVE_STDC
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <asm-leon/leoncompat.h>
-#include <asm-leon/leon.h>
-
-static size_t
-lo_strnlen (const char *s, size_t count)
-{
- const char *sc;
-
- for (sc = s; count-- && *sc != '\0'; ++sc)
- /* nothing */ ;
- return sc - s;
-}
-
-static int
-lo_vsnprintf (char *buf, size_t size, const char *fmt, va_list args)
-{
- int len;
- unsigned long long num;
- int i, j, n;
- char *str, *end, c;
- const char *s;
- int flags;
- int field_width;
- int precision;
- int qualifier;
- int filler;
-
- str = buf;
- end = buf + size - 1;
-
- if (end < buf - 1)
- {
- end = ((void *) -1);
- size = end - buf + 1;
- }
-
- for (; *fmt; ++fmt)
- {
- if (*fmt != '%')
- {
- if (*fmt == '\n')
- {
- if (str <= end)
- {
- *str = '\r';
- }
- str++;
- }
- if (str <= end)
- *str = *fmt;
- ++str;
- continue;
- }
-
- /* process flags */
- flags = 0;
- /* get field width */
- field_width = 0;
- /* get the precision */
- precision = -1;
- /* get the conversion qualifier */
- qualifier = 'l';
- filler = ' ';
-
- ++fmt;
-
- if (*fmt == '0')
- {
- filler = '0';
- ++fmt;
- }
-
- while (isdigit (*fmt))
- {
- field_width = field_width * 10 + ((*fmt) - '0');
- ++fmt;
- }
-
- /* default base */
- switch (*fmt)
- {
- case 'c':
- c = (unsigned char) va_arg (args, int);
- if (str <= end)
- *str = c;
- ++str;
- while (--field_width > 0)
- {
- if (str <= end)
- *str = ' ';
- ++str;
- }
- continue;
-
- case 's':
- s = va_arg (args, char *);
- if (!s)
- s = "<NULL>";
-
- len = lo_strnlen (s, precision);
-
- for (i = 0; i < len; ++i)
- {
- if (str <= end)
- *str = *s;
- ++str;
- ++s;
- }
- while (len < field_width--)
- {
- if (str <= end)
- *str = ' ';
- ++str;
- }
- continue;
-
-
- case '%':
- if (str <= end)
- *str = '%';
- ++str;
- continue;
-
- case 'x':
- break;
- case 'd':
- break;
-
- default:
- if (str <= end)
- *str = '%';
- ++str;
- if (*fmt)
- {
- if (str <= end)
- *str = *fmt;
- ++str;
- }
- else
- {
- --fmt;
- }
- continue;
- }
- num = va_arg (args, unsigned long);
- if (*fmt == 'd')
- {
- j = 0;
- while (num && str <= end)
- {
- *str = (num % 10) + '0';
- num = num / 10;
- ++str;
- j++;
- }
- /* flip */
- for (i = 0; i < (j / 2); i++)
- {
- n = str[(-j) + i];
- str[(-j) + i] = str[-(i + 1)];
- str[-(i + 1)] = n;
- }
- /* shift */
- if (field_width > j)
- {
- i = field_width - j;
- for (n = 1; n <= j; n++)
- {
- if (str + i - n <= end)
- {
- str[i - n] = str[-n];
- }
- }
- for (i--; i >= 0; i--)
- {
- str[i - j] = filler;
- }
- str += field_width - j;
- j = 1;
- }
- }
- else
- {
- for (j = 0, i = 0; i < 8 && str <= end; i++)
- {
- if ((n =
- ((unsigned long) (num & (0xf0000000ul >> (i * 4)))) >>
- ((7 - i) * 4)) || j != 0)
- {
- if (n >= 10)
- n += 'a' - 10;
- else
- n += '0';
- *str = n;
- ++str;
- j++;
- }
- }
-
- /* shift */
- if (field_width > j)
- {
- i = field_width - j;
- for (n = 1; n <= j; n++)
- {
- if (str + i - n <= end)
- {
- str[i - n] = str[-n];
- }
- }
- for (i--; i >= 0; i--)
- {
- str[i - j] = filler;
- }
- str += field_width - j;
- j = 1;
- }
-
-
- }
-
- if (j == 0 && str <= end)
- {
- *str = '0';
- ++str;
- }
- }
- if (str <= end)
- *str = '\0';
- else if (size > 0)
- /* don't write out a null byte if the buf size is zero */
- *end = '\0';
- /* the trailing null byte doesn't count towards the total
- * ++str;
- */
- return str - buf;
-}
-
-/**
- * lo_vsprintf - Format a string and place it in a buffer
- * @buf: The buffer to place the result into
- * @fmt: The format string to use
- * @args: Arguments for the format string
- *
- * Call this function if you are already dealing with a va_list.
- * You probably want lo_sprintf instead.
- */
-static int
-lo_vsprintf (char *buf, const char *fmt, va_list args)
-{
- return lo_vsnprintf (buf, 0xFFFFFFFFUL, fmt, args);
-}
-
-
-int
-dbgleon_sprintf (char *buf, size_t size, const char *fmt, ...)
-{
- va_list args;
- int printed_len;
-
- va_start (args, fmt);
- printed_len = lo_vsnprintf (buf, size, fmt, args);
- va_end (args);
- return printed_len;
-}
-
-#define UART_TIMEOUT 100000
-static LEON23_APBUART_Regs_Map *uart_regs = 0;
-int
-dbgleon_printf (const char *fmt, ...)
-{
- unsigned int i, loops, ch;
- amba_apb_device apbdevs[1];
- va_list args;
- int printed_len;
- char printk_buf[1024];
- char *p = printk_buf;
-
- /* Emit the output into the temporary buffer */
- va_start (args, fmt);
- printed_len = lo_vsnprintf (printk_buf, sizeof (printk_buf), fmt, args);
- va_end (args);
-
- //---------------------
- switch (LEONCOMPAT_VERSION)
- {
- case 3:
- default:
- {
- if (!uart_regs)
- {
- if (i =
- leon3_getapbbase (VENDOR_GAISLER, GAISLER_APBUART, apbdevs,
- 1))
- {
- uart_regs = (LEON23_APBUART_Regs_Map *) apbdevs[0].start;
- }
- }
- if (uart_regs)
- {
- while (printed_len-- != 0)
- {
- ch = *p++;
- if (uart_regs)
- {
- loops = 0;
- while (!(uart_regs->status & LEON_REG_UART_STATUS_THE)
- && (loops < UART_TIMEOUT))
- loops++;
- uart_regs->data = ch;
- loops = 0;
- while (!(uart_regs->status & LEON_REG_UART_STATUS_TSE)
- && (loops < UART_TIMEOUT))
- loops++;
- }
- }
- }
- }
- break;
- }
- //---------------------
-}
diff --git a/libgloss/sparc_leon/console_init.c b/libgloss/sparc_leon/console_init.c
deleted file mode 100644
index 5a8169823..000000000
--- a/libgloss/sparc_leon/console_init.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-extern int *console;
-
-console_init (unsigned int *addr, int freq, int baud)
-{
- console = addr;
- addr[1] = 0;
- addr[2] = 3;
- addr[3] = (freq / baud + 8) / 16 - 1;
-}
diff --git a/libgloss/sparc_leon/contextswitch.c b/libgloss/sparc_leon/contextswitch.c
deleted file mode 100644
index 7aafec41f..000000000
--- a/libgloss/sparc_leon/contextswitch.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-#include <asm-leon/irq.h>
-#include <asm-leon/time.h>
-#include <asm-leon/contextswitch.h>
-
-/* This asm code relies on the following offsets (setjmp.h):
-#define THREAD_JB_SP 0
-#define THREAD_JB_PC 1
-#define THREAD_JB_PSR 8
-#define THREAD_JB_WIM 9 */
-
-int
-_do_thread_setjmp (threadctx_t env, unsigned int savesigs)
-{
-
-#ifndef _FLAT
- /* first restore should trap */
- env[THREAD_JB_WIM] = 1 << ((env[THREAD_JB_PSR] & SPARC_PSR_WIN_MASK) + 1);
- env[THREAD_JB_WIM] |= env[THREAD_JB_WIM] >> SPARC_NUM_REGWIN;
-#else
- env[THREAD_JB_WIM] = 0;
-#endif
-
-#ifndef _SOFT_FLOAT
- env[THREAD_JB_FPUCTX] = fpustate_current;
-#endif
- return 0;
-}
-
-void
-thread_longjmp (threadctx_t env, int val)
-{
-
- if (!val)
- val = 1;
-
-#ifndef _SOFT_FLOAT
- fpustate_current = env[THREAD_JB_FPUCTX];
-#endif
-
- _switch_to (env, val);
-
-/* __asm__ __volatile__( \ */
-/* " mov %8,%%i0 /\* propagate on restore *\/ \n\t"\ */
-/* " mov %0,%%i1 /\* propagate on restore *\/ \n\t"\ */
-/* " restore \n\t"\ */
-/* " mov %%o0,%%g6 \n\t"\ */
-/* " mov %%o1,%%g3 /\* former %%i1 (val) *\/ \n\t"\ */
-/* " \n\t"\ */
-/* " !ta 0x03 /\* flush registers *\/ \n\t"\ */
-/* " save %%sp, %7, %%sp \n\t"\ */
-/* " save %%sp, %7, %%sp \n\t"\ */
-/* " save %%sp, %7, %%sp \n\t"\ */
-/* " save %%sp, %7, %%sp \n\t"\ */
-/* " save %%sp, %7, %%sp \n\t"\ */
-/* " save %%sp, %7, %%sp \n\t"\ */
-/* " save %%sp, %7, %%sp \n\t"\ */
-/* " \n\t"\ */
-/* " ldd [%%g6+%5], %%g4 /\* load psr,wim *\/ \n\t"\ */
-/* " wr %%g4, 0x20, %%psr \n\t"\ */
-/* " nop \n\t"\ */
-/* " nop \n\t"\ */
-/* " nop \n\t"\ */
-/* " ldd [%%g6 +%1], %%sp /\* load sp, pc to jump to *\/ \n\t"\ */
-/* " wr %%g5, 0x0, %%wim \n\t"\ */
-/* " \n\t"\ */
-/* " ldd [%%sp], %%l0 /\* restore window *\/ \n\t"\ */
-/* " ldd [%%sp+8], %%l2 \n\t"\ */
-/* " ldd [%%sp+16], %%l4 \n\t"\ */
-/* " ldd [%%sp+24], %%l6 \n\t"\ */
-/* " \n\t"\ */
-/* " ldd [%%sp+32], %%i0 \n\t"\ */
-/* " ldd [%%sp+40], %%i2 \n\t"\ */
-/* " ldd [%%sp+48], %%i4 \n\t"\ */
-/* " ldd [%%sp+56], %%i6 \n\t"\ */
-/* " wr %%g4, 0x00, %%psr \n\t"\ */
-/* " nop \n\t"\ */
-/* " nop \n\t"\ */
-/* " nop \n\t"\ */
-/* " \n\t"\ */
-/* " jmp %%o7 + 8 /\* success *\/ \n\t"\ */
-/* " mov %%g3, %%o0 /\* return %%g3 *\/ \n\t"\ */
-/* : : /\* %0 *\/ "r" (val), \ */
-/* /\* %1 *\/ "i" (sizeof(int) * THREAD_JB_SP), \ */
-/* /\* %2 *\/ "i" (sizeof(int) * THREAD_JB_I7), \ */
-/* /\* %3 *\/ "i" (sizeof(int) * THREAD_JB_FP), \ */
-/* /\* %4 *\/ "i" (sizeof(int) * THREAD_JB_PC), \ */
-/* /\* %5 *\/ "i" (sizeof(int) * THREAD_JB_PSR), \ */
-/* /\* %6 *\/ "i" (sizeof(int) * THREAD_JB_WIM), \ */
-/* /\* %7 *\/ "i" (-SF_REGS_SZ), \ */
-/* /\* %8 *\/ "r" (env) ); */
-
- /* never come here */
-}
diff --git a/libgloss/sparc_leon/contextswitch_asm.S b/libgloss/sparc_leon/contextswitch_asm.S
deleted file mode 100644
index 755efa2c7..000000000
--- a/libgloss/sparc_leon/contextswitch_asm.S
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/winmacros.h>
-
-/* This asm code relies on the following offsets (setjmp.h):
-#define THREAD_JB_SP 0
-#define THREAD_JB_PC 1
-#define THREAD_JB_PSR 8
-#define THREAD_JB_WIM 9 */
-
- /* Number of register windows */
- .global _nwindows_min1, _nwindows
-
- .text
- .global _switch_to
-_switch_to:
-
-#ifndef _FLAT
- !mov %o0,%i0 /* propagate env on restore */
- !mov %o1,%i1 /* propagate val on restore */
- !restore
- mov %o0,%g7
- mov %o1,%g3 /* former %%i1 (val) */
-
- sethi %hi(_nwindows_min1), %g4 /* flush registers */
- ld [%g4+%lo(_nwindows_min1)], %g4
-1: save %sp, -SF_REGS_SZ, %sp !NWINDOWS-1 times
- sub %g4,1,%g4
- cmp %g0,%g4
- bne 1b
- nop
-#else
- mov %o0,%g7
- mov %o1,%g3 /* former %%i1 (val) */
- RW_STORE(sp)
-#endif
-
- ldd [%g7+THREAD_JB_PSR*4], %g4 /* load psr,wim */
- wr %g4, 0x20, %psr
- nop
- nop
- nop
- ldd [%g7 +THREAD_JB_SP*4], %sp /* load sp, pc to jump to */
- wr %g5, 0x0, %wim
-
- RW_LOAD(sp) /* restore window */
- wr %g4, 0x00, %psr
- nop
- nop
- nop
-
- jmp %o7 + 8 /* success */
- mov %g3, %o0 /* return %%g3 */
-
-
-
- .text
- .global thread_setjmp, _do_thread_setjmp
-thread_setjmp:
-
-#ifdef _FLAT
- RW_STORE(sp) /* store window */
-#endif
-
-! RW_STORE(sp) /* store window for _FLAT and normal, SWITCH_TO_STACK in pthread need this*/
-
- mov %psr,%o2
-#ifndef _SOFT_FLOAT
- set 0x1000,%o3
- andn %o2,%o3,%o2 !disable fpu
-#endif
- std %sp,[%o0] !THREAD_JB_SP
- st %o2,[%o0+(8*4)] !THREAD_JB_PSR
- ba _do_thread_setjmp
- nop
diff --git a/libgloss/sparc_leon/crt0.S b/libgloss/sparc_leon/crt0.S
deleted file mode 100644
index 7a20a414d..000000000
--- a/libgloss/sparc_leon/crt0.S
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
- .text
- .global _start, main, _end
-
-_start:
-
-#ifndef _FLAT
- save %sp, -64, %sp
-#else
- add %sp, -72, %sp
- st %o7, [%sp+64]
-#endif
- /* clear the bss */
-
- sethi %hi(__bss_start),%g2
- or %g2,%lo(__bss_start),%g2 ! g2 = start of bss
- sethi %hi(_end),%g3
- or %g3,%lo(_end),%g3 ! g3 = end of bss
- mov %g0,%g1 ! so std has two zeros
- sub %g3, %g2, %g3
-zerobss:
- subcc %g3, 8, %g3
- bge,a zerobss
- std %g0,[%g2+%g3]
-
- set _end, %o0
- st %g0,[%o0]
-
- call bdinit2
- nop
-
- call prelibchook
- nop
-
- call _call_initcalls /* atexit uses __atexit lock */
- nop
-
- set _fini, %o0
- call atexit, 1
- nop
-
- call _init
- nop
-
- call main
- nop
- call _exit
- nop
-#ifndef _FLAT
- ret
- restore
-#else
- ld [%sp+64], %o7
- retl
- add %sp, 72, %sp
-#endif
-
- .seg "data"
- .global .bdata
-.bdata:
- .align 8
- .global _environ
-_environ:
- .word 1
-
-
-
diff --git a/libgloss/sparc_leon/crti.S b/libgloss/sparc_leon/crti.S
deleted file mode 100644
index 526741a39..000000000
--- a/libgloss/sparc_leon/crti.S
+++ /dev/null
@@ -1,69 +0,0 @@
-! Copyright (C) 1992 Free Software Foundation, Inc.
-! Written By David Vinayak Henkel-Wallace, June 1992
-!
-! This file 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.
-!
-! In addition to the permissions in the GNU General Public License, the
-! Free Software Foundation gives you unlimited permission to link the
-! compiled version of this file with other programs, and to distribute
-! those programs without any restriction coming from the use of this
-! file. (The General Public License restrictions do apply in other
-! respects; for example, they cover modification of the file, and
-! distribution when not linked into another program.)
-!
-! This file 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; see the file COPYING. If not, write to
-! the Free Software Foundation, 59 Temple Place - Suite 330,
-! Boston, MA 02111-1307, USA.
-!
-! As a special exception, if you link this library with files
-! compiled with GCC to produce an executable, this does not cause
-! the resulting executable to be covered by the GNU General Public License.
-! This exception does not however invalidate any other reasons why
-! the executable file might be covered by the GNU General Public License.
-!
-
-! This file just make a stack frame for the contents of the .fini and
-! .init sections. Users may put any desired instructions in those
-! sections.
-
-! This file is linked in before the Values-Xx.o files and also before
-! crtbegin, with which perhaps it should be merged.
-
-
- .section ".init"
- .global _init
- .type _init,#function
- .align 4
-_init:
-#ifndef _FLAT
- save %sp, -96, %sp
-#else
- add %sp, -96, %sp
- st %o7, [%sp + 64]
-#endif
-
-
- .section ".fini"
- .global _fini
- .type _fini,#function
- .align 4
-_fini:
-#ifndef _FLAT
- save %sp, -96, %sp
-#else
- add %sp, -96, %sp
- st %o7, [%sp + 64]
-#endif
-
-
-
-
diff --git a/libgloss/sparc_leon/crtn.S b/libgloss/sparc_leon/crtn.S
deleted file mode 100644
index ec85b3a29..000000000
--- a/libgloss/sparc_leon/crtn.S
+++ /dev/null
@@ -1,63 +0,0 @@
-
-! Copyright (C) 1992 Free Software Foundation, Inc.
-! Written By David Vinayak Henkel-Wallace, June 1992
-!
-! This file 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.
-!
-! In addition to the permissions in the GNU General Public License, the
-! Free Software Foundation gives you unlimited permission to link the
-! compiled version of this file with other programs, and to distribute
-! those programs without any restriction coming from the use of this
-! file. (The General Public License restrictions do apply in other
-! respects; for example, they cover modification of the file, and
-! distribution when not linked into another program.)
-!
-! This file 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; see the file COPYING. If not, write to
-! the Free Software Foundation, 59 Temple Place - Suite 330,
-! Boston, MA 02111-1307, USA.
-!
-! As a special exception, if you link this library with files
-! compiled with GCC to produce an executable, this does not cause
-! the resulting executable to be covered by the GNU General Public License.
-! This exception does not however invalidate any other reasons why
-! the executable file might be covered by the GNU General Public License.
-!
-
-! This file just makes sure that the .fini and .init sections do in
-! fact return. Users may put any desired instructions in those sections.
-! This file is the last thing linked into any executable.
-
- .file "crtn.s"
-
- .section ".init"
- .align 4
-#ifndef _FLAT
- ret
- restore
-#else
- ld [%sp+64], %o7
- retl
- add %sp, 96, %sp
-#endif
-
- .section ".fini"
- .align 4
-
-#ifndef _FLAT
- ret
- restore
-#else
- ld [%sp+64], %o7
- retl
- add %sp, 96, %sp
-#endif
-
diff --git a/libgloss/sparc_leon/etrap.S b/libgloss/sparc_leon/etrap.S
deleted file mode 100644
index 7c4fe17d3..000000000
--- a/libgloss/sparc_leon/etrap.S
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/winmacros.h>
-
-/* Registers to not touch at all. */
-#define t_psr l0 /* Set by caller */
-#define t_pc l1 /* Set by caller */
-#define t_npc l2 /* Set by caller */
-#define t_wim l3 /* Set by caller */
-#define t_twinmask l4 /* Set at beginning of this entry routine. */
-#define t_kstack l5 /* Set right before pt_regs frame is built */
-#define t_retpc l6 /* If you change this, change winmacro.h header file */
-#define t_systable l7 /* Never touch this, could be the syscall table ptr. */
-#define curptr g6 /* Set after pt_regs frame is built */
-
- /* Number of register windows */
- .global _nwindows_min1, _nwindows
-
- .text
- .align 4
- .globl leonbare_trapsetup
-
-leonbare_trapsetup:
-
-#ifdef _FLAT
- restore
- RW_STORE(sp)
- save
-#endif
-
-#ifndef _SOFT_FLOAT
- /* build a pt_regs trap frame. */
- sub %fp, (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ), %t_kstack
- PT_STORE_ALL(t_kstack, t_psr, t_pc, t_npc, g2)
-
- /* build a fp_regs trap frame. */
- sethi %hi(fpustate_current), %g2
- ld [%g2+%lo(fpustate_current)], %g3
- st %g3,[%t_kstack + (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ - 4)]
- add %t_kstack,SF_REGS_SZ + PT_REGS_SZ,%g3
- st %g3, [%g2+%lo(fpustate_current)]
-
-#else
- /* build a pt_regs trap frame.
- */
- sub %fp, (SF_REGS_SZ + PT_REGS_SZ), %t_kstack
- PT_STORE_ALL(t_kstack, t_psr, t_pc, t_npc, g2)
-#endif
-
-
-#ifndef _FLAT
- /* See if we are in the trap window. */
- mov 1, %t_twinmask
- sll %t_twinmask, %t_psr, %t_twinmask ! t_twinmask = (1 << psr)
- andcc %t_twinmask, %t_wim, %g0
- beq 1f ! in trap window, clean up
- nop
-
- /*-------------------------------------------------*/
- /* Spill , adjust %wim and go. */
- srl %t_wim, 0x1, %g2 ! begin computation of new %wim
-
- sethi %hi(_nwindows_min1), %g3
- ld [%g3+%lo(_nwindows_min1)], %g3
-
- sll %t_wim, %g3, %t_wim ! NWINDOWS-1
- or %t_wim, %g2, %g2
- and %g2, 0xff, %g2
-
- save %g0, %g0, %g0 ! get in window to be saved
-
- /* Set new %wim value */
- wr %g2, 0x0, %wim
-
- /* Save the kernel window onto the corresponding stack. */
- RW_STORE(sp)
-
- restore %g0, %g0, %g0
- /*-------------------------------------------------*/
-
-1:
-#endif
- /* Trap from kernel with a window available.
- * Just do it...
- */
- jmpl %t_retpc + 0x8, %g0 ! return to caller
- mov %t_kstack, %sp ! jump onto new stack
-
-
diff --git a/libgloss/sparc_leon/etrap_fast.S b/libgloss/sparc_leon/etrap_fast.S
deleted file mode 100644
index d6cab9272..000000000
--- a/libgloss/sparc_leon/etrap_fast.S
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/winmacros.h>
-
-/* Registers to not touch at all. */
-#define t_psr l0 /* Set by caller */
-#define t_pc l1 /* Set by caller */
-#define t_npc l2 /* Set by caller */
-#define t_wim l3 /* Set by caller */
-#define t_twinmask l4 /* Set at beginning of this entry routine. */
-#define t_kstack l5 /* Set right before pt_regs frame is built */
-#define t_retpc l6 /* If you change this, change winmacro.h header file */
-#define t_systable l7 /* Never touch this, could be the syscall table ptr. */
-#define curptr g6 /* Set after pt_regs frame is built */
-
- /* Number of register windows */
- .global _nwindows_min1, _nwindows
-
- .text
- .align 4
- .globl leonbare_trapsetup_fast
-
-/* etap entry special for irqtrap.S */
-leonbare_trapsetup_fast:
-
-#ifdef _FLAT
- restore
- RW_STORE(sp)
- save
-#endif
-
-#ifndef _SOFT_FLOAT
- /* build a pt_regs trap frame. */
- sub %fp, (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ), %t_kstack
- st %t_psr, [%t_kstack + (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ - 8)] /* sparc_fpuwindow_regs.irqpsr */
-
- set SPARC_PSR_EF_MASK, %t_twinmask
- andn %t_psr, %t_twinmask, %t_psr ! fpu off
-
- PT_STORE_ALL_FAST(t_kstack, t_psr, t_pc, t_npc, g2)
- /*PT_STORE_GLOBALS(t_kstack)*/
-
- /* build a fp_regs trap frame. */
- sethi %hi(fpustate_current), %g2
- ld [%g2+%lo(fpustate_current)], %g3
- st %g3,[%t_kstack + (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ - 4)] /* sparc_fpuwindow_regs.lastctx */
- add %t_kstack,SF_REGS_SZ + PT_REGS_SZ,%g3
- st %g3, [%g2+%lo(fpustate_current)]
- st %g0, [%g3 + FW_FSR]
-#else
- /* build a pt_regs trap frame.
- */
- sub %fp, (SF_REGS_SZ + PT_REGS_SZ), %t_kstack
- PT_STORE_ALL_FAST(t_kstack, t_psr, t_pc, t_npc, g2)
- /*PT_STORE_GLOBALS(t_kstack)*/
-#endif
-
-
-#ifndef _FLAT
- /* See if we are in the trap window . */
- mov 1, %t_twinmask
- sll %t_twinmask, %t_psr, %t_twinmask ! t_twinmask = (1 << psr)
- andcc %t_twinmask, %t_wim, %g0
- beq 1f ! in trap window, clean up
- nop
-
- /*-------------------------------------------------*/
- /* Spill , adjust %wim and go. */
- srl %t_wim, 0x1, %g2 ! begin computation of new %wim
-
- sethi %hi(_nwindows_min1), %g3
- ld [%g3+%lo(_nwindows_min1)], %g3
-
- sll %t_wim, %g3, %t_wim ! NWINDOWS-1
- or %t_wim, %g2, %g2
- and %g2, 0xff, %g2
-
- save %g0, %g0, %g0 ! get in window to be saved
-
- /* Set new %wim value */
- wr %g2, 0x0, %wim
-
- /* Save the kernel window onto the corresponding stack. */
- RW_STORE(sp)
-
- restore %g0, %g0, %g0
- /*-------------------------------------------------*/
-
-1:
-#endif
- /* Trap from kernel with a window available.
- * Just do it...
- */
- jmpl %t_retpc + 0x8, %g0 ! return to caller
- mov %t_kstack, %sp ! jump onto new stack
-
-
diff --git a/libgloss/sparc_leon/fpu.S b/libgloss/sparc_leon/fpu.S
deleted file mode 100644
index b55b20d00..000000000
--- a/libgloss/sparc_leon/fpu.S
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/asmmacro.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/winmacros.h>
-#include <asm-leon/leon.h>
-
-#ifndef _SOFT_FLOAT
-
- .seg "text"
- /* ------- */
- .weak _fpdis_enable_svt
- .set _fpdis_enable_svt,__fpdis_enable_svt
- .weak _fpdis_enable
- .set _fpdis_enable,__fpdis_enable
- /* ------- */
- !.global _fpdis_enable,_fpdis_enable_svt
-__fpdis_enable_svt:
-__fpdis_enable:
-
- set SPARC_PSR_EF_MASK,%l3
- or %l0,%l3,%l0
- or %l0,0xf00, %l3 ! PIL up to 15, enable fpu
- wr %l3,0, %psr ! restore the condition flags, enable fpu
- nop
- nop
- nop
-
- mov %psr, %l3 ! check if fpu is present
- set SPARC_PSR_EF_MASK,%l4
- andcc %l3, %l4, %l3
- bne 4f
- nop
-
- ta 0 ! no fpu present, halt
-
-4:
- set fpustate_current,%l4
-
- ld [%l4],%l4
- set fpustate_owner,%l5
- ld [%l5],%l5
- cmp %l4,%l5
- beq mpfnostore
- nop
- cmp %g0,%l5
- beq mpfstore
- nop
-
- FW_STORE(%l5)
-
-mpfstore:
- set fpustate_owner,%l6
- st %l4,[%l6]
- cmp %g0,%l4
- beq mpfnostore
- nop
-
- FW_LOAD(%l4)
-
-mpfnostore:
- wr %l0,0, %psr ! restore the condition flags, enable fpu
- nop
- nop
- nop
-
- jmpl %l1, %g0
- rett %l2
-
- .seg "data"
-
- .global fpustate_default
- .align 8
-fpustate_default:
- .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0;
- .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0;
- .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0;
- .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0;
- .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0; .long 0;
- .global fpustate_owner
-fpustate_owner:
- .word fpustate_default ! pointer to FPU owning context
-
- .global fpustate_current
-fpustate_current:
- .word fpustate_default ! pointer to current threads FPU context
-
-#endif
diff --git a/libgloss/sparc_leon/gettimeofday.c b/libgloss/sparc_leon/gettimeofday.c
deleted file mode 100644
index 088184ca0..000000000
--- a/libgloss/sparc_leon/gettimeofday.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/errno.h>
-#include <asm-leon/elfmacro.h>
-#include <asm-leon/leon.h>
-#include <asm-leon/irq.h>
-#include <asm-leon/jiffies.h>
-#include <asm-leon/param.h>
-#include <asm-leon/leoncompat.h>
-
-static __inline__ unsigned long do_gettimeoffset ();
-
-
-extern int *rtc;
-
-unsigned long wall_jiffies = INITIAL_JIFFIES;
-unsigned long tick_nsec = TICK_NSEC;
-unsigned long tick_usec = TICK_NSEC / 1000;
-unsigned long seperateirq = 1;
-unsigned long noalarm = 1;
-unsigned long force_noalarm = 0;
-unsigned long nodotimer = 0;
-int leonbare_hz = HZ;
-
-
-void settimer ();
-inline void
-do_timer (struct leonbare_pt_regs *regs)
-{
- unsigned long ticks;
- jiffies_64++;
- ticks = jiffies - wall_jiffies;
- if (ticks)
- {
- wall_jiffies += ticks;
- do
- {
- ticks--;
- xtime.tv_nsec += tick_nsec;
- if (xtime.tv_nsec >= 1000000000)
- {
- xtime.tv_nsec -= 1000000000;
- xtime.tv_sec++;
- }
- }
- while (ticks);
- }
- settimer ();
-}
-
-int
-leonbare_alarm (int irq, void *arg, struct leonbare_pt_regs *regs)
-{
- settimer ();
-}
-
-extern clock_t (*clock_custom) (void);
-clock_t
-leonbare_clock_custom ()
-{
- int hz = leonbare_hz ? leonbare_hz : HZ;
- return (clock_t) ((jiffies * (CLOCK_TICK_RATE / hz)) + do_gettimeoffset ());
-}
-
-
-tickerhandler ticker_callback = 0;
-int
-leonbare_tick (int irq, void *arg, struct leonbare_pt_regs *regs)
-{
- unsigned int ctrl;
- if (!seperateirq)
- {
- /* only leon3 comes here */
- if (!noalarm)
- {
- ctrl = LEON3_GpTimer_Regs->e[1].ctrl;
- if (ctrl & LEON3_GPTIMER_IP)
- {
- leonbare_alarm (irq, arg, regs);
- LEON3_GpTimer_Regs->e[1].ctrl = ctrl & ~LEON3_GPTIMER_IP;
- }
- }
- ctrl = LEON3_GpTimer_Regs->e[0].ctrl;
- if (!(ctrl & LEON3_GPTIMER_IP))
- {
- return 0;
- }
- LEON3_GpTimer_Regs->e[0].ctrl = ctrl & ~LEON3_GPTIMER_IP;
- }
-
- if (!nodotimer)
- {
- do_timer (regs);
- }
- if (ticker_callback)
- {
- ticker_callback (regs);
- }
- return 0;
-}
-
-static struct irqaction irqact1 = { (irqhandler) leonbare_tick, 0, 0, 0 };
-static struct irqaction irqact2 = { (irqhandler) leonbare_alarm, 0, 0, 0 };
-
-void
-leonbare_init_ticks ()
-{
- int i, irq1 = 0, irq2 = 0;
- int hz = leonbare_hz ? leonbare_hz : HZ;
- amba_apb_device dev[1];
-
- //---------------------
- switch (LEONCOMPAT_VERSION)
- {
- case 3:
- default:
- amba_init ();
- if (LEON3_GpTimer_Regs && LEON3_IrqCtrl_Regs)
- {
- if ((LEON3_GpTimer_Regs->config & LEON3_GPTIMER_CONFIG_TIMERMASK) >=
- 2 && force_noalarm == 0)
- noalarm = 0;
- if (!(LEON3_GpTimer_Regs->config & LEON3_GPTIMER_CONFIG_SEPERATE))
- seperateirq = 0;
- LEON3_GpTimer_Regs->e[0].val = 0;
- LEON3_GpTimer_Regs->e[0].rld = (((CLOCK_TICK_RATE / hz) - 1));
- LEON3_GpTimer_Regs->e[0].ctrl = 0;
- LEON3_GpTimer_Regs->e[0].ctrl =
- LEON3_GPTIMER_EN |
- LEON3_GPTIMER_RL | LEON3_GPTIMER_LD | LEON3_GPTIMER_IRQEN;
- irq1 = LEON3_GpTimer_Irq;
- irq2 = LEON3_GpTimer_Irq + 1;
- }
- break;
- }
- //---------------------
-
- if (irq1)
- {
- clock_custom = leonbare_clock_custom;
- chained_catch_interrupt (irq1, &irqact1);
- leonbare_enable_irq (irq1);
- }
- if (irq2 && (!noalarm) && seperateirq)
- {
- chained_catch_interrupt (irq2, &irqact2);
- leonbare_enable_irq (irq2);
- }
-}
-
-
-//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
-static __inline__ unsigned long
-do_gettimeoffset ()
-{
- unsigned long usec = 0;
- //---------------------
- switch (LEONCOMPAT_VERSION)
- {
- case 3:
- default:
- usec = ((LEON3_GpTimer_Regs->e[0].rld & 0x7fffff) -
- (LEON3_GpTimer_Regs->e[0].val & 0x7fffff));
- break;
- }
- //---------------------
- return usec;
-}
-
-/* get usec (timeval) resolution,
- * could use nsec (timespec) because pthread use it (todo) */
-void
-do_gettimeofday (struct timeval *tv)
-{
-
- unsigned long flags;
- unsigned long seq;
- unsigned long usec, sec;
-
- do
- {
- unsigned long lost;
- seq = jiffies;
-
- usec = do_gettimeoffset ();
- lost = jiffies - wall_jiffies;
-
- if (unlikely (lost))
- {
- usec += lost * tick_usec;
- }
-
- sec = xtime.tv_sec;
- usec += (xtime.tv_nsec / 1000);
- }
- while (seq != jiffies);
-
- while (usec >= 1000000)
- {
- usec -= 1000000;
- sec++;
- }
-
- tv->tv_sec = sec;
- tv->tv_usec = usec;
-}
-
-int
-gettimeofday (struct timeval *__p, void *__tz)
-{
- do_gettimeofday (__p);
- return 0;
-}
-
-//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
-static int
-do_settimeofday (struct timespec *tv)
-{
- time_t sec = tv->tv_sec;
- long nsec = tv->tv_nsec;
-
- if ((unsigned long) nsec >= NSEC_PER_SEC)
- return EINVAL;
-
- /*
- * This is revolting. We need to set "xtime" correctly. However, the
- * value in this location is the value at the most recent update of
- * wall time. Discover what correction gettimeofday() would have
- * made, and then undo it!
- */
- nsec -= 1000 * (do_gettimeoffset () +
- (jiffies - wall_jiffies) * (USEC_PER_SEC / HZ));
-
- set_normalized_timespec (&xtime, sec, nsec);
- return 0;
-}
-
-int
-settimeofday (const struct timeval *tv, const struct timezone *tz)
-{
- struct timespec ts;
- ts.tv_sec = tv->tv_sec;
- ts.tv_nsec = tv->tv_usec * NSEC_PER_USEC;
- return do_settimeofday (&ts);
-}
diff --git a/libgloss/sparc_leon/initcalls.c b/libgloss/sparc_leon/initcalls.c
deleted file mode 100644
index 773a345e2..000000000
--- a/libgloss/sparc_leon/initcalls.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/elfmacro.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-void
-_call_initcalls ()
-{
-
- initcall_t *p = &__leonbare_initcall_start;
- while (p < &__leonbare_initcall_end)
- {
- if (*p)
- {
- (*p) ();
- }
- p++;
- }
-}
diff --git a/libgloss/sparc_leon/io.c b/libgloss/sparc_leon/io.c
deleted file mode 100644
index 282e513da..000000000
--- a/libgloss/sparc_leon/io.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#define DREADY 1
-#define TREADY 4
-
-extern volatile int *console;
-
-void
-outbyte (int c)
-{
- volatile int *rxstat;
- volatile int *rxadata;
- int rxmask;
- while ((console[1] & TREADY) == 0);
- console[0] = (0x0ff & c);
- if (c == '\n')
- {
- while ((console[1] & TREADY) == 0);
- console[0] = (int) '\r';
- }
-}
-
-int
-inbyte (void)
-{
- if (!console)
- return (0);
- while (!(console[1] & DREADY));
- return console[0];
-}
diff --git a/libgloss/sparc_leon/irqinstall.S b/libgloss/sparc_leon/irqinstall.S
deleted file mode 100644
index abba2546f..000000000
--- a/libgloss/sparc_leon/irqinstall.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-
- /* l0: psr
- l1: pc
- l2: npc
- l3: wim
- l7: irqnr */
-
- .seg "text"
-
- .global locore_readtbr
-
-locore_readtbr:
- retl
- rd %tbr,%o0
-
diff --git a/libgloss/sparc_leon/irqtrap.S b/libgloss/sparc_leon/irqtrap.S
deleted file mode 100644
index d13757731..000000000
--- a/libgloss/sparc_leon/irqtrap.S
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-#include <asm-leon/winmacros.h>
-#include <asm-leon/leon.h>
-
- /* l0: psr
- l1: pc
- l2: npc
- l3: wim
- l7: irqnr */
-
- .seg "text"
-
- /* ------- */
- .weak _leonbare_irq_entry_svt
- .set _leonbare_irq_entry_svt,__leonbare_irq_entry_svt
- .weak leonbare_irq_entry
- .set leonbare_irq_entry,_leonbare_irq_entry
- /* ------- */
- !.global leonbare_irq_entry,_leonbare_irq_entry_svt
- .global _irqtbl, _irqtrap, handler_irq, fpustate_current
-
-__leonbare_irq_entry_svt: /* irq from svt trap dispatcher */
- sub %l6,0x10, %l7
- rd %wim, %l3
-
-_leonbare_irq_entry:
- set SPARC_PSR_EF_MASK,%l6
- andn %l0, %l6, %l0 ! fpu off
-
- SAVE_ALL
-
- set nestcount,%o0
- ld [%o0],%o1
- add %o1,1,%o1
- st %o1,[%o0]
-
-#ifdef CONFIG_LEONBARE_NONESTEDIRQ
- or %l0, SPARC_PSR_PIL_MASK, %o0 ! no nested irqs
- wr %o0, SPARC_PSR_ET_MASK, %psr
- WRITE_PAUSE
-#else
- sll %l7,SPARC_PSR_PIL_SHIFT,%o1
- andn %l0,SPARC_PSR_PIL_MASK,%o0
- or %l0, %o1, %o1
- set nestedirq,%o0
- ld [%o0],%o0
- cmp %g0,%o0 ! no nested irqs?
- beq,a .L1
- or %o1, SPARC_PSR_PIL_MASK, %o1
-.L1:
- wr %o1, SPARC_PSR_ET_MASK, %psr
- WRITE_PAUSE
-#endif
-
- mov %l7, %o0 ! irq level
- call handler_irq ! void handler_irq (int irq, struct leonbare_pt_regs *pt_regs)
-#ifndef _SOFT_FLOAT
- add %sp, FW_REGS_SZ + 8 + SF_REGS_SZ , %o1 ! pt_regs ptr
-#else
- add %sp, SF_REGS_SZ , %o1 ! pt_regs ptr
-#endif
-
- or %l0, SPARC_PSR_PIL_MASK, %o1
- wr %o1, SPARC_PSR_ET_MASK, %psr ! enable nesting again, keep ET up
- WRITE_PAUSE
-
- set nestcount,%o0
- ld [%o0],%o1
- sub %o1,1,%o1
- st %o1,[%o0]
-
- RESTORE_ALL
-
- .seg "data"
- .global nestedirq
- .align 4
-nestedirq:
- .long 0
- .global nestcount
- .align 4
-nestcount:
- .long 0
diff --git a/libgloss/sparc_leon/irqtrap_fast.S b/libgloss/sparc_leon/irqtrap_fast.S
deleted file mode 100644
index 5f74c0407..000000000
--- a/libgloss/sparc_leon/irqtrap_fast.S
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-#include <asm-leon/winmacros.h>
-#include <asm-leon/leon.h>
-
- /* l0: psr
- l1: pc
- l2: npc
- l3: wim
- l7: irqnr */
-
- .seg "text"
-
- /* ------- */
- .weak _leonbare_irq_entry_svt
- .set _leonbare_irq_entry_svt,__leonbare_irq_entry_svt
- .weak leonbare_irq_entry
- .set leonbare_irq_entry,_leonbare_irq_entry
- /* ------- */
- !.global leonbare_irq_entry,_leonbare_irq_entry_svt
- .global _irqtbl, _irqtrap, handler_irq, fpustate_current
-
-#define FASTIRQ_ENABLE
-/*#define FASTIRQ_DYNAMIC*/ /* depend on FASTIRQ_ENABLE */
-
-__leonbare_irq_entry_svt: /* irq from svt trap dispatcher */
- sub %l6,0x10, %l7
- rd %wim, %l3
-
-_leonbare_irq_entry:
-
- SAVE_ALL_FAST(.L3) ! fast irq processing, volatile %g6, use frame
-
-.L3:
-#ifdef __threadx__
- set _tx_thread_system_state, %o0
- ld [%o0],%o1
- add %o1,1,%o1
- st %o1,[%o0]
-#endif
-
- set nestcount,%o0
- ld [%o0],%o1
- add %o1,1,%o1
- st %o1,[%o0]
-
-#ifdef CONFIG_LEONBARE_NONESTEDIRQ
- or %l0, SPARC_PSR_PIL_MASK, %o0 ! no nested irqs
- wr %o0, SPARC_PSR_ET_MASK, %psr
- WRITE_PAUSE
-#else
- sll %l7,SPARC_PSR_PIL_SHIFT,%o1
- andn %l0,SPARC_PSR_PIL_MASK,%o0
- or %o0, %o1, %o1
- set nestedirq,%o0
- ld [%o0],%o0
- cmp %g0,%o0 ! no nested irqs?
- beq,a .L1
- or %o1, SPARC_PSR_PIL_MASK, %o1
-.L1:
- wr %o1, SPARC_PSR_ET_MASK, %psr
- WRITE_PAUSE
-#endif
-
- mov %l7, %o0 ! irq level
- call handler_irq ! void handler_irq (int irq, struct leonbare_pt_regs *pt_regs)
-#ifndef _SOFT_FLOAT
- add %sp, FW_REGS_SZ + 8 + SF_REGS_SZ , %o1 ! pt_regs ptr
-#else
- add %sp, SF_REGS_SZ , %o1 ! pt_regs ptr
-#endif
-
- or %l0, SPARC_PSR_PIL_MASK, %o1
- wr %o1, SPARC_PSR_ET_MASK, %psr ! enable nesting again, keep ET up
- WRITE_PAUSE
-
- set nestcount,%o0
- ld [%o0],%o1
- sub %o1,1,%o1
- st %o1,[%o0]
-
-#ifdef __threadx__
- set _tx_thread_system_state, %o0
- ld [%o0],%o1
- sub %o1,1,%o1
- st %o1,[%o0]
-#endif
-
- RESTORE_ALL_FAST
-
- .seg "data"
- .global nestedirq
- .align 4
-nestedirq:
- .long 0
- .global fastirq
- .align 4
-fastirq:
- .long 0
- .global nestcount
- .align 4
-nestcount:
- .long 0
diff --git a/libgloss/sparc_leon/jiffies.c b/libgloss/sparc_leon/jiffies.c
deleted file mode 100644
index 61d320dcf..000000000
--- a/libgloss/sparc_leon/jiffies.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/errno.h>
-#include <asm-leon/elfmacro.h>
-#include <asm-leon/leon.h>
-#include <asm-leon/irq.h>
-#include <asm-leon/irq.h>
-#include <asm-leon/jiffies.h>
-#include <asm-leon/param.h>
-#include <asm-leon/leoncompat.h>
-
-struct timespec xtime __attribute__ ((aligned (16)));
-u64 jiffies_64 = INITIAL_JIFFIES;
diff --git a/libgloss/sparc_leon/kernel.c b/libgloss/sparc_leon/kernel.c
deleted file mode 100644
index ecdeb219c..000000000
--- a/libgloss/sparc_leon/kernel.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-
-struct leonbare_kernel leonbare_kernel;
-
-/*
- * queue 0: [ <acc=2>],
- * queue 1: [ <acc=10>, <acc=8>,<acc=8>,<acc=1> ],
- * queue 2: [ ... ],
- * ...
- * queue n: [ ... ]
- *
- * Seach through ready queue [0 - LEONBARE_RUNQ_READY_NR-1] for the
- * first thread in a queue'ss head to discover
- * leonbare_thread_tick_callback() will put threads that have their th_caccount
- * consumed into the prepare-run queues. th_caccount is already initialized
- * to the value for the next schedule round. So all there is to do is to
- * move the to prepare-run queues to run queues [0 - LEONBARE_RUNQ_READY_NR-1].
- * return the first thread in any queue, similary to leonbare_sched_next().
- * Using LEONBARE_KR_RUNQ_WHICH and leonbare_thread.th_runq_which one can
- * determine weather the thread is in a runqueue or a prepare-runqueue:
- * LEONBARE_KR_RUNQ_WHICH == leonbare_thread.th_runq_which : thread in runqueue
- * LEONBARE_KR_RUNQ_WHICH != leonbare_thread.th_runq_which : thread in prepare-runqueue
- * after a leonbare_thread_tick_callback() or a run queue change, call
- * leonbare_sched_update() to update LEONBARE_KR_NEXT and
- * LEONBARE_KR_NEED_SCHEDULE
- */
-int
-leonbare_sched_update ()
-{
- int idx;
- leonbare_thread_t n = 0;
- int i = 0;
- LEONBARE_VERIFYIRQDISABLED ();
- LEONBARE_VERIFYSCHED ();
- for (i = 0; i < LEONBARE_RUNQ_READY_NR; i++)
- {
- leonbare_thread_t c;
- if (!LBTAILQ_EMPTY (LEONBARE_KR_RUNQ (i)))
- {
- n = LBTAILQ_FIRST (LEONBARE_KR_RUNQ (i));
- break;
- }
- }
- if (!n)
- {
- for (idx = 0; idx < LEONBARE_RUNQ_READY_NR; idx++)
- {
- struct leonbare_thread_queue *h0 =
- (struct leonbare_thread_queue *) LEONBARE_KR_RUNQ (idx);
- struct leonbare_thread_queue *h1 = (struct leonbare_thread_queue *)
- LEONBARE_KR_RUNQ (idx + LEONBARE_RUNQ_PREPARE_IDX);
- if (LBTAILQ_EMPTY (h1))
- {
- LBTAILQ_INIT (h0);
- }
- else
- {
- *h0 = *h1;
- if (LBTAILQ_FIRST (h0))
- {
- LBTAILQ_FIRST (h0)->th_runq.tqe_prev = &(h0)->tqh_first;
- }
- if (!n)
- {
- n = LBTAILQ_FIRST (h0);
- }
- }
- }
- for (idx = 0; idx < LEONBARE_RUNQ_READY_NR; idx++)
- {
- LBTAILQ_INIT (LEONBARE_KR_RUNQ (idx + LEONBARE_RUNQ_PREPARE_IDX));
- }
- LEONBARE_KR_RUNQ_WHICH++;
- LEONBARE_VERIFYSCHED ();
- LEONBARE_PRINTQUEUES ();
- }
- LEONBARE_KR_NEXT = n;
- return (LEONBARE_KR_NEED_SCHEDULE);
-}
-
-/* called in the timer irq handling. Decrements the
- * th_caccount field. On consumption of th_caccount the
- * thread will be removed from the ready queue nad placed into the
- * prepare-runqueue for later readdition by leonbare_sched_readyprepare()
- * called from gettimeofday.c's installed ticker_callback callback
- * leonbare_thread_tick_callback() might change the kernel state in which case
- * state on return from leonbare_thread_tick_callback() leonbare_thread_schedule_callback()
- * will be called from rtrap_fast.S .
- */
-int
-leonbare_thread_tick_callback ()
-{
- LEONBARE_PROTECT_DECL (flags);
- unsigned int r;
- volatile leonbare_thread_t c = LEONBARE_KR_CURRENT;
- leonbare_thread_t i;
- LBDEBUG_FNCALL;
- if (c && LEONBARE_KR_IS_PREEMPTION)
- {
-
- LEONBARE_PROTECT_KERNEL_START ();
- {
-
- LEONBARE_VERIFYIRQDISABLED ();
- LEONBARE_VERIFYSCHED ();
-
- if ((--c->th_caccount) < 0)
- {
- LBDEBUG_HEADER_PRINTF (LBDEBUG_QUEUE_NR, "remove %s(%x)\n",
- LEONBARE_TH_NAME_DBG (c), c);
- LBTAILQ_REMOVE (LEONBARE_KR_RUNQ (c->th_runq_idx), c, th_runq);
- LBTAILQ_INSERT_TAIL (LEONBARE_KR_RUNQ
- (c->th_runq_idx + LEONBARE_RUNQ_PREPARE_IDX),
- c, th_runq);
- c->th_caccount = c->th_account;
- c->th_runq_which++;
- }
- else
- {
- /* todo: round robbin scheme */
- }
- }
- LEONBARE_PROTECT_KERNEL_END ();
- }
- r = leonbare_sched_update ();
- return r;
-}
-
-/* called from rtrap_fast.S's installed schedule_callback callback */
-int
-leonbare_thread_schedule_callback (struct leonbare_pt_regs *ptregs)
-{
- unsigned int retval;
- LBDEBUG_FNCALL;
- if (LEONBARE_KR_IS_IN_KERNEL == 0 && LEONBARE_KR_NEED_SCHEDULE)
- {
-
- leonbare_sched ();
-
- //KERNEL_ENTER;
- //KERNEL_EXIT(LEONBARE_KR_NEED_SCHEDULE, retval);
- }
- LBDEBUG_FNEXIT;
-}
-
-
-struct leonbare_thread _thread_main;
-int
-leonbare_thread_init ()
-{
- int i;
- LBDEBUG_FNCALL;
-
- memset ((void *) &_thread_main, 0, sizeof (_thread_main));
- _thread_main.th_reentp = _impure_ptr;
- _thread_main.th_name = "<main>";
- _thread_main.th_runq_idx = 0;
- _thread_main.th_pri_idx = 0;
- _thread_main.th_account = 0;
-
- LBTAILQ_INIT (LEONBARE_KR_ALLQ);
- for (i = 0; i < LEONBARE_RUNQ_NR; i++)
- {
- LBTAILQ_INIT (LEONBARE_KR_RUNQ (i));
- }
- LBTAILQ_INIT (LEONBARE_KR_ALLM);
-
- /* queues */
- LBTAILQ_INSERT_TAIL (LEONBARE_KR_ALLQ, &_thread_main, th_allq);
-
- /* inseart into ready queue 0 at head */
- LBTAILQ_INSERT_HEAD (LEONBARE_KR_RUNQ (_thread_main.th_runq_idx),
- &_thread_main, th_runq);
-
- LEONBARE_KR_CURRENT = &_thread_main;
- LEONBARE_KR_IS_IN_KERNEL = 0;
-
- leonbare_init_ticks ();
- schedule_callback = (schedulehandler) leonbare_thread_schedule_callback;
- ticker_callback = (tickerhandler) leonbare_thread_tick_callback;
-
- /* disable later */
- LEONBARE_KR_IS_PREEMPTION = 1;
-
-
- LBDEBUG_FNEXIT;
-}
diff --git a/libgloss/sparc_leon/kernel_context.S b/libgloss/sparc_leon/kernel_context.S
deleted file mode 100644
index 0b8cad7aa..000000000
--- a/libgloss/sparc_leon/kernel_context.S
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/elfmacro.h>
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/winmacros.h>
-#include <asm-leon/leonbare_kernel.h>
-
- FUNC_EXPORT(_leonbare_kernel_switchto)
- FUNC_EXPORT(_leonbare_Stop)
-
- FUNC_IMPORT(leonbare_disable_traps)
-
- .text
-
-/* unsigned int _leonbare_kernel_switchto(struct leonbare_thread_ctx *thread,struct leonbare_thread_ctx *thread) */
-FUNC_BEGIN(_leonbare_kernel_switchto)
-
- /* =================================*/
- /* save context */
- /* =================================*/
-
- mov %o0, %g1
- mov %o1, %g2
- mov %o7, %g3
- rd %psr, %g4 /* psr.cwp should stay same because irq path rely on it. */
-
- call leonbare_disable_traps /* psr in %o0, modify %o0, %o1, %o7 */
- nop
-
- set TACODE_IRQCALL_FLUSH,%o1
- ta TACODE_IRQCALL
-
- st %g4, [%g1 + LEONBARE_THREAD_CTX_STACK_PSR] /* psr */
- set LEONBARE_THREAD_CTX_MAGIC,%g4
- st %g4, [%g1 + LEONBARE_THREAD_CTX_STACK_MAGIC]
-
- mov %g3, %o7 ! restore %o7
-
- LEONBARE_THREAD_CTX_STORE_INS(g1)
- LEONBARE_THREAD_CTX_STORE_LOCALS(g1)
- LEONBARE_THREAD_CTX_STORE_OUTS(g1)
-
- /* =================================*/
- /* restore context */
- /* =================================*/
-
- /* check valid context stack area */
- ld [%g2 + LEONBARE_THREAD_CTX_STACK_MAGIC], %o1
- set LEONBARE_THREAD_CTX_MAGIC,%o2
- cmp %o1, %o2
- beq 1f
- nop
-
- /* stop all */
- ta 0x0
-
-1:
- /* get psr */
- ld [%g2 + LEONBARE_THREAD_CTX_STACK_PSR],%g1 /* psr.cwp should stay same because irq path rely on it. */
- set SPARC_PSR_EF_MASK,%g3 ! clear ef bit
- andn %g1, %g3, %g1
-
- wr %g0,%wim
- nop; nop; nop;
-
- andn %g1, SPARC_PSR_ET_MASK, %g3 ! disable traps, up to PSR_EF imm andn ok
- wr %g3, %psr
- nop; nop; nop;
-
- LEONBARE_THREAD_CTX_LOAD_INS(g2)
- LEONBARE_THREAD_CTX_LOAD_LOCALS(g2)
- LEONBARE_THREAD_CTX_LOAD_OUTS(g2)
-
- SET_WIM_CWPMIN1(g1,o1,o2,o3,o4) ! calc wim from psr_cwp so that next restore traps
-
- wr %g1,%psr
- nop; nop; nop;
-
- retl
- nop
-
-FUNC_END(_leonbare_kernel_switchto)
-
-
-FUNC_BEGIN(_leonbare_Stop)
- ta 0x0
-FUNC_END(_leonbare_Stop)
diff --git a/libgloss/sparc_leon/kernel_debug.c b/libgloss/sparc_leon/kernel_debug.c
deleted file mode 100644
index 0374de77f..000000000
--- a/libgloss/sparc_leon/kernel_debug.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_queue.h>*/
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <stdarg.h>
-
-/*indent:
- indent -kr -i4 -ts4 -sob -l80 -ss -ncs -nut newlib-1.13.0/libgloss/sparc_leon/kernel*.c
- indent -kr -i4 -ts4 -sob -l80 -ss -ncs -nut *.h
- indent -kr -i4 -ts4 -sob -l80 -ss -ncs -nut *.c
-*/
-
-void leonbare_sched_printqueue ();
-
-int
-leonbare_sched_verify ()
-{
-#ifdef LBDEBUG_DO_ASSERT
- int i, j;
- leonbare_thread_t c, d;
- for (i = 0; i < LEONBARE_RUNQ_NR; i++)
- {
- LBTAILQ_FOREACH (c, LEONBARE_KR_RUNQ (i), th_runq)
- {
- if (i < LEONBARE_RUNQ_READY_NR)
- {
- LBPASSERT (c->th_runq_idx == i,
- "thread %s has wrong runq[%d] index (%d) ",
- LEONBARE_TH_NAME_DBG (c), i, c->th_runq_idx);
- LBPASSERT (c->th_runq_which == LEONBARE_KR_RUNQ_WHICH,
- "thread %s in runqueue[%d] has wrong th_runq_which(%d) (!=LEONBARE_KR_RUNQ_WHICH(%d))",
- LEONBARE_TH_NAME_DBG (c), i, c->th_runq_which,
- LEONBARE_KR_RUNQ_WHICH);
- }
- else if (i == LEONBARE_RUNQ_SUSPENDED_IDX)
- {
- LBPASSERT (c->th_flags & LEONBARE_TH_SUSPENDED,
- "thread %s in suspension queue has LEONBARE_TH_SUSPENDED not set ",
- LEONBARE_TH_NAME_DBG (c));
- }
- else if (i == LEONBARE_RUNQ_KILLED_IDX)
- {
- LBPASSERT (c->
- th_flags & (LEONBARE_TH_TERMINATED |
- LEONBARE_TH_FINISHED),
- "thread %s in killed queue has (LEONBARE_TH_TERMINATED | LEONBARE_TH_FINISHED) not set ",
- LEONBARE_TH_NAME_DBG (c));
- }
- else if (i >= LEONBARE_RUNQ_PREPARE_IDX &&
- i < (LEONBARE_RUNQ_PREPARE_IDX + LEONBARE_RUNQ_READY_NR))
- {
- LBPASSERT (c->th_runq_idx == (i - LEONBARE_RUNQ_PREPARE_IDX),
- "thread %s has wrong prepare-runq[%d] index (%d) ",
- LEONBARE_TH_NAME_DBG (c),
- i - LEONBARE_RUNQ_PREPARE_IDX, c->th_runq_idx);
- LBPASSERT (c->th_runq_which != LEONBARE_KR_RUNQ_WHICH,
- "thread %s in prepare-runqueue[%d] has wrong th_runq_which(%d) (==LEONBARE_KR_RUNQ_WHICH(%d))",
- LEONBARE_TH_NAME_DBG (c), i, c->th_runq_which,
- LEONBARE_KR_RUNQ_WHICH);
- }
-
- if (i != LEONBARE_RUNQ_KILLED_IDX)
- {
- LBPASSERT (!
- (c->
- th_flags & (LEONBARE_TH_TERMINATED |
- LEONBARE_TH_FINISHED)),
- "thread %s not in killed queue has (LEONBARE_TH_TERMINATED | LEONBARE_TH_FINISHED) set ",
- LEONBARE_TH_NAME_DBG (c));
- }
- if (i != LEONBARE_RUNQ_SUSPENDED_IDX)
- {
- LBPASSERT (!(c->th_flags & (LEONBARE_TH_SUSPENDED)),
- "thread %s not in suspend queue has LEONBARE_TH_SUSPENDED set ",
- LEONBARE_TH_NAME_DBG (c));
- }
-
- if (LBTAILQ_NEXT (c, th_runq))
- {
- LBPASSERT (c->th_account <=
- LBTAILQ_NEXT (c, th_runq)->th_account,
- "thread %s account is not sorted (%d<=%d)",
- LEONBARE_TH_NAME_DBG (c), c->th_account,
- LBTAILQ_NEXT (c, th_runq)->th_account);
- }
- }
- }
- LBTAILQ_FOREACH (c, LEONBARE_KR_ALLQ, th_allq)
- {
- if ((j = c->th_runq_idx) != -1)
- {
- LBPASSERT (j >= 0
- && j < LEONBARE_RUNQ_NR,
- "thread %s has wrong runq index (%d) ",
- LEONBARE_TH_NAME_DBG (c), c->th_runq_idx);
- LBTAILQ_FOREACH (d, LEONBARE_KR_RUNQ (j), th_runq)
- {
- if (d == c)
- {
- break;
- }
- }
- /*LBPASSERT(d,"thread %s is not in runq[%d] ",LEONBARE_TH_NAME_DBG(c),j); */
- }
- }
-#endif
-}
-
-int
-leonbare_debug_printf (const char *fmt, ...)
-{
- va_list ap;
- va_start (ap, fmt);
- vprintf (fmt, ap);
- va_end (ap);
- return 0;
-}
-
-void
-leonbare_sched_printqueue ()
-{
- int i, j;
- leonbare_thread_t c;
- for (i = 0; i < LEONBARE_RUNQ_NR; i++)
- {
- LBDEBUG_HEADER_PRINTF (LBDEBUG_QUEUE_NR, "runq[%d]:[", i);
- LBTAILQ_FOREACH (c, LEONBARE_KR_RUNQ (i), th_runq)
- {
- LBDEBUG (LBDEBUG_QUEUE_NR, "%s[0x%x](%d),", LEONBARE_TH_NAME_DBG (c),
- c, c->th_account);
- }
- LBDEBUG (LBDEBUG_QUEUE_NR, "]\n", 0);
- }
-}
diff --git a/libgloss/sparc_leon/kernel_debug_var.c b/libgloss/sparc_leon/kernel_debug_var.c
deleted file mode 100644
index 47b8e6916..000000000
--- a/libgloss/sparc_leon/kernel_debug_var.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_queue.h>*/
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <stdarg.h>
-
-int leonbare_debug = -1;
diff --git a/libgloss/sparc_leon/kernel_mm.c b/libgloss/sparc_leon/kernel_mm.c
deleted file mode 100644
index fd11bb0e1..000000000
--- a/libgloss/sparc_leon/kernel_mm.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
diff --git a/libgloss/sparc_leon/kernel_mutex.c b/libgloss/sparc_leon/kernel_mutex.c
deleted file mode 100644
index a81344932..000000000
--- a/libgloss/sparc_leon/kernel_mutex.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_queue.h>*/
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-
-leonbare_mutex_t
-leonbare_mutex_init (leonbare_mutex_t m)
-{
- m->mx_owner_cnt = 0;
- m->mx_owner = 0;
- LBTAILQ_INIT (&(m->mx_threads));
-
- LEONBARE_PROTECT_KERNEL_START ();
- {
- LBTAILQ_INSERT_TAIL (LEONBARE_KR_ALLM, m, mx_allm);
- }
- LEONBARE_PROTECT_KERNEL_END ();
-
-}
-
-int
-_self__leonbare_mutex_lock (leonbare_mutex_t m, int wait)
-{
- int ret = LEONBARE_MUTEX_LOCK_OK;
- leonbare_thread_t c;
-
- LEONBARE_PROTECT_MUTEXSTRUCT_START (m);
- while (1)
- {
- if (LEONBARE_MUTEX_OWNER_GET (m) == 0)
- {
- LEONBARE_MUTEX_OWNER_SET (m, LEONBARE_KR_CURRENT);
- LEONBARE_MUTEX_OWNER_CNT_SET (m, 0);
- LBTAILQ_INSERT_TAIL (&c->th_mutex_locked, m, mx_locked);
- ret = LEONBARE_MUTEX_LOCK_OK;
- break;
- }
- else if (m->mx_owner == LEONBARE_KR_CURRENT)
- {
- m->mx_owner_cnt++;
- ret = LEONBARE_MUTEX_LOCK_OK;
- break;
- }
- LBTAILQ_INSERT_TAIL (&m->mx_threads, c, th_mutex);
- current_suspend ();
- }
- LEONBARE_PROTECT_MUTEXSTRUCT_END (m);
- return ret;
-}
-
-int
-leonbare_mutex_unlock (leonbare_mutex_t m)
-{
- int ret = LEONBARE_MUTEX_UNLOCK_ERROR;
- leonbare_thread_t c, h;
-
- LEONBARE_PROTECT_MUTEXSTRUCT_START (m);
- {
- c = LEONBARE_KR_CURRENT;
- if (m->mx_owner != c)
- {
- ret = LEONBARE_MUTEX_UNLOCK_OK;
- }
- else if (m->mx_owner == c && m->mx_owner_cnt)
- {
- m->mx_owner_cnt--;
- ret = LEONBARE_MUTEX_UNLOCK_OK;
- }
- else if ((h = LBTAILQ_FIRST (&m->mx_threads)))
- {
- LBTAILQ_REMOVE (&m->mx_threads, h, th_mutex);
- leonbare_thread_resume (h);
- ret = LEONBARE_MUTEX_UNLOCK_OK;
- }
- }
- LEONBARE_PROTECT_MUTEXSTRUCT_END (m);
- return ret;
-}
diff --git a/libgloss/sparc_leon/kernel_queue.c b/libgloss/sparc_leon/kernel_queue.c
deleted file mode 100644
index a6a20e1e2..000000000
--- a/libgloss/sparc_leon/kernel_queue.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_queue.h>*/
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-
-int
-leonbare_thread_getqueueidx (leonbare_thread_t thread)
-{
- LEONBARE_VERIFYSCHED ();
- if (thread->th_flags & (LEONBARE_TH_TERMINATED | LEONBARE_TH_FINISHED))
- {
- return LEONBARE_RUNQ_KILLED_IDX;
- }
- else if ((thread->th_flags & LEONBARE_TH_SUSPENDED))
- {
- return LEONBARE_RUNQ_SUSPENDED_IDX;
- }
- else if (LEONBARE_RUNQ_ISREADY (thread->th_runq_idx))
- {
- if (LEONBARE_KR_RUNQ_WHICH == thread->th_runq_which)
- {
- return thread->th_runq_idx;
- }
- else
- {
- return thread->th_runq_idx + LEONBARE_RUNQ_PREPARE_IDX;
- }
- }
- return -1;
-}
diff --git a/libgloss/sparc_leon/kernel_sched.c b/libgloss/sparc_leon/kernel_sched.c
deleted file mode 100644
index 2b485c0fe..000000000
--- a/libgloss/sparc_leon/kernel_sched.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-
-unsigned int
-reschedule ()
-{
- leonbare_sched_update ();
- return leonbare_sched ();
-}
-
-unsigned int
-leonbare_sched ()
-{
- unsigned int ret = 0;
- volatile leonbare_thread_t old = LEONBARE_KR_CURRENT, new =
- LEONBARE_KR_NEXT;
- LBDEBUG_FNCALL;
- LBDEBUG_HEADER_PRINTF (LBDEBUG_SCHED_NR, "switch %s[%x]->%s[%x]\n",
- LEONBARE_TH_NAME_DBG (old), old,
- LEONBARE_TH_NAME_DBG (new), new);
-
- LBPASSERT ((old != new),
- "leonbare_sched should only be called with reschedule work to do",
- 0);
-
- LEONBARE_KR_CURRENT = new;
-
- /* to be able to programm symetrically on kernel level each thread
- saves it's spinlock on mutexes and kernel and irq flags in its
- own save region. On a kernel switch they are released until the
- thread is reawakened. Then the locks will be reaquired (and finally
- released when the codeblock exits). The locking can be recursive. */
- if (old->th_prot.krp_k_depth)
- {
- LEONBARE_SMP_SPINLOCK_RELEASE (LEONBARE_KR_LOCK);
- }
- if (old->th_prot.krp_m_depth)
- {
- LEONBARE_SMP_SPINLOCK_RELEASE (old->th_prot.krp_m);
- }
-
- ret = _leonbare_kernel_switchto (old, new);
- optbarrier ();
-
- if (new->th_prot.krp_m_depth)
- {
- LEONBARE_SMP_SPINLOCK_AQUIRE (new->th_prot.krp_m);
- }
- if (old->th_prot.krp_k_depth)
- {
- LEONBARE_SMP_SPINLOCK_AQUIRE (LEONBARE_KR_LOCK);
- }
-
- return ret;
-}
diff --git a/libgloss/sparc_leon/kernel_thread.c b/libgloss/sparc_leon/kernel_thread.c
deleted file mode 100644
index b51b6beed..000000000
--- a/libgloss/sparc_leon/kernel_thread.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_queue.h>*/
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/leonbare_kernel.h>
-#include <asm-leon/leonbare_debug.h>
-#include <asm-leon/stack.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/irq.h>
-
-int
-leonbare_thread_resume (leonbare_thread_t thread)
-{
- leonbare_thread_t i = 0;
- if ((thread->th_flags & LEONBARE_TH_SUSPENDED) &&
- !(thread->th_flags & (LEONBARE_TH_TERMINATED | LEONBARE_TH_FINISHED)))
- {
-
- LEONBARE_PROTECT_KERNEL_START ();
- {
- unsigned int idx = leonbare_thread_getqueueidx (thread);
-
- if (idx != -1)
- {
- LBTAILQ_REMOVE (LEONBARE_KR_RUNQ (idx), thread, th_runq);
- }
-
- if (thread->th_pri_idx != -1)
- {
- thread->th_runq_idx = thread->th_pri_idx;
- thread->th_runq_which = LEONBARE_KR_RUNQ_WHICH;
- LBTAILQ_INSERT_HEAD (LEONBARE_KR_RUNQ (thread->th_runq_idx),
- thread, th_runq);
- LEONBARE_TH_SETSTATE (thread, LEONBARE_TH_READY);
- }
- }
- LEONBARE_PROTECT_KERNEL_END ();
- }
-
-}
-
-int
-leonbare_thread_terminate (leonbare_thread_t thread)
-{
- unsigned int ret = 0;
- leonbare_thread_t c = LEONBARE_KR_CURRENT;
- LEONBARE_PROTECT_KERNEL_START ();
- {
- unsigned int idx = leonbare_thread_getqueueidx (thread);
-
- if (LEONBARE_RUNQ_ISREADY (idx) || LEONBARE_RUNQ_ISPREPARE (idx) ||
- LEONBARE_RUNQ_ISSUSPEND (idx))
- {
- LBTAILQ_REMOVE (LEONBARE_KR_RUNQ (idx), thread, th_runq);
- }
- else
- {
- LBPASSERT (LEONBARE_RUNQ_ISKILLED (idx),
- "thread %s is in no queue ",
- LEONBARE_TH_NAME_DBG (thread));
- }
- LEONBARE_TH_SETSTATE (thread, LEONBARE_TH_TERMINATED);
- LBTAILQ_INSERT_HEAD (LEONBARE_KR_RUNQ (LEONBARE_RUNQ_KILLED_IDX), thread,
- th_runq);
-
- LEONBARE_PRINTQUEUES ();
-
- LEONBARE_VERIFYSCHED ();
- }
- if (thread == LEONBARE_KR_CURRENT)
- {
- ret = reschedule ();
- /* never come here */
- LEONBARE_STOPALL;
- }
- LEONBARE_PROTECT_KERNEL_END ();
- return ret;
-}
-
-
-int
-current_suspend ()
-{
- unsigned int ret = 0;
- leonbare_thread_t c = LEONBARE_KR_CURRENT;
- LEONBARE_PROTECT_KERNEL_START ();
- {
- LBPASSERT ((c->th_runq_which == LEONBARE_KR_RUNQ_WHICH),
- "Current thread cannot be on the prepare queue", 0);
-
- LBTAILQ_REMOVE (LEONBARE_KR_RUNQ (c->th_runq_idx), c, th_runq);
- LBTAILQ_INSERT_TAIL (LEONBARE_KR_RUNQ (LEONBARE_RUNQ_SUSPENDED_IDX),
- c, th_runq);
- c->th_runq_idx = LEONBARE_RUNQ_SUSPENDED_IDX;
- LEONBARE_TH_SETSTATE (c, LEONBARE_TH_SUSPENDED);
- LEONBARE_VERIFYSCHED ();
- }
- ret = reschedule ();
- LEONBARE_PROTECT_KERNEL_END ();
- return ret;
-}
-
-void
-_leonbare_thread_body ()
-{
- LBDEBUG_FNCALL;
- leonbare_thread_t thread = LEONBARE_KR_CURRENT;
-
- LEONBARE_KR_IS_IN_KERNEL = 0;
- thread->th_result = thread->th_func (thread->th_arg);
-
- leonbare_thread_terminate (thread);
-
- LBDEBUG_FNEXIT;
-}
-
-#define LEONBARE_BODY_OFFSET 200
-
-int
-leonbare_thread_create (struct leonbare_thread *thread, char *stack,
- int stacksize)
-{
- LEONBARE_PROTECT_DECL (flags);
- struct sparc_stackframe_regs *sp;
- unsigned int v;
- unsigned int fpspill, bodysp, bodyfp;
- struct leonbare_thread_ctx *threadctx;
- LBDEBUG_FNCALL;
-
- thread->th_stack_base = (char *) LEONBARE_STACKALIGN (stack);
- stacksize -= thread->th_stack_base - stack;
- thread->th_stack_size = stacksize;
- thread->th_runq_idx = 0;
- thread->th_pri_idx = 0;
- thread->th_account = 0;
- thread->th_caccount = 0;
-
- /* stack:
- * 0:+--------------------------------+ <- thread.th_stack_base
- * | .... |
- * +--------------------------------+ <- thread.th_ctx->out[6] (%sp)
- * | _leonbare_thread_body() frame |
- * +--------------------------------+ <- thread.th_ctx->sf_ins[6] (%fp)
- * | WINDOWSPILL |
- * +--------------------------------+ <- thread.th_ctx->fpu
- * | struct sparc_fpuwindow_regs |
- * +--------------------------------+ <- thread.th_stack_base + thread->th_stack_size
- *
- */
- v = (unsigned int) (thread->th_stack_base +
- LEONBARE_STACKALIGN (thread->th_stack_size -
- (LEONBARE_BODY_OFFSET +
- WINDOWSIZE + FW_REGS_SZ)));
-
- bodysp = ((unsigned int) v);
- bodyfp = ((unsigned int) bodysp) + LEONBARE_BODY_OFFSET;
- fpspill = ((unsigned int) bodyfp) + WINDOWSIZE;
-
- thread->th_ctx.outs[6] = (unsigned int) bodysp;
- thread->th_ctx.outs[7] = (int) _leonbare_thread_body;
- thread->th_ctx.outs[7] -= 8;
- thread->th_ctx.sf_ins[6] = (unsigned int) bodyfp;
- thread->th_ctx.fpu = (unsigned int) fpspill;
- thread->th_ctx.magic = LEONBARE_THREAD_CTX_MAGIC;
-
- thread->th_ctx.psr = 0x0e0;
- thread->th_ctx.wim = 0x2;
-
- LBDEBUG_HEADER_PRINTF (LBDEBUG_THREAD_NR,
- "Thread %s (0x%x): stack [0x%x-0x%x] \n",
- LEONBARE_TH_NAME_DBG (thread), thread,
- thread->th_stack_base,
- thread->th_stack_base + thread->th_stack_size);
-
- /* newlibc reent */
- thread->th_reentp = &(thread->th_reent);
- _REENT_INIT_PTR (thread->th_reentp);
-
- LEONBARE_PROTECT_KERNEL_START ();
- /* queues */
- LBTAILQ_INSERT_TAIL (LEONBARE_KR_ALLQ, thread, th_allq);
- LBTAILQ_INSERT_TAIL (LEONBARE_KR_RUNQ (thread->th_runq_idx), thread,
- th_runq);
-
- LEONBARE_PRINTQUEUES ();
-
- LEONBARE_PROTECT_KERNEL_END ();
-
- LBDEBUG_FNEXIT;
-}
diff --git a/libgloss/sparc_leon/lcpuinit.S b/libgloss/sparc_leon/lcpuinit.S
deleted file mode 100644
index d6a9ec842..000000000
--- a/libgloss/sparc_leon/lcpuinit.S
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#define LEON3_IO_AREA 0xfff00000
-#define LEON3_CONF_AREA 0xff000
-#define VENDOR_GAISLER 0x01
-#define GAISLER_APBMST 0x006
-#define GAISLER_APBUART 0x00C
-#define GAISLER_GPTIMER 0x011
-
- .text
- /* ------- */
- .weak cpuinit
- .set cpuinit,_cpuinit
- /* ------- */
- !.global cpuinit
-_cpuinit:
-
- mov %o7,%g6
-
- mov %psr, %l3
- srl %l3, 24, %g5
- and %g5, 0xf, %g5
- subcc %g5, 3, %0
- be 1f
-
- /* other versions */
-
- ba 2f
-
- ! ####### leon3 #########
-
-1: set 0x01, %o0 !VENDOR_GAISLER
- set 0x006, %o1 !GAISLER_APBMST
- call ahbslv_scan
- nop
-
- cmp %g0,%o0
- be 2f
- nop
-
- ld [%o0+16],%g1
- set 0xfff00000,%o0 !LEON3_IO_AREA
- and %g1,%o0,%g1 !g1: apb base
-
- set 0xff000,%o0 !LEON3_CONF_AREA
- or %g1,%o0,%g2 !g2: apb conf base
-
- ! ####### uart #########
- mov %g2,%o0
- set 0x01 , %o1 ! VENDOR_GAISLER
- set 0x00C,%o2 ! GAISLER_APBUART
- call apbslv_scan
- nop
- cmp %g0,%o0
- be 2f
- nop
-
- call iobar_getbase
- mov %g1,%o1
-
- set console, %g5
- st %o1,[%g5] !uart base address
-
- ! ####### timer #########
-
- mov %g2,%o0
- set 0x01 , %o1 !VENDOR_GAISLER
- set 0x011,%o2 !GAISLER_GPTIMER
- call apbslv_scan
- nop
- cmp %g0,%o0
- be 2f
- nop
-
- call iobar_getbase
- mov %g1,%o1
-
- add %o1,0x10,%o1
- set rtc, %g5
- st %o1,[%g5]
-
- ! ################
-
- mov %g2,%o0
- set 0x01 , %o1 !VENDOR_GAISLER
- set 0x00D,%o2 !GAISLER_IRQMP
- call apbslv_scan
- nop
- cmp %g0,%o0
- be 2f
- nop
-
- call iobar_getbase
- mov %g1,%o1
-
- set irqmp, %g5
- st %o1,[%g5]
- ld [%o1+0x10], %o2
- srl %o2, 16, %o2
- and %o2, 15, %o2
- st %o2,[%g5+4]
-
- ! ################
-
-2: mov %g6,%o7
- retl
- nop
-
- ! force link of jiffies_64
- .global jiffies_64
-3: set jiffies_64,%g1
-
-
- .data
- .global irqmp
-
-irqmp: .word 0 ! IRQMP base address
- .word 0 ! extended irq number
-
- .text
diff --git a/libgloss/sparc_leon/locore.S b/libgloss/sparc_leon/locore.S
deleted file mode 100644
index 011711bc0..000000000
--- a/libgloss/sparc_leon/locore.S
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* The traptable has to be the first code in a boot PROM. */
-
-#include <asm-leon/head.h>
-
-#define TRAP(H) mov %psr, %l0; sethi %hi(H), %l4; jmp %l4+%lo(H); nop;
-#define TRAPL(H) nop; sethi %hi(H), %g1; jmp %g1+%lo(H); nop;
-#define TRAP_ENTRY(H) rd %psr, %l0; b H; rd %wim, %l3; nop;
-
-#define WIM_INIT 2
-#ifdef _SOFT_FLOAT
-#define PSR_INIT 0x0e0
-#else
-#define PSR_INIT 0x10e0
-#endif
-
-#define NUMREGWINDOWS 8
-
-/* Unexcpected trap will halt the processor by forcing it to error state */
-#define BAD_TRAP ta 0; nop; nop; nop;
-
-/* Software trap. Treat as BAD_TRAP */
-#define SOFT_TRAP BAD_TRAP
-
- .seg "text"
- .global _trap_table, start, _start, cpuinit, leonbare_irq_entry, _hardreset
- .global _window_overflow, _window_underflow, _flush_windows, _fpdis_enable
- /*.global _nwindows, _leon_version, _nwindows_min1*/
-
-
-!
-! Startup code for standalone system. Wash IU and FPU (if present) registers.
-! The registers have to be written to initiate the parity bits.
-!
- .section .text
- /* ------- */
- .weak _hardreset
- .set _hardreset,_hardreset_libgloss
- /* ------- */
-
- .global _hardreset_custom_weak, _hardreset_real, _cleanregs_custom_weak, _hardreset_custom_svt_weak
-
-_hardreset_real:
- nop
-_hardreset_libgloss:
- set _hardreset_custom_weak, %g1 ! possible mkprom init code here, default links to dummy _hardreset_custom_dummy
- call %g1
- nop
-
- set _trap_table, %g1 ! Initialize TBR
- mov %g1, %tbr
-
- set _hardreset_custom_svt_weak, %g1 ! give mkprom svt chance to reset tbr
- call %g1
- nop
-
- set _cleanregs_custom_weak, %g1
- call %g1
- nop
-
-#ifdef _FLAT
- mov %g0, %wim
-#else
-/* ! assume that %sp is correct use cwp of psr to set the next window as invalid
- mov %psr, %g2 ! extract cwp
- and 0x1f, %g2,%g2
- set 0x1, %g3
- sll %g3,%g2,%g3 ! the bit mask for cwp
-
- sll %g3, 1, %g4 ! rotate one to left
- sethi %hi(_nwindows_min1), %g5 ! NWINDOWS-1
- ld [%g5+%lo(_nwindows_min1)], %g5
- srl %g3, %g5, %g5
- or %g5, %g4, %g5
- mov %g5, %wim
- nop; nop; nop */
-#endif
-
-/*
- mov %psr, %g2
- set 0x202, %g3
- sll %g3, %g2, %g2
- mov %g2, %wim
- nop; nop; nop
-1:
-*/
- ! -------------------------------
- ! only cpu 0 initializes
-/* mov %psr, %g5
- srl %g5, 24, %g5
- and %g5, 3, %g5
- subcc %g5, 3, %g0 ! leon2: 0 or 2, leon3: 3
- bne callcpuinit
- nop
-*/
-
- rd %asr17,%g5
- srl %g5,28,%g5
- cmp %g5,%g0
- bne slavego
- nop
-
-callcpuinit:
- call cpuinit
- nop
-
- call pnpinit
- nop
-
-slavego:
- ! -------------------------------
-
- sub %sp, 0x40, %sp ! room for main to save args
- call _start
- nop
-
- mov 1, %g1
- ta 0 ! Halt if _main would return ...
- nop
-
- .global _fpdis,_fpdis_svt
-_fpdis_svt:
-_fpdis:
- set 0x1000, %l4
- andcc %l0, %l4, %l3
- bne,a 4f
- andn %l0, %l4, %l0
- ta 0
-4:
- mov %l0, %psr ! restore %psr
- nop; nop; nop
- jmp %l2 ! Jump to nPC
- rett %l2 + 4
-
-
-/*
-!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- .section .bss
- .global _nwindows, _leon_version, _nwindows_min1
-_nwindows:
- .word 8
-_nwindows_min1:
- .word 7
-_leon_version:
- .word 3
-*/
diff --git a/libgloss/sparc_leon/locore_atexit.c b/libgloss/sparc_leon/locore_atexit.c
deleted file mode 100644
index b23054c77..000000000
--- a/libgloss/sparc_leon/locore_atexit.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <reent.h>
-#include <sys/lock.h>
-
-/*
- * Register a function to be performed at exit or on shared library unload.
- */
-
-int
-atexit (void (*fn) (void))
-{
- register struct _atexit *p;
-
- p = _GLOBAL_REENT->_atexit;
- if (p == NULL)
- _GLOBAL_REENT->_atexit = p = &_GLOBAL_REENT->_atexit0;
- if (p->_ind >= _ATEXIT_SIZE)
- {
- return -1;
- }
-
- p->_fns[p->_ind++] = fn;
- return 0;
-}
diff --git a/libgloss/sparc_leon/locore_clean.S b/libgloss/sparc_leon/locore_clean.S
deleted file mode 100644
index 6a2df85a8..000000000
--- a/libgloss/sparc_leon/locore_clean.S
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/head.h>
-
- .section .text
- /* ------- */
- .weak _cleanregs_custom_weak
- .set _cleanregs_custom_weak,_cleanregs_donothing
- /* ------- */
- .global _cleanregs_libgloss
-
-
-_cleanregs_donothing:
-_cleanregs_libgloss:
- retl
- nop
-
-
-#define NUMREGWINDOWS 8
-
-//_cleanregs_libgloss:
-
-!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-! initialize regs with values
-//#define REGINIT
-#ifdef REGINIT
-
- mov %psr, %g3
- mov %wim, %g4
- mov %sp, %g5
- mov %fp, %g6
- mov %o7, %g7
- mov %g0, %wim
- set 0, %g1
- andn %g3,0x1f,%l0
- mov %l0,%psr
- nop; nop; nop
-
-3: set 0x0001,%i0
- set 0x0101,%i1
- set 0x0201,%i2
- set 0x0301,%i3
- set 0x0401,%i4
- set 0x0501,%i5
- set 0x0601,%i6
- set 0x0701,%i7
- set 0x0801,%l0
- set 0x0901,%l1
- set 0x1001,%l2
- set 0x1101,%l3
- set 0x1201,%l4
- set 0x1301,%l5
- set 0x1401,%l6
- set 0x1501,%l7
- or %g1,%i0,%i0
- or %g1,%i1,%i1
- or %g1,%i2,%i2
- or %g1,%i3,%i3
- or %g1,%i4,%i4
- or %g1,%i5,%i5
- or %g1,%i6,%i6
- or %g1,%i7,%i7
- or %g1,%l0,%l0
- or %g1,%l1,%l1
- or %g1,%l2,%l2
- or %g1,%l3,%l3
- or %g1,%l4,%l4
- or %g1,%l5,%l5
- or %g1,%l6,%l6
- or %g1,%l7,%l7
- restore
- set 0x10000,%g2
- add %g1,%g2,%g1
- set NUMREGWINDOWS*0x10000,%g2
- cmp %g1,%g2
- bne 3b
- nop
-
- mov %g4,%wim
- nop; nop; nop;
- mov %g3,%psr
- nop; nop; nop;
- mov %g5, %sp
- mov %g6, %fp
-
-#endif
-!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
- jmpl %g7+8,%g0
- nop
-
diff --git a/libgloss/sparc_leon/locore_mvt.S b/libgloss/sparc_leon/locore_mvt.S
deleted file mode 100644
index b8a051b15..000000000
--- a/libgloss/sparc_leon/locore_mvt.S
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* The traptable has to be the first code in a boot PROM. */
-
-#include <asm-leon/head.h>
-
-#define TRAP(H) mov %psr, %l0; sethi %hi(H), %l4; jmp %l4+%lo(H); nop;
-#define TRAPL(H) mov %g0, %g4; sethi %hi(H), %g4; jmp %g4+%lo(H); nop;
-#define TRAP_ENTRY(H) rd %psr, %l0; b H; rd %wim, %l3; nop;
-/* srmmu trap */
-#define SRMMU_TFAULT rd %psr, %l0; rd %wim, %l3; b _srmmu_fault; mov 1, %l6;
-#define SRMMU_DFAULT rd %psr, %l0; rd %wim, %l3; b _srmmu_fault; mov 9, %l6;
-
-#define WIM_INIT 2
-#ifdef _SOFT_FLOAT
-#define PSR_INIT 0x0e0
-#else
-#define PSR_INIT 0x10e0
-#endif
-
-#define NUMREGWINDOWS 8
-
-/* Unexcpected trap will halt the processor by forcing it to error state */
-#define BAD_TRAP ta 0; nop; nop; nop;
-
-/* Software trap. Treat as BAD_TRAP */
-#define SOFT_TRAP BAD_TRAP
-
- .seg "text"
- .global _trap_table, cpuinit, leonbare_irq_entry, _hardreset, _hardreset_mvt
- .global _window_overflow, _window_underflow, _flush_windows, _fpdis_enable
- .global start
-start:
-_trap_table:
- TRAPL(_hardreset_mvt); ! 00 reset trap
- SRMMU_TFAULT ! 01 instruction_access_exception (in mmu_asm.S)
- BAD_TRAP; ! 02 illegal_instruction
- BAD_TRAP; ! 03 priveleged_instruction
-#ifndef _SOFT_FLOAT
- TRAP(_fpdis_enable); ! 04 fp_disabled
-#else
- TRAP(_fpdis); ! 04 fp_disabled
-#endif
-#ifndef _FLAT
- TRAP(_window_overflow); ! 05 window_overflow
- TRAP(_window_underflow); ! 06 window_underflow
-#else
- BAD_TRAP; BAD_TRAP;
-#endif
- BAD_TRAP; ! 07 memory_address_not_aligned
- BAD_TRAP; ! 08 fp_exception
- SRMMU_DFAULT ! 09 data_access_exception (in mmu_asm.S)
- BAD_TRAP; ! 0A tag_overflow
-
- BAD_TRAP; ! 0B undefined
- BAD_TRAP; ! 0C undefined
- BAD_TRAP; ! 0D undefined
- BAD_TRAP; ! 0E undefined
- BAD_TRAP; ! 0F undefined
- BAD_TRAP; ! 10 undefined
-
- /* Interrupt entries */
- TRAP_ENTRY_INTERRUPT(1); ! 11 interrupt level 1
- TRAP_ENTRY_INTERRUPT(2); ! 12 interrupt level 2
- TRAP_ENTRY_INTERRUPT(3); ! 13 interrupt level 3
- TRAP_ENTRY_INTERRUPT(4); ! 14 interrupt level 4
- TRAP_ENTRY_INTERRUPT(5); ! 15 interrupt level 5
- TRAP_ENTRY_INTERRUPT(6); ! 16 interrupt level 6
- TRAP_ENTRY_INTERRUPT(7); ! 17 interrupt level 7
- TRAP_ENTRY_INTERRUPT(8); ! 18 interrupt level 8
- TRAP_ENTRY_INTERRUPT(9); ! 19 interrupt level 9
- TRAP_ENTRY_INTERRUPT(10); ! 1A interrupt level 1
- TRAP_ENTRY_INTERRUPT(11); ! 1B interrupt level 11
- TRAP_ENTRY_INTERRUPT(12); ! 1C interrupt level 12
- TRAP_ENTRY_INTERRUPT(13); ! 1D interrupt level 13
- TRAP_ENTRY_INTERRUPT(14); ! 1E interrupt level 14
- TRAP_ENTRY_INTERRUPT(15); ! 1F interrupt level 15
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 20 - 23 undefined
- BAD_TRAP; ! 24 cp_disabled
- BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 25 - 27 undefined
- BAD_TRAP; ! 28 cp_exception
- BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 29 - 2B undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 2C - 2F undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 30 - 33 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 34 - 37 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 38 - 3B undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 3C - 3F undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 40 - 43 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 44 - 47 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 48 - 4B undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 4C - 4F undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 50 - 53 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 54 - 57 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 58 - 5B undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 5C - 5F undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 60 - 63 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 64 - 67 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 68 - 6B undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 6C - 6F undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 70 - 73 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 74 - 77 undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 78 - 7B undefined
- BAD_TRAP; BAD_TRAP; BAD_TRAP; BAD_TRAP; ! 7C - 7F undefined
-
- /* Software traps */
- SOFT_TRAP; SOFT_TRAP; TRAP(_irqcall); ! 80 - 82
-#ifndef _FLAT
- TRAP_ENTRY(_flush_windows) ! 83
-#else
- SOFT_TRAP
-#endif
- SOFT_TRAP; ! 84
- TRAP(_irqcall_disableirq); ! 85
- SOFT_TRAP; SOFT_TRAP; ! 86 - 87
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! 88 - 8B
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! 8C - 8F
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! 90 - 93
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! 94 - 97
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! 98 - 9B
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! 9C - 9F
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! A0 - A3
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! A4 - A7
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! A8 - AB
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! AC - AF
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! B0 - B3
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! B4 - B7
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! B8 - BB
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! BC - BF
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! C0 - C3
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! C4 - C7
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! C8 - CB
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! CC - CF
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! D0 - D3
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! D4 - D7
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! D8 - DB
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! DC - DF
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! E0 - E3
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! E4 - E7
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! E8 - EB
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! EC - EF
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! F0 - F3
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! F4 - F7
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! F8 - FB
- SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; SOFT_TRAP; ! FC - FF
-
-
-
diff --git a/libgloss/sparc_leon/locore_mvt_reset.S b/libgloss/sparc_leon/locore_mvt_reset.S
deleted file mode 100644
index 74cc92ed5..000000000
--- a/libgloss/sparc_leon/locore_mvt_reset.S
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/head.h>
-
- .section .text
- /* ------- */
- .weak _hardreset_mvt
- .set _hardreset_mvt,_hardreset_mvt_ram
- /* ------- */
- .global _hardreset
-
-_hardreset_mvt_ram:
- mov %psr, %g1
- srl %g1, 24, %g1
- and %g1, 3, %g1
- subcc %g1, 3, %g0 ! leon2: 0 or 2, leon3: 3
- bne .L2
- nop
-
- mov %asr17, %g1 ! set svt
- set 1<<13,%g2
- andn %g1,%g2,%g1
- mov %g1, %asr17
-
-.L2: mov %g0, %g4
- sethi %hi(_hardreset), %g4
- jmp %g4+%lo(_hardreset);
- nop
-
diff --git a/libgloss/sparc_leon/locore_svt.S b/libgloss/sparc_leon/locore_svt.S
deleted file mode 100644
index 429a8dfdd..000000000
--- a/libgloss/sparc_leon/locore_svt.S
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* The traptable has to be the first code in a boot PROM. */
-
-#include <asm-leon/head.h>
-
- .seg "text"
-
- .global _trap_table, _start_svt_weak
- .global start
-
- /* Hardware traps */
- /* svt code asumes that %g6 is never used in the code */
-
-start:
-_trap_table:
-
- sethi %hi(_start_svt_weak), %g6
- jmp %g6+%lo(_start_svt_weak)
- nop
-
diff --git a/libgloss/sparc_leon/locore_svt_reset.S b/libgloss/sparc_leon/locore_svt_reset.S
deleted file mode 100644
index cde9a7b09..000000000
--- a/libgloss/sparc_leon/locore_svt_reset.S
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/head.h>
-
- .section .text
- /* ------- */
- .weak _hardreset_svt
- .set _hardreset_svt, __hardreset_svt
- /* ------- */
- .global _hardreset, _hardreset_svt_real
-
-! reset entry point for single vector trapping. Try enable svt
-_hardreset_svt_real:
- nop
-__hardreset_svt:
- mov %psr, %l3
- srl %l3, 24, %g5
- and %g5, 3, %g5
- subcc %g5, 3, %g0 ! leon2: 0 or 2, leon3: 3
- bne .L2
- nop
-
- mov %asr17, %g5 ! set svt
- set 1<<13,%g1
- or %g5,%g1,%g5
- mov %g5, %asr17
- nop; nop; nop
- mov %asr17,%g5 ! check svt
- andcc %g5, %g1, %g0
- beq .L2
- nop
-
- set _hardreset,%l3
- jmp %l3
- nop
-
-.L2: ta 0x0 ! no svt implemented (ether leon2 or svt != 1)
- nop
-
diff --git a/libgloss/sparc_leon/locore_svtdisp.S b/libgloss/sparc_leon/locore_svtdisp.S
deleted file mode 100644
index 44400f234..000000000
--- a/libgloss/sparc_leon/locore_svtdisp.S
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-/* The traptable has to be the first code in a boot PROM. */
-
-#include <asm-leon/head.h>
-
-#define TRAP(H) mov %psr, %l0; sethi %hi(H), %l4; jmp %l4+%lo(H); nop;
-#define TRAPL(H) mov %g0, %l0; sethi %hi(H), %l4; jmp %l4+%lo(H); nop;
-#define TRAP_ENTRY(H) rd %psr, %l0; b H; rd %wim, %l3; nop;
-
-#define WIM_INIT 2
-#ifdef _SOFT_FLOAT
-#define PSR_INIT 0x0e0
-#else
-#define PSR_INIT 0x10e0
-#endif
-
-#define NUMREGWINDOWS 8
-
-/* Unexcpected trap will halt the processor by forcing it to error state */
-#define BAD_TRAP ta 0; nop; nop; nop;
-
-/* Software trap. Treat as BAD_TRAP */
-#define SOFT_TRAP BAD_TRAP
-
-#define TT_MASK 0xff0 // trap type mask from tbr
-#define TT_SHL 4 // shift to get a tbr value
-
- .seg "text"
-
- /* ------- */
- .weak _start_svt_weak
- .set _start_svt_weak,_start_svt_disp
- /* ------- */
-
- .global _trap_table, cpuinit, _hardreset, _hardreset_svt
- .global _fpdis_enable_svt,_fpdis_svt,_window_overflow_svt,_window_underflow_svt
- .global _leonbare_irq_entry_svt,_irqcall_svt,_flush_windows_svt,_srmmu_fault_svt,_irqcall_disableirq_svt
- .global start, _start_svt_real
-
-_start_svt_real:
- nop
-
-_start_svt_disp:
- rd %tbr, %l3
- rd %psr, %l0
- ! here,locals have been set up as follows:
- ! %l0 = psr
- ! %l1 = pc
- ! %l2 = npc
- ! %l3 = tbr
- and %l3,TT_MASK,%l3
- srl %l3,TT_SHL,%l3
-
-/*
-struct get {
- int start,end,func;
-};
-
-struct get table[3] = {
- {0,1,..},
- {0,0,0},
-};
-
-int gettrap(int nr){
- struct get *p = table;
- while((p->start) || (p->end) || (p->func)) {
- if (p->start <= nr && p->end >= nr) {
- return p->func;
- }
- p++;
- }
- return 0;
-}
-
-$sparc-elf-gcc -S gettrap.c -o test.S -O2
-*/
-
-#define loc_o0 l3
-#define loc_o1 l4
-#define loc_o2 l5
-#define loc_o3 l6
-
- sethi %hi(trap_table), %loc_o2
- or %loc_o2, %lo(trap_table), %loc_o2
- mov %loc_o0, %loc_o3
- ld [%loc_o2], %loc_o1
-.LL13:
- cmp %loc_o1, %loc_o3
-.LL12:
- bg,a .LL11
- add %loc_o2, 12, %loc_o2
- ld [%loc_o2+4], %loc_o0
- cmp %loc_o0, %loc_o3
- bge,a .LL1
- ld [%loc_o2+8], %loc_o0
- add %loc_o2, 12, %loc_o2
-.LL11:
- ld [%loc_o2], %loc_o0
- orcc %loc_o0, 0, %loc_o1
- bne .LL12
- cmp %loc_o1, %loc_o3
- ld [%loc_o2+4], %loc_o0
- cmp %loc_o0, 0
- bne .LL12
- cmp %loc_o1, %loc_o3
- ld [%loc_o2+8], %loc_o0
- cmp %loc_o0, 0
- bne .LL12
- cmp %loc_o1, %loc_o3
-
- !not in table
- BAD_TRAP
-
-.LL1:
- jmp %loc_o0
- nop
-
-
- .global trap_table,svt_trap_table_ext,svt_trap_table_ext_end
- .section ".rodata"
- .align 4
-trap_table:
- .long 0,0, _hardreset_svt
- .long 1,1, _srmmu_fault_svt ! 01 instruction_access_exception (in mmu_asm.S)
- .long 4,4
-#ifndef _SOFT_FLOAT
- .long _fpdis_enable_svt ! 04 fp_disabled
-#else
- .long _fpdis_svt ! 04 fp_disabled
-#endif
-#ifndef _FLAT
- .long 5, 5, _window_overflow_svt ! 05 window_overflow
- .long 6, 6, _window_underflow_svt ! 06 window_underflow
-#endif
- .long 9,9, _srmmu_fault_svt ! 09 data_access_exception (in mmu_asm.S)
- .long 0x11,0x1f, _leonbare_irq_entry_svt ! 11-1f interrupt level
- .long 0x82,0x82, _irqcall_svt ! 82
-#ifndef _FLAT
- .long 0x83,0x83, _flush_windows_svt ! 83
-#endif
- .long 0x85,0x85, _irqcall_disableirq_svt ! 85
-svt_trap_table_ext:
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
- .long 0,0,0
-svt_trap_table_ext_end:
- .long 0,0,0
-
diff --git a/libgloss/sparc_leon/locore_var.S b/libgloss/sparc_leon/locore_var.S
deleted file mode 100644
index 0d690bbd6..000000000
--- a/libgloss/sparc_leon/locore_var.S
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
- .section .text
- /* ------- */
- .weak _hardreset_custom_weak
- .set _hardreset_custom_weak,_hardreset_custom_weak_dummy
- /* ------- */
- .global _nwindows, _leon_version, _nwindows_min1
-
-_hardreset_custom_weak_dummy:
-
-!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-! get nwindows and leon version
-
- mov %psr, %l3
- srl %l3, 24, %g5
- and %g5, 3, %g5
- subcc %g5, 3, %g0 ! leon3: 3
- bne 1f
- nop
- set _leon_version,%l0
- set 3,%l1
- st %l1,[%l0]
- mov %asr17, %g5 ! leon3 has nwindows in %asr17
- ba 2f
-1:
- /* other version */
-2:
- and %g5, 0x1f, %g5
- set _nwindows_min1, %l3
- st %g5, [%l3]
- add %g5,1,%g5
- set _nwindows, %l3
- st %g5, [%l3]
- set _nwindows_min2, %l3
- sub %g5,2,%g5
- st %g5, [%l3]
-
-!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
- retl
- nop
-
-!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- .section .data
- .global _nwindows, _leon_version, _nwindows_min1, _nwindows_min2
-_nwindows:
- .word 8
-_nwindows_min1:
- .word 7
-_nwindows_min2:
- .word 6
-_leon_version:
- .word 3
diff --git a/libgloss/sparc_leon/locore_var_svt.S b/libgloss/sparc_leon/locore_var_svt.S
deleted file mode 100644
index 0a7523942..000000000
--- a/libgloss/sparc_leon/locore_var_svt.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-
- .section .text
- /* ------- */
- .weak _hardreset_custom_svt_weak
- .set _hardreset_custom_svt_weak,_hardreset_custom_svt_weak_dummy
- /* ------- */
-
-
-_hardreset_custom_svt_weak_dummy:
- retl
- nop
-
diff --git a/libgloss/sparc_leon/mmu_asm.S b/libgloss/sparc_leon/mmu_asm.S
deleted file mode 100644
index 5fe6a7616..000000000
--- a/libgloss/sparc_leon/mmu_asm.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-
- .seg "text"
-
- ! srmmu trap or data access trap
- /* ------- */
- .weak _srmmu_fault_svt
- .set _srmmu_fault_svt,__srmmu_fault_svt
- .weak _srmmu_fault
- .set _srmmu_fault,__srmmu_fault
- /* ------- */
-
-/* 1 (inst) or 9 (data) in %l6 */
-__srmmu_fault_svt:
-__srmmu_fault:
- ta 0; nop; nop; nop;
- jmp %l1 ! Re-execute save.
- rett %l2
diff --git a/libgloss/sparc_leon/mutex.c b/libgloss/sparc_leon/mutex.c
deleted file mode 100644
index eb2c2996d..000000000
--- a/libgloss/sparc_leon/mutex.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <sys/types.h>
-#include <sys/lock.h>
-#include <asm-leon/queue.h>
-/*#include <sys/fsu_pthread_mutex.h>*/
-
-typedef int pthread_protocol_t;
-typedef
-TAILQ_HEAD (pthread_queue, pthread) *
- pthread_queue_t;
-
-#define pthread_mutex_t_defined
- typedef struct pthread_mutex
- {
- struct pthread_queue queue;
- char lock;
- struct pthread *owner;
- int flags;
- int count;
- int prioceiling;
- pthread_protocol_t protocol;
- int prev_max_ceiling_prio;
- TAILQ_ENTRY (pthread_mutex) dbglist;
- char *dbgname;
- int _fitothers[16];
- } pthread_mutex_t;
-
- typedef struct
- {
- int flags;
- int prioceiling;
- pthread_protocol_t protocol;
- } pthread_mutexattr_t;
-
-
- int (*__lbst_pthread_mutex_init) (pthread_mutex_t * __mutex,
- pthread_mutexattr_t * __mutex_attr) =
- 0;
- int (*__lbst_pthread_mutex_destroy) (pthread_mutex_t * __mutex) = 0;
- int (*__lbst_pthread_mutex_trylock) (pthread_mutex_t * __mutex) = 0;
- int (*__lbst_pthread_mutex_lock) (pthread_mutex_t * __mutex) = 0;
- int (*__lbst_pthread_mutex_unlock) (pthread_mutex_t * __mutex) = 0;
- int (*__lbst_pthread_mutexattr_init) (pthread_mutexattr_t * __attr) = 0;
- int (*__lbst_pthread_mutexattr_destroy) (pthread_mutexattr_t * __attr) =
- 0;
- int (*__lbst_pthread_mutexattr_settype) (pthread_mutexattr_t * __attr,
- int __kind) = 0;
-
- int ___st_pthread_mutex_init (mutex, attr)
- pthread_mutex_t *mutex;
- pthread_mutexattr_t *attr;
-{
- if (__lbst_pthread_mutex_init)
- {
- return __lbst_pthread_mutex_init (mutex, attr);
- }
- return 0;
-}
-
-int
-___st_pthread_mutex_destroy (mutex)
- pthread_mutex_t *mutex;
-{
- if (__lbst_pthread_mutex_destroy)
- {
- return __lbst_pthread_mutex_destroy (mutex);
- }
- return 0;
-}
-
-int
-___st_pthread_mutex_lock (mutex)
- pthread_mutex_t *mutex;
-{
- if (__lbst_pthread_mutex_lock)
- {
- return __lbst_pthread_mutex_lock (mutex);
- }
- return 0;
-}
-
-int
-___st_pthread_mutex_trylock (mutex)
- pthread_mutex_t *mutex;
-{
- if (__lbst_pthread_mutex_trylock)
- {
- return __lbst_pthread_mutex_trylock (mutex);
- }
- return 0;
-}
-
-int
-___st_pthread_mutex_unlock (mutex)
- pthread_mutex_t *mutex;
-{
- if (__lbst_pthread_mutex_unlock)
- {
- return __lbst_pthread_mutex_unlock (mutex);
- }
- return 0;
-}
-
-int
-___st_pthread_mutexattr_init (attr)
- pthread_mutexattr_t *attr;
-{
- if (__lbst_pthread_mutexattr_init)
- {
- return __lbst_pthread_mutexattr_init (attr);
- }
- return (0);
-}
-
-int
-___st_pthread_mutexattr_destroy (attr)
- pthread_mutexattr_t *attr;
-{
- if (__lbst_pthread_mutexattr_destroy)
- {
- return __lbst_pthread_mutexattr_destroy (attr);
- }
- return 0;
-}
-
-int
-___st_pthread_mutexattr_settype (attr, kind)
- pthread_mutexattr_t *attr;
- int kind;
-{
- if (__lbst_pthread_mutexattr_settype)
- {
- return __lbst_pthread_mutexattr_settype (attr, kind);
- }
- return 0;
-}
-
-#include <asm-leon/elfmacro.h>
-
-weak_alias (___st_pthread_mutex_init, __st_pthread_mutex_init)
-weak_alias (___st_pthread_mutex_destroy, __st_pthread_mutex_destroy)
-weak_alias (___st_pthread_mutex_trylock, __st_pthread_mutex_trylock)
-weak_alias (___st_pthread_mutex_lock, __st_pthread_mutex_lock)
-weak_alias (___st_pthread_mutex_unlock, __st_pthread_mutex_unlock)
-weak_alias (___st_pthread_mutexattr_init, __st_pthread_mutexattr_init)
-weak_alias (___st_pthread_mutexattr_destroy, __st_pthread_mutexattr_destroy)
-weak_alias (___st_pthread_mutexattr_settype, __st_pthread_mutexattr_settype)
-/* /\* #ifndef weak_extern *\/ */
-/* /\* #define weak_extern(symbol) _weak_extern (symbol) *\/ */
-/* /\* #define _weak_extern(symbol) asm (".weak " #symbol); *\/ */
-/* /\* #endif *\/ */
-/* /\* weak_extern (__pthread_mutex_init) *\/ */
-/* /\* weak_extern (__pthread_mutex_destroy) *\/ */
-/* /\* weak_extern (__pthread_mutex_lock) *\/ */
-/* /\* weak_extern (__pthread_mutex_trylock) *\/ */
-/* /\* weak_extern (__pthread_mutex_unlock) *\/ */
-/* /\* weak_extern (__pthread_mutexattr_init) *\/ */
-/* /\* weak_extern (__pthread_mutexattr_destroy) *\/ */
-/* /\* weak_extern (__pthread_mutexattr_settype) *\/ */
-/* /\* weak_extern (__pthread_once) *\/ */
-/* /\* weak_extern (__pthread_initialize) *\/ */
-/* /\* Initialize the named lock variable, leaving it in a consistent, unlocked */
-/* state. *\/ */
-/* #define __libc_lock_init(NAME) \ */
-/* (__pthread_mutex_init != NULL ? __pthread_mutex_init (&(NAME), NULL) : 0); */
-/* /\* Same as last but this time we initialize a recursive mutex. *\/ */
-/* #define __libc_lock_init_recursive(NAME) \ */
-/* do { \ */
-/* if (__pthread_mutex_init != NULL) \ */
-/* { \ */
-/* pthread_mutexattr_t __attr; \ */
-/* __pthread_mutexattr_init (&__attr); \ */
-/* __pthread_mutexattr_settype (&__attr, PTHREAD_MUTEX_RECURSIVE_NP); \ */
-/* __pthread_mutex_init (&(NAME), &__attr); \ */
-/* __pthread_mutexattr_destroy (&__attr); \ */
-/* } \ */
-/* } while (0); */
-/* /\* Finalize the named lock variable, which must be locked. It cannot be */
-/* used again until __libc_lock_init is called again on it. This must be */
-/* called on a lock variable before the containing storage is reused. *\/ */
-/* //#define __libc_lock_fini(NAME) (__pthread_mutex_destroy != NULL ? __pthread_mutex_destroy (&(NAME)) : 0) */
-/* #define __libc_lock_fini(NAME) (__st_pthread_mutex_destroy (&(NAME))) */
-/* /\* Finalize recursive named lock. *\/ */
-/* #define __libc_lock_fini_recursive(NAME) __libc_lock_fini (NAME) */
-/* /\* Lock the named lock variable. *\/ */
-/* //#define __libc_lock_lock(NAME) (__pthread_mutex_lock != NULL ? __pthread_mutex_lock (&(NAME)) : 0) */
-/* #define __libc_lock_lock(NAME) (__st_pthread_mutex_lock (&(NAME))) */
-/* /\* Lock the recursive named lock variable. *\/ */
-/* #define __libc_lock_lock_recursive(NAME) __libc_lock_lock (NAME) */
-/* /\* Try to lock the named lock variable. *\/ */
-/* //#define __libc_lock_trylock(NAME) (__pthread_mutex_trylock != NULL ? __pthread_mutex_trylock (&(NAME)) : 0) */
-/* #define __libc_lock_trylock(NAME) (__st_pthread_mutex_trylock (&(NAME))) */
-/* /\* Try to lock the recursive named lock variable. *\/ */
-/* #define __libc_lock_trylock_recursive(NAME) __libc_lock_trylock (NAME) */
-/* /\* Unlock the named lock variable. *\/ */
-/* //#define __libc_lock_unlock(NAME) (__pthread_mutex_unlock != NULL ? __pthread_mutex_unlock (&(NAME)) : 0) */
-/* #define __libc_lock_unlock(NAME) (__st_pthread_mutex_unlock (&(NAME))) */
-/* /\* Unlock the recursive named lock variable. *\/ */
-/* #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock (NAME) */
-/* extern int __st_pthread_mutex_init (pthread_mutex_t *__mutex, pthread_mutexattr_t *__mutex_attr); */
-/* extern int __st_pthread_mutex_destroy (pthread_mutex_t *__mutex); */
-/* extern int __st_pthread_mutex_trylock (pthread_mutex_t *__mutex); */
-/* extern int __st_pthread_mutex_lock (pthread_mutex_t *__mutex); */
-/* extern int __st_pthread_mutex_unlock (pthread_mutex_t *__mutex); */
-/* extern int __st_pthread_mutexattr_init (pthread_mutexattr_t *__attr); */
-/* extern int __st_pthread_mutexattr_destroy (pthread_mutexattr_t *__attr); */
-/* extern int __st_pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind); */
-/* /\* /\\* Functions that are used by this file and are internal to the GNU C library. *\\/ *\/ */
-/* /\* extern int __pthread_mutex_init (pthread_mutex_t *__mutex, pthread_mutexattr_t *__mutex_attr); *\/ */
-/* /\* extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex); *\/ */
-/* /\* extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex); *\/ */
-/* /\* extern int __pthread_mutex_lock (pthread_mutex_t *__mutex); *\/ */
-/* /\* extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex); *\/ */
-/* /\* extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr); *\/ */
-/* /\* extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr); *\/ */
-/* /\* extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind); *\/ */
-/* /\* /\\* Make the pthread functions weak so that we can elide them from *\/ */
-/* /\* single-threaded processes. *\\/ *\/ */
-/* /\* #ifndef weak_extern *\/ */
-/* /\* #define weak_extern(symbol) _weak_extern (symbol) *\/ */
-/* /\* #define _weak_extern(symbol) asm (".weak " #symbol); *\/ */
-/* /\* #endif *\/ */
-/* /\* weak_extern (__pthread_mutex_init) *\/ */
-/* /\* weak_extern (__pthread_mutex_destroy) *\/ */
-/* /\* weak_extern (__pthread_mutex_lock) *\/ */
-/* /\* weak_extern (__pthread_mutex_trylock) *\/ */
-/* /\* weak_extern (__pthread_mutex_unlock) *\/ */
-/* /\* weak_extern (__pthread_mutexattr_init) *\/ */
-/* /\* weak_extern (__pthread_mutexattr_destroy) *\/ */
-/* /\* weak_extern (__pthread_mutexattr_settype) *\/ */
-/* /\* weak_extern (__pthread_once) *\/ */
-/* /\* weak_extern (__pthread_initialize) *\/ */
diff --git a/libgloss/sparc_leon/nocache.S b/libgloss/sparc_leon/nocache.S
deleted file mode 100644
index 12709afa5..000000000
--- a/libgloss/sparc_leon/nocache.S
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/elfmacro.h>
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/contextswitch.h>
-#include <asm-leon/winmacros.h>
-#include <asm-leon/leonbare_kernel.h>
-
- FUNC_EXPORT(leonbare_leon23_loadnocache)
- FUNC_EXPORT(leonbare_leon23_loadnocache16)
- FUNC_EXPORT(leonbare_leon23_loadnocache8)
-
- FUNC_EXPORT(leonbare_leon3_loadnocache)
- FUNC_EXPORT(leonbare_leon3_loadnocache16)
- FUNC_EXPORT(leonbare_leon3_loadnocache8)
-
-
- FUNC_EXPORT(leonbare_leon23_storenocache)
- FUNC_EXPORT(leonbare_leon23_storenocache16)
- FUNC_EXPORT(leonbare_leon23_storenocache8)
-
- FUNC_IMPORT(_leon_version)
-
- .text
-
-/* =================================== */
-/* LEON2 / 3 */
-/* load with forceing cache miss */
-FUNC_BEGIN(leonbare_leon23_loadnocache) /* use only %o0,%o1,%o7 */
- lda [%o0] ASI_LEON3_CACHEMISS, %o0
- retl
- nop
-FUNC_END(leonbare_leon23_loadnocache)
-
-/* load with forceing cache miss */
-FUNC_BEGIN(leonbare_leon23_loadnocache16)
- lduha [%o0] ASI_LEON3_CACHEMISS, %o0
- retl
- nop
-FUNC_END(leonbare_leon23_loadnocache16)
-
-/* load with forceing cache miss */
-FUNC_BEGIN(leonbare_leon23_loadnocache8)
- lduba [%o0] ASI_LEON3_CACHEMISS, %o0
- retl
- nop
-FUNC_END(leonbare_leon23_loadnocache8)
-
-/* write through cache */
-FUNC_BEGIN(leonbare_leon23_storenocache) /* use only %o0,%o1,%o7 */
- st %o1, [%o0]
- retl
- mov %o1,%o0
-FUNC_END(leonbare_leon23_storenocache)
-
-/* write through cache */
-FUNC_BEGIN(leonbare_leon23_storenocache16)
- sth %o1, [%o0]
- retl
- mov %o1,%o0
-FUNC_END(leonbare_leon23_storenocache16)
-
-/* write through cache */
-FUNC_BEGIN(leonbare_leon23_storenocache8)
- stb %o1, [%o0]
- retl
- mov %o1,%o0
-FUNC_END(leonbare_leon23_storenocache8)
-
-
-
-/* =================================== */
-/* LEON3 only */
-/* load with forceing cache miss */
-FUNC_BEGIN(leonbare_leon3_loadnocache) /* use only %o0,%o1,%o7 */
- retl
- lda [%o0] ASI_LEON3_CACHEMISS, %o0
-FUNC_END(leonbare_leon3_loadnocache)
-
-/* load with forceing cache miss */
-FUNC_BEGIN(leonbare_leon3_loadnocache16)
- retl
- lduha [%o0] ASI_LEON3_CACHEMISS, %o0
-FUNC_END(leonbare_leon3_loadnocache16)
-
-/* load with forceing cache miss */
-FUNC_BEGIN(leonbare_leon3_loadnocache8)
- retl
- lduba [%o0] ASI_LEON3_CACHEMISS, %o0
-FUNC_END(leonbare_leon3_loadnocache8)
-
-
-
diff --git a/libgloss/sparc_leon/pnpinit.c b/libgloss/sparc_leon/pnpinit.c
deleted file mode 100644
index 7b8522b04..000000000
--- a/libgloss/sparc_leon/pnpinit.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/amba.h>
-#undef AMBA_TYPE_AHBIO_ADDR
-#include <asm-leon/lambapp.h>
-#include <string.h>
-
-#define AMBA_CONF_AREA 0xff000
-#define AMBA_AHB_SLAVE_CONF_AREA (1 << 11)
-#define AMBA_APB_SLAVES 16
-
-#ifdef PDEBUG
-#define DPRINTF(p) printf p
-#else
-#define DPRINTF(p)
-#endif
-
-unsigned int
-ambapp_addr_from (struct ambapp_mmap *mmaps, unsigned int address)
-{
- /* no translation? */
- if (!mmaps)
- return address;
-
- while (mmaps->size)
- {
- if ((address >= mmaps->remote_adr)
- && (address <= (mmaps->remote_adr + (mmaps->size - 1))))
- {
- return (address - mmaps->remote_adr) + mmaps->local_adr;
- }
- mmaps++;
- }
- return 1;
-}
-
-
-static void
-ambapp_ahb_dev_init (unsigned int ioarea,
- struct ambapp_mmap *mmaps,
- struct ambapp_pnp_ahb *ahb, struct ambapp_dev_hdr *dev)
-{
- int bar;
- struct ambapp_ahb_info *ahb_info;
- unsigned int addr, mask, mbar;
-
- /* Setup device struct */
- dev->vendor = ambapp_pnp_vendor (ahb->id);
- dev->device = ambapp_pnp_device (ahb->id);
- ahb_info = dev->devinfo;
- ahb_info->ver = ambapp_pnp_ver (ahb->id);
- ahb_info->irq = ambapp_pnp_irq (ahb->id);
- ahb_info->custom[0] = (unsigned int) ahb->custom[0];
- ahb_info->custom[1] = (unsigned int) ahb->custom[1];
- ahb_info->custom[2] = (unsigned int) ahb->custom[2];
-
- DPRINTF (("+AHB device %d:%d\n", dev->device, dev->vendor));
-
- /* Memory BARs */
- for (bar = 0; bar < 4; bar++)
- {
- mbar = ahb->mbar[bar];
- if (mbar == 0)
- {
- addr = 0;
- mask = 0;
- }
- else
- {
- addr = ambapp_pnp_start (mbar);
- if (ambapp_pnp_mbar_type (mbar) == AMBA_TYPE_AHBIO)
- {
- /* AHB I/O area is releative IO_AREA */
- addr = AMBA_TYPE_AHBIO_ADDR (addr, ioarea);
- mask =
- (((unsigned int) (ambapp_pnp_mbar_mask ((~mbar)) << 8) |
- 0xff)) + 1;
- }
- else
- {
- /* AHB memory area, absolute address */
- addr = ambapp_addr_from (mmaps, addr);
- mask =
- (~((unsigned int) (ambapp_pnp_mbar_mask (mbar) << 20))) + 1;
- }
- }
- ahb_info->start[bar] = addr;
- ahb_info->mask[bar] = mask;
- }
-}
-
-static void
-ambapp_apb_dev_init (unsigned int base,
- struct ambapp_mmap *mmaps,
- struct ambapp_pnp_apb *apb, struct ambapp_dev_hdr *dev)
-{
- struct ambapp_apb_info *apb_info;
-
- /* Setup device struct */
- dev->vendor = ambapp_pnp_vendor (apb->id);
- dev->device = ambapp_pnp_device (apb->id);
- apb_info = dev->devinfo;
- apb_info->ver = ambapp_pnp_ver (apb->id);
- apb_info->irq = ambapp_pnp_irq (apb->id);
- apb_info->start = ambapp_pnp_apb_start (apb->iobar, base);
- apb_info->mask = ambapp_pnp_apb_mask (apb->iobar);
-
- DPRINTF (("+APB device %d:%d\n", dev->device, dev->vendor));
-
-
-}
-
-#define MAX_NUM_BUSES 16
-static void
-ambapp_add_scanned_bus (unsigned int *ioareas, unsigned int ioarea)
-{
- int i;
- for (i = 0; i < MAX_NUM_BUSES; i++)
- {
- if (ioareas[i] == 0)
- {
- ioareas[i] = ioarea;
- return;
- }
- }
-}
-
-static int
-ambapp_has_been_scanned (unsigned int *ioareas, unsigned int ioarea)
-{
- int i;
- if (!ioareas)
- return 0;
-
- for (i = 0; i < MAX_NUM_BUSES; i++)
- {
- if (ioareas[i] == 0)
- {
- break;
- }
- else if (ioareas[i] == ioarea)
- {
- return 1;
- }
- }
- return 0;
-}
-
-static int
-ambapp_find (unsigned int ioarea,
- struct ambapp_dev_hdr *parent,
- struct ambapp_mmap *mmaps,
- void *internal,
- int (*find_match) (struct ambapp_dev_hdr * dev, void *arg),
- void *arg, int vendor, int device)
-{
- struct ambapp_pnp_ahb *ahb, ahb_buf;
- struct ambapp_pnp_apb *apb, apb_buf;
- struct ambapp_dev_hdr *dev, *prev, *prevapb, *apbdev;
- struct ambapp_ahb_info *ahb_info;
- int maxloops = 64;
- unsigned int apbbase, bridge_address;
- int i, j;
-
- DPRINTF (("Scan at 0x%08x\n", ioarea));
-
- if (parent)
- {
- /* scan first bus for 64 devices, rest for 16 devices */
- maxloops = 16;
- }
- else
- {
- if (internal)
- {
- ambapp_add_scanned_bus (internal, ioarea);
- }
- }
-
- prev = parent;
-
- /* AHB MASTERS */
- ahb = (struct ambapp_pnp_ahb *) (ioarea | AMBA_CONF_AREA);
- for (i = 0; i < maxloops; i++)
- {
- memcpy (&ahb_buf, ahb, sizeof (struct ambapp_pnp_ahb));
- if (ahb_buf.id != 0)
- {
- struct ambapp_dev_hdr _dev;
- struct ambapp_ahb_info _ahb;
- memset (&_dev, 0, sizeof (_dev));
- memset (&_ahb, 0, sizeof (_ahb));
- _dev.devinfo = &_ahb;
- _dev.dev_type = DEV_AHB_MST;
- dev = &_dev;
-
- ambapp_ahb_dev_init (ioarea, mmaps, &ahb_buf, dev);
-
- DPRINTF ((" = test %d:%d == %d:%d\n", vendor, device, dev->vendor,
- dev->device));
-
- if (vendor == dev->vendor &&
- device == dev->device && find_match (dev, arg))
- {
- return 1;
- }
- }
- ahb++;
- }
-
-
- /* AHB SLAVES */
- ahb =
- (struct ambapp_pnp_ahb *) (ioarea | AMBA_CONF_AREA |
- AMBA_AHB_SLAVE_CONF_AREA);
- for (i = 0; i < maxloops; i++)
- {
- memcpy (&ahb_buf, ahb, sizeof (struct ambapp_pnp_ahb));
- if (ahb_buf.id != 0)
- {
- struct ambapp_dev_hdr _dev;
- struct ambapp_ahb_info _ahb;
- memset (&_dev, 0, sizeof (_dev));
- memset (&_ahb, 0, sizeof (_ahb));
- _dev.devinfo = &_ahb;
- _dev.dev_type = DEV_AHB_MST;
- dev = &_dev;
-
- ambapp_ahb_dev_init (ioarea, mmaps, &ahb_buf, dev);
-
- DPRINTF ((" = test %d:%d == %d:%d\n", vendor, device, dev->vendor,
- dev->device));
-
- if (vendor == dev->vendor &&
- device == dev->device && find_match (dev, arg))
- {
- return 1;
- }
-
- /* Is it a AHB/AHB Bridge ? */
- if ((dev->device == GAISLER_AHB2AHB)
- && (dev->vendor == VENDOR_GAISLER))
- {
- /* AHB/AHB Bridge Found, recurse down the Bridge */
- ahb_info = dev->devinfo;
- if (ahb_info->ver)
- {
- bridge_address =
- ambapp_addr_from (mmaps, ahb_info->custom[1]);
-
- DPRINTF (("+(AHBAHB:0x%x)\n", bridge_address));
-
- /* Makes sure bus only scanned once */
- if (internal == 0
- || ambapp_has_been_scanned (internal,
- bridge_address) == NULL)
- {
- if (internal)
- ambapp_add_scanned_bus (internal, bridge_address);
-
- if (ambapp_find (bridge_address, dev, mmaps, internal,
- find_match, arg, vendor, device))
- return 1;
- }
- }
- }
- else if ((dev->device == GAISLER_APBMST)
- && (dev->vendor == VENDOR_GAISLER))
- {
- /* AHB/APB Bridge Found, add the APB devices to this AHB Slave's children */
- prevapb = dev;
- ahb_info = dev->devinfo;
- apbbase = ahb_info->start[0];
- apb = (struct ambapp_pnp_apb *) (apbbase | AMBA_CONF_AREA);
- for (j = 0; j < AMBA_APB_SLAVES; j++)
- {
- memcpy (&apb_buf, apb, sizeof (struct ambapp_pnp_apb));
- if (apb_buf.id)
- {
- struct ambapp_dev_hdr _apbdev;
- struct ambapp_apb_info _apb;
- memset (&_apbdev, 0, sizeof (_apbdev));
- memset (&_apb, 0, sizeof (_apb));
- _apbdev.devinfo = &_apb;
- _apbdev.dev_type = DEV_APB_SLV;
- apbdev = &_apbdev;
-
- ambapp_apb_dev_init (apbbase, mmaps, &apb_buf, apbdev);
-
- DPRINTF ((" = test %d:%d == %d:%d\n", vendor, device,
- apbdev->vendor, apbdev->device));
-
- if (vendor == apbdev->vendor &&
- device == apbdev->device &&
- find_match (apbdev, arg))
- {
-
- return 1;
- }
- }
- apb++;
- }
- }
- }
- ahb++;
- }
-
- if (parent == NULL)
- {
- /*free(internal); */
- }
-
- return 0;
-}
-
-struct ambapp_dev_find_match_arg
-{
- int index;
- int count;
- int type;
- void *dev;
-};
-
-/* AMBA PP find routines */
-static int
-ambapp_dev_find_match (struct ambapp_dev_hdr *dev, void *arg)
-{
- struct ambapp_dev_find_match_arg *p = arg;
-
- if (p->index == 0)
- {
- /* Found controller, stop */
- if (p->type == DEV_APB_SLV)
- {
- *(struct ambapp_apb_info *) p->dev =
- *(struct ambapp_apb_info *) dev->devinfo;
- p->dev = ((struct ambapp_apb_info *) p->dev) + 1;
- }
- else
- {
- *(struct ambapp_ahb_info *) p->dev =
- *(struct ambapp_ahb_info *) dev->devinfo;
- p->dev = ((struct ambapp_ahb_info *) p->dev) + 1;
- }
- p->count--;
- if (p->count < 1)
- return 1;
- }
- else
- {
- p->index--;
- }
- return 0;
-}
-
-static int
-find_apbslvs_next (int vendor, int device, struct ambapp_apb_info *dev,
- int index, int maxno)
-{
- struct ambapp_dev_find_match_arg arg;
- unsigned int busses[MAX_NUM_BUSES];
- memset (busses, 0, sizeof (busses));
-
- arg.index = index;
- arg.count = maxno;
- arg.type = DEV_APB_SLV; /* APB */
- arg.dev = dev;
-
- ambapp_find (LEON3_IO_AREA, NULL, NULL, &busses,
- ambapp_dev_find_match, &arg, vendor, device);
-
- return maxno - arg.count;
-}
-
-int
-find_apbslv (int vendor, int device, struct ambapp_apb_info *dev)
-{
- return find_apbslvs_next (vendor, device, dev, 0, 1);
-}
-
-struct ambapp_dev_hdr *ambapp_root = NULL;
-unsigned int busses[MAX_NUM_BUSES];
-extern unsigned int console;
-extern unsigned int rtc;
-extern unsigned int irqmp;
-
-void
-pnpinit (void)
-{
- struct ambapp_apb_info dev;
- int n;
- if ((n = find_apbslv (VENDOR_GAISLER, GAISLER_APBUART, &dev)) == 1)
- {
- console = dev.start;
- DPRINTF (("Found abuart at 0x%x\n", console));
- }
- if ((n = find_apbslv (VENDOR_GAISLER, GAISLER_GPTIMER, &dev)) == 1)
- {
- rtc = dev.start + 0x10;
- DPRINTF (("Found rtc at 0x%x\n", rtc));
- }
- if ((n = find_apbslv (VENDOR_GAISLER, GAISLER_IRQMP, &dev)) == 1)
- {
- irqmp = dev.start;
- DPRINTF (("Found irqmp at 0x%x\n", rtc));
- }
-}
diff --git a/libgloss/sparc_leon/pnpinit_malloc.c b/libgloss/sparc_leon/pnpinit_malloc.c
deleted file mode 100644
index ed7640588..000000000
--- a/libgloss/sparc_leon/pnpinit_malloc.c
+++ /dev/null
@@ -1,679 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/amba.h>
-#undef AMBA_TYPE_AHBIO_ADDR
-#include <asm-leon/lambapp.h>
-#include <string.h>
-
-#define AMBA_CONF_AREA 0xff000
-#define AMBA_AHB_SLAVE_CONF_AREA (1 << 11)
-#define AMBA_APB_SLAVES 16
-
-#define DPRINTF(p) printf p
-
-/* Allocate */
-struct ambapp_dev_hdr *
-ambapp_alloc_dev_struct (int dev_type)
-{
- int size = sizeof (struct ambapp_dev_hdr);
- struct ambapp_dev_hdr *dev;
-
- if (dev_type == DEV_APB_SLV)
- {
- size += sizeof (struct ambapp_apb_info);
- }
- else
- {
- /* AHB */
- size += sizeof (struct ambapp_ahb_info);
- }
- dev = malloc (size);
- if (dev == NULL)
- return NULL;
- memset (dev, 0, size);
- dev->devinfo = (void *) (dev + 1);
- dev->dev_type = dev_type;
- return dev;
-}
-
-unsigned int
-ambapp_addr_from (struct ambapp_mmap *mmaps, unsigned int address)
-{
- /* no translation? */
- if (!mmaps)
- return address;
-
- while (mmaps->size)
- {
- if ((address >= mmaps->remote_adr)
- && (address <= (mmaps->remote_adr + (mmaps->size - 1))))
- {
- return (address - mmaps->remote_adr) + mmaps->local_adr;
- }
- mmaps++;
- }
- return 1;
-}
-
-void
-ambapp_ahb_dev_init (unsigned int ioarea,
- struct ambapp_mmap *mmaps,
- struct ambapp_pnp_ahb *ahb, struct ambapp_dev_hdr *dev)
-{
- int bar;
- struct ambapp_ahb_info *ahb_info;
- unsigned int addr, mask, mbar;
-
- /* Setup device struct */
- dev->vendor = ambapp_pnp_vendor (ahb->id);
- dev->device = ambapp_pnp_device (ahb->id);
- ahb_info = dev->devinfo;
- ahb_info->ver = ambapp_pnp_ver (ahb->id);
- ahb_info->irq = ambapp_pnp_irq (ahb->id);
- ahb_info->custom[0] = (unsigned int) ahb->custom[0];
- ahb_info->custom[1] = (unsigned int) ahb->custom[1];
- ahb_info->custom[2] = (unsigned int) ahb->custom[2];
-
- DPRINTF (("+AHB device %d:%d\n", dev->device, dev->vendor));
-
- /* Memory BARs */
- for (bar = 0; bar < 4; bar++)
- {
- mbar = ahb->mbar[bar];
- if (mbar == 0)
- {
- addr = 0;
- mask = 0;
- }
- else
- {
- addr = ambapp_pnp_start (mbar);
- if (ambapp_pnp_mbar_type (mbar) == AMBA_TYPE_AHBIO)
- {
- /* AHB I/O area is releative IO_AREA */
- addr = AMBA_TYPE_AHBIO_ADDR (addr, ioarea);
- mask =
- (((unsigned int) (ambapp_pnp_mbar_mask ((~mbar)) << 8) |
- 0xff)) + 1;
- }
- else
- {
- /* AHB memory area, absolute address */
- addr = ambapp_addr_from (mmaps, addr);
- mask =
- (~((unsigned int) (ambapp_pnp_mbar_mask (mbar) << 20))) + 1;
- }
- }
- ahb_info->start[bar] = addr;
- ahb_info->mask[bar] = mask;
- }
-}
-
-void
-ambapp_apb_dev_init (unsigned int base,
- struct ambapp_mmap *mmaps,
- struct ambapp_pnp_apb *apb, struct ambapp_dev_hdr *dev)
-{
- struct ambapp_apb_info *apb_info;
-
- /* Setup device struct */
- dev->vendor = ambapp_pnp_vendor (apb->id);
- dev->device = ambapp_pnp_device (apb->id);
- apb_info = dev->devinfo;
- apb_info->ver = ambapp_pnp_ver (apb->id);
- apb_info->irq = ambapp_pnp_irq (apb->id);
- apb_info->start = ambapp_pnp_apb_start (apb->iobar, base);
- apb_info->mask = ambapp_pnp_apb_mask (apb->iobar);
-
- DPRINTF (("+APB device %d:%d\n", dev->device, dev->vendor));
-
-
-}
-
-#define MAX_NUM_BUSES 16
-void
-ambapp_add_scanned_bus (unsigned int *ioareas, unsigned int ioarea)
-{
- int i;
- for (i = 0; i < MAX_NUM_BUSES; i++)
- {
- if (ioareas[i] == 0)
- {
- ioareas[i] = ioarea;
- return;
- }
- }
-}
-
-int
-ambapp_has_been_scanned (unsigned int *ioareas, unsigned int ioarea)
-{
- int i;
- if (!ioareas)
- return 0;
-
- for (i = 0; i < MAX_NUM_BUSES; i++)
- {
- if (ioareas[i] == 0)
- {
- break;
- }
- else if (ioareas[i] == ioarea)
- {
- return 1;
- }
- }
- return 0;
-}
-
-int
-ambapp_scan (unsigned int ioarea,
- struct ambapp_dev_hdr *parent,
- struct ambapp_mmap *mmaps,
- void *(*memfunc) (void *dest, const void *src, int n),
- struct ambapp_dev_hdr **root, void *internal)
-{
- struct ambapp_pnp_ahb *ahb, ahb_buf;
- struct ambapp_pnp_apb *apb, apb_buf;
- struct ambapp_dev_hdr *dev, *prev, *prevapb, *apbdev;
- struct ambapp_ahb_info *ahb_info;
- int maxloops = 64;
- unsigned int apbbase, bridge_address;
- int i, j;
-
- DPRINTF (("Scan at 0x%08x\n", ioarea));
-
- /* Default to memcpy() */
- if (!memfunc)
- memfunc = (void *(*)(void *dest, const void *src, int n)) memcpy;
-
- *root = NULL;
-
- if (parent)
- {
- /* scan first bus for 64 devices, rest for 16 devices */
- maxloops = 16;
- }
- else
- {
- DPRINTF (("+(malloc:"));
- internal = malloc (sizeof (unsigned int) * MAX_NUM_BUSES);
- DPRINTF (("0x%x)\n", internal));
-
- if (!internal)
- return -1;
- memset (internal, 0, sizeof (unsigned int) * MAX_NUM_BUSES);
-
- ambapp_add_scanned_bus (internal, ioarea);
- }
-
- prev = parent;
-
- /* AHB MASTERS */
- ahb = (struct ambapp_pnp_ahb *) (ioarea | AMBA_CONF_AREA);
- for (i = 0; i < maxloops; i++)
- {
- memfunc (&ahb_buf, ahb, sizeof (struct ambapp_pnp_ahb));
- if (ahb_buf.id != 0)
- {
- /* A AHB device present here */
- dev = ambapp_alloc_dev_struct (DEV_AHB_MST);
- if (!dev)
- return -1;
-
- ambapp_ahb_dev_init (ioarea, mmaps, &ahb_buf, dev);
-
- if (*root == NULL)
- *root = dev;
-
- if (prev != parent)
- prev->next = dev;
- dev->prev = prev;
- prev = dev;
- }
- ahb++;
- }
-
- /* AHB SLAVES */
- ahb =
- (struct ambapp_pnp_ahb *) (ioarea | AMBA_CONF_AREA |
- AMBA_AHB_SLAVE_CONF_AREA);
- for (i = 0; i < maxloops; i++)
- {
- memfunc (&ahb_buf, ahb, sizeof (struct ambapp_pnp_ahb));
- if (ahb_buf.id != 0)
- {
- /* A AHB device present here */
- dev = ambapp_alloc_dev_struct (DEV_AHB_SLV);
- if (!dev)
- return -1;
-
- ambapp_ahb_dev_init (ioarea, mmaps, &ahb_buf, dev);
-
- if (prev != parent)
- prev->next = dev;
- dev->prev = prev;
- prev = dev;
-
- /* Is it a AHB/AHB Bridge ? */
- if ((dev->device == GAISLER_AHB2AHB)
- && (dev->vendor == VENDOR_GAISLER))
- {
- /* AHB/AHB Bridge Found, recurse down the Bridge */
- ahb_info = dev->devinfo;
- if (ahb_info->ver)
- {
- bridge_address =
- ambapp_addr_from (mmaps, ahb_info->custom[1]);
-
- DPRINTF (("+(AHBAHB:0x%x)\n", bridge_address));
-
- /* Makes sure bus only scanned once */
- if (ambapp_has_been_scanned (internal, bridge_address) ==
- NULL)
- {
- ambapp_add_scanned_bus (internal, bridge_address);
- if (ambapp_scan
- (bridge_address, dev, mmaps, memfunc,
- &dev->children, internal))
- return -1;
- }
- }
- }
- else if ((dev->device == GAISLER_APBMST)
- && (dev->vendor == VENDOR_GAISLER))
- {
- /* AHB/APB Bridge Found, add the APB devices to this AHB Slave's children */
- prevapb = dev;
- ahb_info = dev->devinfo;
- apbbase = ahb_info->start[0];
- apb = (struct ambapp_pnp_apb *) (apbbase | AMBA_CONF_AREA);
- for (j = 0; j < AMBA_APB_SLAVES; j++)
- {
- memfunc (&apb_buf, apb, sizeof (struct ambapp_pnp_apb));
- if (apb_buf.id)
- {
- apbdev = ambapp_alloc_dev_struct (DEV_APB_SLV);
- if (!dev)
- return -1;
-
- ambapp_apb_dev_init (apbbase, mmaps, &apb_buf, apbdev);
-
- if (prevapb != dev)
- prevapb->next = apbdev;
- else
- dev->children = apbdev;
- apbdev->prev = prevapb;
- prevapb = apbdev;
- }
- apb++;
- }
- }
- }
- ahb++;
- }
-
- if (parent == NULL)
- {
- free (internal);
- }
-
- return 0;
-}
-
-/* Match search options againt device */
-int
-ambapp_dev_match_options (struct ambapp_dev_hdr *dev, unsigned int options,
- int vendor, int device)
-{
- if ((((options & (OPTIONS_ALL_DEVS)) == OPTIONS_ALL_DEVS) || /* Match TYPE */
- ((options & OPTIONS_AHB_MSTS) && (dev->dev_type == DEV_AHB_MST)) || ((options & OPTIONS_AHB_SLVS) && (dev->dev_type == DEV_AHB_SLV)) || ((options & OPTIONS_APB_SLVS) && (dev->dev_type == DEV_APB_SLV))) && ((vendor == -1) || (vendor == dev->vendor)) && /* Match ID */
- ((device == -1) || (device == dev->device)) && (((options & OPTIONS_ALL) == OPTIONS_ALL) || /* Match Allocated State */
- ((options &
- OPTIONS_FREE)
- && DEV_IS_FREE (dev))
- ||
- ((options &
- OPTIONS_ALLOCATED)
- &&
- DEV_IS_ALLOCATED
- (dev))))
- {
- return 1;
- }
- return 0;
-}
-
-/* If device is an APB bridge all devices on the APB bridge is processed */
-static int
-ambapp_for_each_apb (struct ambapp_dev_hdr *dev,
- unsigned int options,
- int vendor,
- int device, int maxdepth, ambapp_func_t func, void *arg)
-{
- int index;
- struct ambapp_dev_hdr *apbslv;
-
- if (maxdepth < 0)
- return 0;
-
- if (dev->children && (dev->children->dev_type == DEV_APB_SLV))
- {
- /* Found a APB Bridge */
- index = 0;
- apbslv = dev->children;
- while (apbslv)
- {
- if (ambapp_dev_match_options (apbslv, options, vendor, device) == 1)
- {
- if (func (apbslv, index, maxdepth, arg) == 1)
- return 1; /* Signalled stopped */
- }
- index++;
- apbslv = apbslv->next;
- }
- }
- return 0;
-}
-
-/* Traverse the prescanned device information */
-int
-ambapp_for_each (struct ambapp_dev_hdr *root,
- unsigned int options,
- int vendor,
- int device, int maxdepth, ambapp_func_t func, void *arg)
-{
- struct ambapp_dev_hdr *dev;
- int ahb_slave = 0;
- int index;
-
- if (maxdepth < 0)
- return 0;
-
- /* Start at device 'root' and process downwards.
- *
- * Breadth first search, search order
- * 1. AHB MSTS
- * 2. AHB SLVS
- * 3. APB SLVS on primary bus
- * 4. AHB/AHB secondary... -> step to 1.
- */
-
- /* AHB MST / AHB SLV */
- if (options & (OPTIONS_AHB_MSTS | OPTIONS_AHB_SLVS | OPTIONS_DEPTH_FIRST))
- {
- index = 0;
- dev = root;
- while (dev)
- {
- if ((dev->dev_type == DEV_AHB_SLV) && !ahb_slave)
- {
- /* First AHB Slave */
- ahb_slave = 1;
- index = 0;
- }
-
- /* Conditions must be fullfilled for function to be called */
- if (ambapp_dev_match_options (dev, options, vendor, device) == 1)
- {
- /* Correct device and vendor ID */
- if (func (dev, index, maxdepth, arg) == 1)
- return 1; /* Signalled stopped */
- }
-
- if ((options & OPTIONS_DEPTH_FIRST) && (options & OPTIONS_APB_SLVS))
- {
- /* Check is APB bridge, and process all APB Slaves in that case */
- if (ambapp_for_each_apb
- (dev, options, vendor, device, (maxdepth - 1), func,
- arg) == 1)
- return 1; /* Signalled stopped */
- }
-
- if (options & OPTIONS_DEPTH_FIRST)
- {
- if (dev->children && (dev->children->dev_type != DEV_APB_SLV))
- {
- /* Found AHB Bridge, recurse */
- if (ambapp_for_each
- (dev->children, options, vendor, device, (maxdepth - 1),
- func, arg) == 1)
- return 1;
- }
- }
-
- index++;
- dev = dev->next;
- }
- }
-
- /* Find APB Bridges */
- if ((options & OPTIONS_APB_SLVS) && !(options & OPTIONS_DEPTH_FIRST))
- {
- dev = root;
- while (dev)
- {
- /* Check is APB bridge, and process all APB Slaves in that case */
- if (ambapp_for_each_apb
- (dev, options, vendor, device, (maxdepth - 1), func, arg) == 1)
- return 1; /* Signalled stopped */
- dev = dev->next;
- }
- }
-
- /* Find AHB Bridges */
- if (!(options & OPTIONS_DEPTH_FIRST))
- {
- dev = root;
- while (dev)
- {
- if (dev->children && (dev->children->dev_type != DEV_APB_SLV))
- {
- /* Found AHB Bridge, recurse */
- if (ambapp_for_each
- (dev->children, options, vendor, device, (maxdepth - 1),
- func, arg) == 1)
- return 1;
- }
- dev = dev->next;
- }
- }
-
- return 0;
-}
-
-int
-ambapp_alloc_dev (struct ambapp_dev_hdr *dev, void *owner)
-{
- if (dev->owner)
- return -1;
- dev->owner = owner;
- return 0;
-}
-
-void
-ambapp_free_dev (struct ambapp_dev_hdr *dev)
-{
- dev->owner = NULL;
-}
-
-struct ambapp_dev_find_match_arg
-{
- int index;
- int count;
- int type;
- void *dev;
-};
-
-/* AMBA PP find routines */
-int
-ambapp_dev_find_match (struct ambapp_dev_hdr *dev, int index, int maxdepth,
- void *arg)
-{
- struct ambapp_dev_find_match_arg *p = arg;
-
- if (p->index == 0)
- {
- /* Found controller, stop */
- if (p->type == DEV_APB_SLV)
- {
- *(struct ambapp_apb_info *) p->dev =
- *(struct ambapp_apb_info *) dev->devinfo;
- p->dev = ((struct ambapp_apb_info *) p->dev) + 1;
- }
- else
- {
- *(struct ambapp_ahb_info *) p->dev =
- *(struct ambapp_ahb_info *) dev->devinfo;
- p->dev = ((struct ambapp_ahb_info *) p->dev) + 1;
- }
- p->count--;
- if (p->count < 1)
- return 1;
- }
- else
- {
- p->index--;
- }
- return 0;
-}
-
-int
-ambapp_find_apbslvs_next (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_apb_info *dev, int index, int maxno)
-{
- struct ambapp_dev_find_match_arg arg;
-
- arg.index = index;
- arg.count = maxno;
- arg.type = DEV_APB_SLV; /* APB */
- arg.dev = dev;
-
- ambapp_for_each (root, (OPTIONS_ALL | OPTIONS_APB_SLVS), vendor, device, 10,
- ambapp_dev_find_match, &arg);
-
- return maxno - arg.count;
-}
-
-int
-ambapp_find_apbslv (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_apb_info *dev)
-{
- return ambapp_find_apbslvs_next (root, vendor, device, dev, 0, 1);
-}
-
-int
-ambapp_find_apbslv_next (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_apb_info *dev, int index)
-{
- return ambapp_find_apbslvs_next (root, vendor, device, dev, index, 1);
-}
-
-int
-ambapp_find_apbslvs (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_apb_info *dev, int maxno)
-{
- return ambapp_find_apbslvs_next (root, vendor, device, dev, 0, maxno);
-}
-
-int
-ambapp_find_ahbslvs_next (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_ahb_info *dev, int index, int maxno)
-{
- struct ambapp_dev_find_match_arg arg;
-
- arg.index = index;
- arg.count = maxno;
- arg.type = DEV_AHB_SLV; /* AHB SLV */
- arg.dev = dev;
-
- ambapp_for_each (root, (OPTIONS_ALL | OPTIONS_AHB_SLVS), vendor, device, 10,
- ambapp_dev_find_match, &arg);
-
- return maxno - arg.count;
-}
-
-int
-ambapp_find_ahbslv_next (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_ahb_info *dev, int index)
-{
- return ambapp_find_ahbslvs_next (root, vendor, device, dev, index, 1);
-}
-
-int
-ambapp_find_ahbslv (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_ahb_info *dev)
-{
- return ambapp_find_ahbslvs_next (root, vendor, device, dev, 0, 1);
-}
-
-int
-ambapp_find_ahbslvs (struct ambapp_dev_hdr *root, int vendor, int device,
- struct ambapp_ahb_info *dev, int maxno)
-{
- return ambapp_find_ahbslvs_next (root, vendor, device, dev, 0, maxno);
-}
-
-struct ambapp_dev_hdr *
-ambapp_find_parent (struct ambapp_dev_hdr *dev)
-{
- while (dev->prev)
- {
- if (dev == dev->prev->children)
- {
- return dev->prev;
- }
- dev = dev->prev;
- }
- return NULL;
-}
-
-
-struct ambapp_dev_hdr *ambapp_root = NULL;
-extern unsigned int console;
-extern unsigned int rtc;
-
-void
-pnpinit (void)
-{
- struct ambapp_apb_info dev;
- int n;
- ambapp_scan (LEON3_IO_AREA, NULL, NULL, NULL, &ambapp_root, NULL);
- if ((n =
- ambapp_find_apbslv (ambapp_root, VENDOR_GAISLER, GAISLER_APBUART,
- &dev)) == 1)
- {
- console = dev.start;
- DPRINTF (("Found abuart at 0x%x\n", console));
- }
- if ((n =
- ambapp_find_apbslv (ambapp_root, VENDOR_GAISLER, GAISLER_GPTIMER,
- &dev)) == 1)
- {
- rtc = dev.start + 0x10;
- DPRINTF (("Found rtc at 0x%x\n", rtc));
- }
-}
diff --git a/libgloss/sparc_leon/pnpinit_simple.c b/libgloss/sparc_leon/pnpinit_simple.c
deleted file mode 100644
index 3fb98018d..000000000
--- a/libgloss/sparc_leon/pnpinit_simple.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/amba.h>
-#undef AMBA_TYPE_AHBIO_ADDR
-#include <asm-leon/lambapp.h>
-#include <string.h>
-
-void
-pnpinit (void)
-{
-}
diff --git a/libgloss/sparc_leon/regwin.S b/libgloss/sparc_leon/regwin.S
deleted file mode 100644
index a9c18f944..000000000
--- a/libgloss/sparc_leon/regwin.S
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-
- .seg "text"
-
-
-/* Number of register windows */
- .global _nwindows_min1, _nwindows
-
- ! Window overflow trap handler on save.
- ! Touches %g1
- /* ------- */
- .weak _window_overflow
- .set _window_overflow,__window_overflow
- .weak _window_overflow_svt
- .set _window_overflow_svt,__window_overflow_svt
- /* ------- */
- !.global _window_overflow,_window_overflow_svt
- .global __window_overflow_rettseq,__window_overflow_rettseq_ret,__window_overflow_slow1
-
-__window_overflow_svt:
-__window_overflow:
-#ifndef _FLAT
-__window_overflow_rettseq:
- mov %wim, %l3 ! Calculate next WIM
- mov %g1, %l7
- srl %l3, 1, %g1
-__window_overflow_rettseq_ret:
- sethi %hi(_nwindows_min1), %l4 ! NWINDOWS-1
- ld [%l4+%lo(_nwindows_min1)], %l4
-
- sll %l3, %l4 , %l4
- or %l4, %g1, %g1
-
- save ! Get into window to be saved.
- mov %g1, %wim
- nop; nop; nop
- std %l0, [%sp + 0];
- std %l2, [%sp + 8];
- std %l4, [%sp + 16];
- std %l6, [%sp + 24];
- std %i0, [%sp + 32];
- std %i2, [%sp + 40];
- std %i4, [%sp + 48];
- std %i6, [%sp + 56];
- restore ! Go back to trap window.
- mov %l7, %g1
-
- jmp %l1 ! Re-execute save.
- rett %l2
- nop
-
-__window_overflow_slow1: ! space for possible stackcheck patch
- nop
- nop
-#else
- ta 0 ! halt
-__window_overflow_rettseq:
-__window_overflow_rettseq_ret:
-__window_overflow_slow1:
- nop
- nop
- nop
-#endif
-
- /* Window underflow trap handler on restore. */
-
- ! Touches %g1
- /* ------- */
- .weak _window_underflow
- .set _window_underflow,__window_underflow
- .weak _window_underflow_svt
- .set _window_underflow_svt,__window_underflow_svt
- /* ------- */
- !.global _window_underflow,_window_underflow_svt
-
-__window_underflow_svt:
-__window_underflow:
-#ifndef _FLAT
- mov %wim, %l3 ! Calculate next WIM
- sll %l3, 1, %l4
-
- sethi %hi(_nwindows_min1), %l5 ! NWINDOWS-1
- ld [%l5+%lo(_nwindows_min1)], %l5
-
- srl %l3, %l5, %l5
- or %l5, %l4, %l5
- mov %l5, %wim
- nop; nop; nop
- restore ! Two restores to get into the
- restore ! window to restore
- ldd [%sp + 0], %l0; ! Restore window from the stack
- ldd [%sp + 8], %l2;
- ldd [%sp + 16], %l4;
- ldd [%sp + 24], %l6;
- ldd [%sp + 32], %i0;
- ldd [%sp + 40], %i2;
- ldd [%sp + 48], %i4;
- ldd [%sp + 56], %i6;
- save ! Get back to the trap window.
- save
- jmp %l1 ! Re-execute restore.
- rett %l2
-#else
- ta 0 ! halt
-#endif
-
-
diff --git a/libgloss/sparc_leon/regwin_patch.c b/libgloss/sparc_leon/regwin_patch.c
deleted file mode 100644
index 319403e04..000000000
--- a/libgloss/sparc_leon/regwin_patch.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-
-extern volatile unsigned int __window_overflow_rettseq[3];
-extern volatile unsigned int __window_overflow_slow1[2];
-
-static unsigned int installed = 0;
-static unsigned int save__window_overflow_rettseq[3];
-
-int
-install_winoverflow_hook (void (*func) (void))
-{
- if (installed)
- {
- return 0;
- }
- if (!installed)
- {
- /*
- a7 50 00 00 rd %wim, %l3
- ae 10 00 01 mov %g1, %l7
- 83 34 e0 01 srl %l3, 1, %g1
-
- 81 c4 40 00 jmp %l1
- 81 cc 80 00 rett %l2 */
- save__window_overflow_rettseq[0] = __window_overflow_rettseq[0];
- save__window_overflow_rettseq[1] = __window_overflow_rettseq[1];
- save__window_overflow_rettseq[2] = __window_overflow_rettseq[2];
-
- /*29 10 00 31 sethi %hi(0x4000c400), %l4
- 81 c5 22 48 jmp %l4 + 0x248
- 01 00 00 00 nop */
-
- __window_overflow_rettseq[0] = ((((unsigned int) func) >> 10) & 0x3fffff) | 0x29000000; /* upper 22 */
- __window_overflow_rettseq[1] = ((((unsigned int) func)) & 0x03ff) | 0x81c52000; /* lower 10 */
- __window_overflow_rettseq[2] = 0x01000000; /* nop */
-
- sparc_leon23_icache_flush ();
- installed = 1;
- }
- return 0;
-}
-
-void
-uninstall_winoverflow_hook ()
-{
- if (installed)
- {
- __window_overflow_rettseq[0] = save__window_overflow_rettseq[0];
- __window_overflow_rettseq[1] = save__window_overflow_rettseq[1];
- __window_overflow_rettseq[2] = save__window_overflow_rettseq[2];
-
- sparc_leon23_icache_flush ();
- installed = 0;
- }
-}
diff --git a/libgloss/sparc_leon/regwin_slow.S b/libgloss/sparc_leon/regwin_slow.S
deleted file mode 100644
index 619183428..000000000
--- a/libgloss/sparc_leon/regwin_slow.S
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-
- .seg "text"
-
-
-/* Number of register windows */
- .global _nwindows_min1, _nwindows
-
- ! Window overflow trap handler on save.
- ! Touches %g1
- /* ------- */
- .weak _window_overflow
- .set _window_overflow,__window_overflow
- .weak _window_overflow_svt
- .set _window_overflow_svt,__window_overflow_svt
- /* ------- */
- !.global _window_overflow,_window_overflow_svt
- .global __window_overflow_rettseq,__window_overflow_rettseq_ret,__window_overflow_slow1
-
-__window_overflow_svt:
-__window_overflow:
-#ifndef _FLAT
-__window_overflow_rettseq:
- mov %wim, %l3 ! Calculate next WIM
- mov %g1, %l7
- srl %l3, 1, %g1
-
-__window_overflow_rettseq_ret:
- sethi %hi(_nwindows_min1), %l4 ! NWINDOWS-1
- ld [%l4+%lo(_nwindows_min1)], %l4
-
- sll %l3, %l4 , %l4
- or %l4, %g1, %g1
-
- save ! Get into window to be saved.
- mov %g1, %wim
- nop; nop; nop
- std %l0, [%sp + 0];
- std %l2, [%sp + 8];
- std %l4, [%sp + 16];
- std %l6, [%sp + 24];
- std %i0, [%sp + 32];
- std %i2, [%sp + 40];
- std %i4, [%sp + 48];
- std %i6, [%sp + 56];
- restore ! Go back to trap window.
- mov %l7, %g1
-
- jmp %l1 ! Re-execute save.
- rett %l2
- nop
-
-__window_overflow_slow1: ! space for possible stackcheck patch
- nop
- nop
-#else
- ta 0 ! halt
-__window_overflow_rettseq:
-__window_overflow_rettseq_ret:
-__window_overflow_slow1:
- nop
- nop
- nop
-#endif
-
- /* Window underflow trap handler on restore. */
-
- ! Touches %g1
- /* ------- */
- .weak _window_underflow
- .set _window_underflow,__window_underflow
- .weak _window_underflow_svt
- .set _window_underflow_svt,__window_underflow_svt
- /* ------- */
- !.global _window_underflow,_window_underflow_svt
-
-__window_underflow_svt:
-__window_underflow:
-#ifndef _FLAT
- mov %wim, %l3 ! Calculate next WIM
- sll %l3, 1, %l4
-
- sethi %hi(_nwindows_min1), %l5 ! NWINDOWS-1
- ld [%l5+%lo(_nwindows_min1)], %l5
-
- srl %l3, %l5, %l5
- or %l5, %l4, %l5
- mov %l5, %wim
- nop; nop; nop
- restore ! Two restores to get into the
- restore ! window to restore
- ldd [%sp + 0], %l0; ! Restore window from the stack
- ldd [%sp + 8], %l2;
- ldd [%sp + 16], %l4;
- ldd [%sp + 24], %l6;
- ldd [%sp + 32], %i0;
- ldd [%sp + 40], %i2;
- ldd [%sp + 48], %i4;
- ldd [%sp + 56], %i6;
- save ! Get back to the trap window.
- save
- jmp %l1 ! Re-execute restore.
- rett %l2
-#else
- ta 0 ! halt
-#endif
-
-
diff --git a/libgloss/sparc_leon/regwinflush.S b/libgloss/sparc_leon/regwinflush.S
deleted file mode 100644
index b21454c98..000000000
--- a/libgloss/sparc_leon/regwinflush.S
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leon.h>
-#include <asm-leon/leonstack.h>
-#include <asm-leon/asmmacro.h>
-
- .seg "data"
- .global _lb_spillglobals, _lb_issideflush
- .align 4
-_lb_spillglobals:
- .word 0
- .word 0
- .word 0
- .word 0
- .word 0
- .word 0
- .word 0
-_lb_issideflush:
- .word 0 /* off: 28 */
-
- .seg "text"
-
-/* =============================================== */
-
-#define _SV save %sp, -SF_REGS_SZ, %sp
-#define _RS restore
-
- /* ------- */
- .weak _flush_windows
- .set _flush_windows,__flush_windows
- .weak _flush_windows_svt
- .set _flush_windows_svt,__flush_windows_svt
- /* ------- */
- !.global _flush_windows,_flush_windows_svt
-__flush_windows_svt:
- rd %wim, %l3
-
-__flush_windows:
- SAVE_ALL
-
-#ifndef _FLAT
-
- set _lb_issideflush, %l3
- st %l0, [%l3] /* mark as inside flush */
-
- wr %l0, SPARC_PSR_ET_MASK, %psr
- nop; nop; nop
-
- _SV; _SV; _SV; _SV; _SV; _SV; _SV;
- _RS; _RS; _RS; _RS; _RS; _RS; _RS;
-
- set _lb_issideflush, %l3
- st %g0, [%l3] /* mark as outside flush */
-
- /* Advance over the trap instruction. */
- ld [%sp + SF_REGS_SZ + PT_NPC], %l1
- add %l1, 0x4, %l2
- st %l1, [%sp + SF_REGS_SZ + PT_PC]
- st %l2, [%sp + SF_REGS_SZ + PT_NPC]
-#endif
-
- RESTORE_ALL
-
-/* =============================================== */
-
-_irqcall_flush_windows:
-#ifndef _FLAT
- set _lb_spillglobals,%l4
- st %g1,[%l4+0]
- st %g4,[%l4+4]
- st %l0,[%l4+16]
- st %l1,[%l4+20]
- st %l2,[%l4+24]
- st %l4,[%l4+28] /* mark as inside flush */
-
- restore
-
- mov %psr, %g1
- or %g1, SPARC_PSR_PIL_MASK, %g1
- wr %g1, SPARC_PSR_ET_MASK, %psr /* disable irq, enable traps */
- nop
- nop
- nop
-
- sethi %hi(_nwindows_min1), %g4 /* flush registers */
- ld [%g4+%lo(_nwindows_min1)], %g4
-1: save /* NWINDOWS-1 times */
- sub %g4,1,%g4
-
- /*****************/
- andncc %g4,0xff,%g0
- be .lab1
- nop
- nop
-
-.lab1: /*****************/
-
- cmp %g4,%g0
- bne 1b
- nop
-
- sethi %hi(_nwindows_min1), %g4
- ld [%g4+%lo(_nwindows_min1)], %g4
-2: restore /* NWINDOWS-1 times */
-
- /*****************/
- andncc %g4,0xff,%g0
- be .lab2
- nop
- nop
-
-.lab2: /*****************/
-
- sub %g4,1,%g4
- cmp %g4,%g0
- bne 2b
- nop
-
- save
-
- set _lb_spillglobals,%l4
- ld [%l4+4], %g4
- ld [%l4+0], %g1
- ld [%l4+16],%l0
- ld [%l4+20],%l1
- ld [%l4+24],%l2
- st %g0,[%l4+28] /* clean inside flush mark */
-
-#endif
-
- wr %l0, 0, %psr /* restore psr */
- nop
- nop
- nop
-
- jmpl %l2, %g0
- rett %l2 + 4
-
-/* =============================================== */
-
- /* ------- */
- .weak _irqcall_disableirq
- .set _irqcall_disableirq,__irqcall_disableirq
- .weak _irqcall_disableirq_svt
- .set _irqcall_disableirq_svt,__irqcall_disableirq_svt
- /* ------- */
-
-__irqcall_disableirq:
-__irqcall_disableirq_svt:
- or %l0, SPARC_PSR_PIL_MASK, %l0
- mov %l0, %psr
- nop; nop; nop
- jmpl %l2, %g0
- rett %l2 + 4
-
-/* =============================================== */
-
- /*
- * system call (ta 0x2):
- * 2: irq_disable:
- * o1 = 2
- * 3: irq_enable:
- * o0 = old_flags
- * o1 = 3
- * 4: enter supervisor mode (from user mode):
- * o1 = 4
- * 5: enter user mode:
- * o1 = 5
- * 6: flush windows
- *
- * On entry:
- *
- * l0 = psr (from trap table)
- * l1 = pc
- * l2 = npc
- * i0 = system call id
- */
-
- /* ------- */
- .weak _irqcall
- .set _irqcall,__irqcall
- .weak _irqcall_svt
- .set _irqcall_svt,__irqcall_svt
- /* ------- */
- !.global _irqcall,_irqcall_svt
-__irqcall_svt:
-__irqcall:
-
- subcc %i1, 2, %g0 ! syscall 2, disable interrupts
- bne 3f
- or %l0, 0x0f00, %l4 ! set PIL=15
- mov %l4, %psr
- or %l0, SPARC_PSR_ET_MASK, %i0 ! return old psr with ET=1
- ba,a 9f
-3:
- subcc %i1, 3, %g0 ! syscall 3, enable interrupts
- bne 4f
- and %i0, SPARC_PSR_PIL_MASK, %l4
- andn %l0, SPARC_PSR_PIL_MASK, %l5
- or %l5, %l4, %l4
- mov %l4, %psr
- ba,a 9f
-4:
- subcc %i1, 4, %g0 ! syscall 4, enter supervisor
- bne 5f
-
- mov %psr, %l4
- or %l4,SPARC_PSR_PS_MASK,%l4
- mov %l4, %psr ! set previous supervisor %psr
- nop; nop; nop
- ba,a 9f
-
-5:
- subcc %i1, 5, %g0 ! syscall 5, enter user
- bne 6f
-
- mov %psr, %l4
- andn %l4,SPARC_PSR_PS_MASK,%l4
- mov %l4, %psr ! clear previous supervisor %psr, return to user mode
- nop; nop; nop
- ba,a 9f
-
-6:
- subcc %i1, 6, %g0 ! syscall 6, flush windows
- bne 1f
- nop
-
- ba,a _irqcall_flush_windows
-
-1:
- ta 0 ! halt
-9: ! leave
- jmpl %l2, %g0
- rett %l2 + 4
-
-/* =============================================== */
-
- /* call _irqcall through trap */
- .global leonbare_enable_traps !void leonbare_enable_traps(unsigned long old_flags);
-leonbare_enable_traps:
- set 3,%o1
- retl
- ta 0x2
-
-/* =============================================== */
-
- /* call _irqcall through trap */
- .global leonbare_disable_traps !unsigned long leonbare_disable_traps();
-leonbare_disable_traps:
- set 2,%o1
- retl
- ta 0x2
-
-/* =============================================== */
-
- /* flush all windows */
- .global leonbare_flush_windows !void leonbare_flush_windows();
-leonbare_flush_windows:
- set 6,%o1
- retl
- ta 0x2
-
diff --git a/libgloss/sparc_leon/rtc.c b/libgloss/sparc_leon/rtc.c
deleted file mode 100644
index a67fb43fc..000000000
--- a/libgloss/sparc_leon/rtc.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-int *rtc = (int *) 0x80000310;
diff --git a/libgloss/sparc_leon/rtrap.S b/libgloss/sparc_leon/rtrap.S
deleted file mode 100644
index 677b2b1ec..000000000
--- a/libgloss/sparc_leon/rtrap.S
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/winmacros.h>
-
-/* Registers to not touch at all. */
-#define t_psr l0
-#define t_pc l1
-#define t_npc l2
-#define t_wim l3
-#define twin_tmp1 l4
-#define glob_tmp g4
-#define curptr g6
-
- /* Number of register windows */
- .global _nwindows_min1, _nwindows
-
- .text
- .align 4
- .globl leonbare_trapreturn, schedule_callback
-
-leonbare_trapreturn:
-
- /* a optional scheduler can be called here */
- set schedule_callback, %g2
- ld [%g2], %g2
- cmp %g2,%g0
- beq 3f
- nop
-
- jmpl %g2,%o7
-#ifndef _SOFT_FLOAT
- add %sp, FW_REGS_SZ + 8 + SF_REGS_SZ , %o1 ! pt_regs ptr
-#else
- add %sp, SF_REGS_SZ , %o1 ! pt_regs ptr
-#endif
-
-3:
-
-#ifndef _SOFT_FLOAT
- ld [%sp + (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ - 4)],%g2
- sethi %hi(fpustate_current), %g3
- st %g2, [%g3+%lo(fpustate_current)]
-#endif
-
- wr %t_psr, 0x0, %psr ! enable nesting again, clear ET
-
-#ifndef _FLAT
- /* Will the rett land us in the invalid window? */
- mov 2, %g1
- sll %g1, %t_psr, %g1
-
- sethi %hi(_nwindows), %g2 !NWINDOWS
- ld [%g2+%lo(_nwindows)], %g2
-
- srl %g1, %g2, %g2
- or %g1, %g2, %g1
- rd %wim, %g2
- andcc %g2, %g1, %g0
- be 1f ! Nope, just return from the trap
- sll %g2, 0x1, %g1
-
- /* We have to grab a window before returning. */
- sethi %hi(_nwindows_min1), %g3 !NWINDOWS-1
- ld [%g3+%lo(_nwindows_min1)], %g3
-
- srl %g2, %g3, %g2
- or %g1, %g2, %g1
- and %g1, 0xff, %g1
-
- wr %g1, 0x0, %wim
-
- /* Grrr, make sure we load from the right %sp... */
- PT_LOAD_ALL(sp, t_psr, t_pc, t_npc, g1)
-
- restore %g0, %g0, %g0
- RW_LOAD(sp)
- b 2f
- save %g0, %g0, %g0
-
- /* Reload the entire frame in case this is from a
- * kernel system call or whatever...
- */
-1:
-#endif
- PT_LOAD_ALL(sp, t_psr, t_pc, t_npc, g1)
-2:
-
-#ifdef _FLAT
- restore
- RW_LOAD(sp)
- save
-#endif
-
- wr %t_psr, 0x0, %psr
- nop; nop; nop
-
- jmp %t_pc
- rett %t_npc
-
-
-
-
-
-#ifdef _FLAT
-#warning _FLAT not implemented
-#endif
-
-
diff --git a/libgloss/sparc_leon/rtrap_fast.S b/libgloss/sparc_leon/rtrap_fast.S
deleted file mode 100644
index 1aef5263c..000000000
--- a/libgloss/sparc_leon/rtrap_fast.S
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <asm-leon/leonstack.h>
-#include <asm-leon/winmacros.h>
-
-/* Registers to not touch at all. */
-#define t_psr l0
-#define t_pc l1
-#define t_npc l2
-#define t_wim l3
-#define twin_tmp1 l4
-#define glob_tmp g4
-#define curptr g6
-
- /* Number of register windows */
- .global _nwindows_min1, _nwindows
-
- .text
- .align 4
- .globl leonbare_trapreturn_fast, schedule_callback
-
-
-/* rtap return special for irqtrap.S */
-leonbare_trapreturn_fast:
-
- /* a optional scheduler can be called here */
- set schedule_callback, %g2
- ld [%g2], %g2
- cmp %g2,%g0
- beq 3f
- nop
-
- jmpl %g2,%o7
-#ifndef _SOFT_FLOAT
- add %sp, FW_REGS_SZ + 8 + SF_REGS_SZ , %o1 ! pt_regs ptr
-#else
- add %sp, SF_REGS_SZ , %o1 ! pt_regs ptr
-#endif
-
-3:
-
-#ifndef _SOFT_FLOAT
- ld [%sp + (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ - 4)],%g2
- sethi %hi(fpustate_current), %g3
- st %g2, [%g3+%lo(fpustate_current)]
- sethi %hi(fpustate_owner), %g3
- ld [%g3+%lo(fpustate_owner)], %g3
- cmp %g2, %g3
- bne didusefpu
- nop
-
- /* avoid fpu exception */
- ld [%sp + (SF_REGS_SZ + PT_REGS_SZ + FW_REGS_SZ - 8)], %g2
- set SPARC_PSR_EF_MASK, %g3
- and %g2, %g3, %g2
- andn %t_psr, %g3, %t_psr
- or %t_psr, %g2, %t_psr
- ba,a 1f
-
-didusefpu:
- add %sp,SF_REGS_SZ + PT_REGS_SZ,%g2
- cmp %g2, %g3
- bne 1f
-
- sethi %hi(fpustate_owner), %g3
- st %g0, [%g3+%lo(fpustate_owner)]
-
-1:
-#endif
-
- wr %t_psr, 0x0, %psr ! enable nesting again, clear ET
-
-#ifndef _FLAT
- /* Will the rett land us in the invalid window? */
- mov 2, %g1
- sll %g1, %t_psr, %g1
-
- sethi %hi(_nwindows), %g2 !NWINDOWS
- ld [%g2+%lo(_nwindows)], %g2
-
- srl %g1, %g2, %g2
- or %g1, %g2, %g1
- rd %wim, %g2
- andcc %g2, %g1, %g0
- be 1f ! Nope, just return from the trap
- sll %g2, 0x1, %g1
-
- /* We have to grab a window before returning. */
- sethi %hi(_nwindows_min1), %g3 !NWINDOWS-1
- ld [%g3+%lo(_nwindows_min1)], %g3
-
- srl %g2, %g3, %g2
- or %g1, %g2, %g1
- and %g1, 0xff, %g1
-
- wr %g1, 0x0, %wim
-
- /* Grrr, make sure we load from the right %sp... */
- PT_LOAD_ALL_FAST(sp, t_psr, t_pc, t_npc, g1)
-
- restore %g0, %g0, %g0
- RW_LOAD(sp)
- b 2f
- save %g0, %g0, %g0
-
- /* Reload the entire frame in case this is from a
- * kernel system call or whatever...
- */
-1:
-#endif
- PT_LOAD_ALL_FAST(sp, t_psr, t_pc, t_npc, g1)
-
-2: /*PT_LOAD_GLOBALS(sp)*/
-
-#ifdef _FLAT
- restore
- RW_LOAD(sp)
- save
-#endif
-
- wr %t_psr, 0x0, %psr
- nop; nop; nop
-
- jmp %t_pc
- rett %t_npc
-
-
-
-
-
-#ifdef _FLAT
-#warning _FLAT not implemented
-#endif
-
-
diff --git a/libgloss/sparc_leon/stop.S b/libgloss/sparc_leon/stop.S
deleted file mode 100644
index c8c8ac81c..000000000
--- a/libgloss/sparc_leon/stop.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
- .seg "text"
- .global _leonbase_Stop
-
-_leonbase_Stop:
- ta 0
- nop
diff --git a/libgloss/sparc_leon/timer.c b/libgloss/sparc_leon/timer.c
deleted file mode 100644
index 0f4683edf..000000000
--- a/libgloss/sparc_leon/timer.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/errno.h>
-#include <asm-leon/leon.h>
-#include <asm-leon/irq.h>
-#include <asm-leon/timer.h>
-#include <asm-leon/leoncompat.h>
-
-// '''''''''''''''''''''''''''''''''''''''''''''''''''''
-
-TAILQ_HEAD (timer_queue, timerevent) timers = TAILQ_HEAD_INITIALIZER (timers);
-
- int
- addtimer (struct timerevent *e)
-{
- struct timerevent *next;
- unsigned long old = leonbare_disable_traps ();
- TAILQ_FOREACH (next, &timers, n)
- {
- if (!GT_TIMESPEC (e->expire, next->expire))
- break;
- }
- if (next)
- {
- TAILQ_INSERT_BEFORE (next, e, n);
- }
- else
- {
- TAILQ_INSERT_TAIL (&timers, e, n);
- }
- leonbare_enable_traps (old);
-}
-
-extern unsigned long noalarm;
-void
-settimer ()
-{
- struct timeval tv, te;
- struct timerevent *e = TAILQ_FIRST (&timers), *n;
- while (e)
- {
- n = TAILQ_NEXT (e, n);
- te.tv_sec = e->expire.tv_sec;
- te.tv_usec = e->expire.tv_nsec / NSEC_PER_USEC;
- do_gettimeofday (&tv);
- if (GT_TIMEVAL (te, tv))
- {
- MINUS_TIMEVAL (te, te, tv);
- if (!tv.tv_sec || te.tv_usec <= tick_usec)
- {
- if (!noalarm)
- {
- //---------------------
- switch (LEONCOMPAT_VERSION)
- {
- case 3:
- default:
- LEON3_GpTimer_Regs->e[1].val = 0;
- LEON3_GpTimer_Regs->e[1].rld = te.tv_usec - 1;
- LEON3_GpTimer_Regs->e[1].ctrl = 0;
- LEON3_GpTimer_Regs->e[1].ctrl =
- LEON3_GPTIMER_EN |
- LEON3_GPTIMER_LD | LEON3_GPTIMER_IRQEN;
- break;
- }
- }
- //---------------------
- }
- }
- else
- {
- unsigned long old = leonbare_disable_traps ();
- TAILQ_REMOVE (&timers, e, n);
- e->handler (e->arg);
- leonbare_enable_traps (old);
- }
- e = n;
- }
-}
-
-int
-Timer_getTimer1 (unsigned int **count, unsigned int **reload,
- unsigned int **ctrl)
-{
- //---------------------
- switch (LEONCOMPAT_VERSION)
- {
- case 3:
- default:
- amba_init ();
- *count = (unsigned int *) &(LEON3_GpTimer_Regs->e[0].val);
- *reload = (unsigned int *) &(LEON3_GpTimer_Regs->e[0].rld);
- *ctrl = (unsigned int *) &(LEON3_GpTimer_Regs->e[0].ctrl);
- break;
- }
- //---------------------
- return 1;
-}
-
-int
-Timer_getTimer2 (unsigned int **count, unsigned int **reload,
- unsigned int **ctrl)
-{
- //---------------------
- switch (LEONCOMPAT_VERSION)
- {
- case 3:
- default:
- amba_init ();
- if (!noalarm)
- {
- *count = (unsigned int *) &(LEON3_GpTimer_Regs->e[1].val);
- *reload = (unsigned int *) &(LEON3_GpTimer_Regs->e[1].rld);
- *ctrl = (unsigned int *) &(LEON3_GpTimer_Regs->e[1].ctrl);
- break;
- }
- return 0;
- }
- //---------------------
- return 1;
-}
diff --git a/libgloss/sparc_leon/times.c b/libgloss/sparc_leon/times.c
deleted file mode 100644
index 817f40af8..000000000
--- a/libgloss/sparc_leon/times.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2011 Aeroflex Gaisler
- *
- * BSD license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-
-#include <sys/types.h>
-#include <sys/times.h>
-#include <sys/errno.h>
-#include <asm-leon/jiffies.h>
-#include <asm-leon/param.h>
-
-clock_t (*clock_custom) (void) = 0;
-
-extern int *rtc;
-
-clock_t
-times (struct tms *buffer)
-{
- clock_t v;
- if (clock_custom)
- v = clock_custom ();
- else
- v = -*rtc;
-
- buffer->tms_utime = v; //-*rtc;
- buffer->tms_utime /= (CLOCK_TICK_RATE / HZ);
- buffer->tms_stime = 0;
- buffer->tms_cutime = 0;
- buffer->tms_cstime = 0;
-}
-
-clock_t
-clock (void)
-{
- if (clock_custom)
- return clock_custom ();
- return (-*rtc);
-}