diff options
Diffstat (limited to 'libgloss/sparc_leon')
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); -} |