diff options
Diffstat (limited to 'libgloss/or1k')
39 files changed, 0 insertions, 8513 deletions
diff --git a/libgloss/or1k/Makefile.in b/libgloss/or1k/Makefile.in deleted file mode 100644 index f7d138ca7..000000000 --- a/libgloss/or1k/Makefile.in +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright (c) 1998 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -tooldir = $(exec_prefix)/$(target_alias) - -# 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@ - -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` - -# object files needed -COMMON_FILES = syscalls \ - or1k_uart \ - outbyte \ - caches-asm \ - exceptions \ - exceptions-asm \ - interrupts \ - interrupts-asm \ - mmu-asm \ - timer \ - sbrk \ - impure \ - util \ - sync-asm - -LIBOR1K_FILES = $(COMMON_FILES) -LIBOR1K_OBJS = $(addsuffix .o,$(LIBOR1K_FILES)) - -BOARDS = atlys \ - de0_nano \ - ml501 \ - optimsoc \ - or1ksim \ - or1ksim-uart \ - ordb1a3pe1500 \ - ordb2a \ - orpsocrefdesign - -BOARD_LIBS = $(addprefix libboard-,$(addsuffix .a,$(BOARDS))) -BOARD_OBJS = $(addprefix libboard-,$(addsuffix .o,$(BOARDS))) - -GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \ - then echo -L${objroot}/../gcc ; fi` - -OUTPUTS = libor1k.a crt0.o ${BOARD_LIBS} - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - - -all: ${OUTPUTS} - -# -# here's where we build the library for each target -# - -libor1k.a: $(LIBOR1K_OBJS) - ${AR} ${ARFLAGS} $@ $(LIBOR1K_OBJS) - ${RANLIB} $@ - -libboard-%.o: boards/%.S - ${CC} ${CFLAGS} -o $@ -c $< - -libboard-%.o: boards/%.c - ${CC} ${CFLAGS} -o $@ -c $< - -libboard-%.a: libboard-%.o - ${AR} ${ARFLAGS} $@ $< - ${RANLIB} $@ - -doc: - -clean mostlyclean: - rm -f $(OUTPUTS) $(BOARD_LIBS) *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile config.status $(OUTPUTS) - -.PHONY: install info install-info clean-info -install: - @for outputs in ${OUTPUTS}; do\ - mkdir -p $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - $(INSTALL_DATA) $${outputs} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done - $(INSTALL_DATA) ${srcdir}/include/or1k-support.h $(DESTDIR)$(tooldir)/include/ - $(INSTALL_DATA) ${srcdir}/include/or1k-sprs.h $(DESTDIR)$(tooldir)/include/ - $(INSTALL_DATA) ${srcdir}/include/or1k-asm.h $(DESTDIR)$(tooldir)/include/ - $(INSTALL_DATA) ${srcdir}/include/or1k-nop.h $(DESTDIR)$(tooldir)/include/ - -info: -install-info: -clean-info: - -Makefile: Makefile.in config.status @host_makefile_frag_path@ - $(SHELL) config.status - -config.status: configure - $(SHELL) config.status --recheck diff --git a/libgloss/or1k/README b/libgloss/or1k/README deleted file mode 100644 index e9b0a2048..000000000 --- a/libgloss/or1k/README +++ /dev/null @@ -1,77 +0,0 @@ -This document describes the internals of the port for OpenRISC -1000. The API is documented in or1k-support.h as Doxygen comments. - -# Data Structures - -+----------------+ 0x0 -| vectors | -+----------------+ -| text,data,.. | -+----------------+ -| bss | -+----------------+ -| heap | -| vv | -| | -| ^^ | -| stack(s) | -+----------------+ _or1k_board_mem_base + - _or1k_board_mem_size - -## Stack and Heap - -The stack is allocated at the end of available physical memory which -is defined by each board as _or1k_board_mem_base and -_or1k_board_mem_size. The _or1k_stack_top and _or1k_stack_bottom are -determined by those variables and _or1k_stack_size (which may be -overwritten in _or1k_board_init_early). - -A second stack for exceptions is allocated as we allow exceptions to -be arbitrary complex and call C functions etc. It is not an option to -re-use the current software stack as we want to be so generic, that -this can also be a virtual memory stack at moment of exception. The -exception starts below the normal software stack and is -_or1k_exception_stack_size large. - -Multicore: For each core a stack and exception stack is allocated and -the stack pointer set at boot. That is: sp(core0) = _or1k_stack_top, -sp(core1) = _or1k_stack_top - _or1k_stack_size, etc. - -## _or1k_stack_core (multicore only) - -An array of pointers to the software stacks (size: -4*or1k_numcores()). It is dynamically allocated from heap in or1k_init -by calling sbrk(). The pointers contain the values for stack top -pointers as described above. This variable is essentially used on boot -of the slave cores to configure the stack register. - -## _or1k_exception_stack_core (multicore only) - -An array of pointers to the exception stacks (size: -4*or1k_numcores()). It is allocated identical as the stack_core -array. It is loaded whenever an exception occurs to start with a clean -stack in the exception. - -## _or1k_exception_handler_table - -A table of function pointers to the handlers of the exceptions. The -generic exception handler checks if an exception handler is registered -and calls it. There are 30 exceptions defined (0x0 is not an exception -vector and 0x100 is reset which is static). This array resides in BSS -and is therefore initialized as 0 (no handler registered) after start. - -Multicore: As the number of course is not known at compile time, the -variable is a pointer to and array of arrays (cores x 30) which is -allocated in or1k_init() on heap (using sbrk). - -## _or1k_interrupt_handler_table and _or1k_interrupt_handler_table_data_ptr - -The interrupt handlers are stored identical to to the exception handler table. - -## _or1k_reent - -The struct _or1k_reent contains formerly global data and allows for -reentrancy. In the single core case, this is an allocated object, -while it is a pointer to an array of structs in the multicore library. -It is allocated in _or1k_reent_init() on the heap. - diff --git a/libgloss/or1k/aclocal.m4 b/libgloss/or1k/aclocal.m4 deleted file mode 100644 index 6ba621054..000000000 --- a/libgloss/or1k/aclocal.m4 +++ /dev/null @@ -1,409 +0,0 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 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, -# 2010, 2011 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 12 - -# 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'. - rm -rf conftest.dir - 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 - ;; - msvc7 | msvc7msys | 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='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])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, 2010 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 3 - -# _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/or1k/board.h b/libgloss/or1k/board.h deleted file mode 100644 index d6b51bf8a..000000000 --- a/libgloss/or1k/board.h +++ /dev/null @@ -1,35 +0,0 @@ -/* board.h -- board variable definitions for OpenRISC 1000. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#ifndef __BOARD_H__ -#define __BOARD_H__ - -#include <stdint.h> - -extern void* _or1k_board_mem_base; -extern uint32_t _or1k_board_mem_size; -extern uint32_t _or1k_board_clk_freq; - -extern uint32_t _or1k_board_uart_base; -extern uint32_t _or1k_board_uart_baud; -extern uint32_t _or1k_board_uart_IRQ; - -extern void _or1k_board_exit(void); -extern void _or1k_board_init_early(void); -extern void _or1k_board_init(void); - -#endif // __BOARD_H__ diff --git a/libgloss/or1k/boards/README b/libgloss/or1k/boards/README deleted file mode 100644 index b6c5abf92..000000000 --- a/libgloss/or1k/boards/README +++ /dev/null @@ -1,65 +0,0 @@ -# Add a new board - -Before adding a new board, you may consider if your board can use another -board definition and simply overwrite the weak symbols. - -If you think it is worth adding a new board, you need to perform the following -steps: - - * Decide for a meaningful board name (refered to as <board> below). It should - be specific enough (not openrisc..), but be rather generic if it may cover - similar boards as well. - - * Create a file <board>.S (assembler) or <board>.c (C). Of course, C is easier - to write and you can implement everything in C, but there are restrictions: - - * There is an early initialization function. It is called before the C - library and even the stack are initialized. A default implementation skips - this step, so everything will compile, but if you really need - initialization that early you are bound to assembly language. - - * You essentially should not use the C library functions as this may lead to - link issues and circular dependencies. - - You can copy board_tmpl.S or board_tmpl.c as starting point for your board. - - * The following symbols must be defined in your board file: - - * _or1k_board_mem_base: Memory base address - - * _or1k_board_mem_size: Memory size - - * _or1k_board_clk_freq: Clock frequency - - * _or1k_board_uart_base: UART base address. Set to 0 if no UART present. - - * _or1k_board_uart_baud: UART baud rate. Only used if UART base is > 0 - - * _or1k_board_uart_IRQ: UART interrupt line. Only used if UART base is > 0 - - You can define a weak attribute for all of the symbols so that they can - be overwritten by the user (more flexibility). - - * The following functions need to be implemented: - - * _or1k_board_init: Is called after C library initialization and UART - initialization. - - * _or1k_board_exit: Is called after the program has exited and the C library - finished all deconstructions etc. - - Similar to the symbols you can define those functions weak. - - * The following functions can be implemented: - - * _or1k_board_init_early: Only in assembly (see above). Is called before - anything is initialized, not even the stack! You can use all registers - in this function. The default implementation in crt0.S skips this step, - which is fine in most cases. If you decide to implement it, you need to - define it with the global attribute to overwrite the default - implementation. It is recommended to do so in assembler board files to - keep the ability to overwrite the default implementation by the user. - -When you are done with your board, add it to libgloss/or1k/Makefile.in to the -BOARDS variable and compile. - diff --git a/libgloss/or1k/boards/atlys.S b/libgloss/or1k/boards/atlys.S deleted file mode 100644 index 544504a1b..000000000 --- a/libgloss/or1k/boards/atlys.S +++ /dev/null @@ -1,55 +0,0 @@ -/* atlys.S -- Support for the Atlys board. - * - * Copyright (c) 2012 Authors - * - * Contributor Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x2000000 - -_or1k_board_clk_freq: .long 50000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x90000000 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/de0_nano.S b/libgloss/or1k/boards/de0_nano.S deleted file mode 100644 index 28686d1ee..000000000 --- a/libgloss/or1k/boards/de0_nano.S +++ /dev/null @@ -1,57 +0,0 @@ -/* de0_nano.S -- Support for the DE0 nano board. - * - * Copyright (c) 2012 Authors - * - * Contributor Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x2000000 - -_or1k_board_clk_freq: .long 50000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x90000000 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) - - diff --git a/libgloss/or1k/boards/ml501.S b/libgloss/or1k/boards/ml501.S deleted file mode 100644 index 98373d77b..000000000 --- a/libgloss/or1k/boards/ml501.S +++ /dev/null @@ -1,55 +0,0 @@ -/* ml501.S -- Support for the Xilinx ML501 board. - * - * Copyright (c) 2011 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x800000 - -_or1k_board_clk_freq: .long 66666666 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x90000000 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/ml509.S b/libgloss/or1k/boards/ml509.S deleted file mode 100644 index c31be3bd6..000000000 --- a/libgloss/or1k/boards/ml509.S +++ /dev/null @@ -1,55 +0,0 @@ -/* ml509.S -- Support for the Xilinx ML509 board (XUPV5). - * - * Copyright (c) 2014 Authors - * - * Contributor Matthew Hicks <firefalcon@gmail.com> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x08000000 - -_or1k_board_clk_freq: .long 50000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x90000000 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/optimsoc.S b/libgloss/or1k/boards/optimsoc.S deleted file mode 100644 index a8493729d..000000000 --- a/libgloss/or1k/boards/optimsoc.S +++ /dev/null @@ -1,68 +0,0 @@ -/* optimsoc.S -- Support for OpTiMSoC systems. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@saunalahti.fi> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -#define OPTIMSOC_NA_BASE 0xe0000000 - -#define OPTIMSOC_NA_REGS OPTIMSOC_NA_BASE + 0x00000 -#define OPTIMSOC_NA_LMEM_SIZE OPTIMSOC_NA_REGS + 0x24 - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x0 - -_or1k_board_clk_freq: .long 50000000 - -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ -_or1k_board_uart_base: .long 0x0 -_or1k_board_uart_baud: .long 0 -_or1k_board_uart_IRQ: .long 0 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: -#ifndef __OR1K_MULTICORE__ - l.nop 0x1 -.die: - OR1K_DELAYED_NOP(l.j die) -#endif - l.movhi r1,hi(OPTIMSOC_NA_LMEM_SIZE) - l.ori r1,r1,lo(OPTIMSOC_NA_LMEM_SIZE) - l.lwz r1,0(r1) - l.movhi r2,hi(_or1k_board_mem_size) - l.ori r2,r2,lo(_or1k_board_mem_size) - l.sw 0(r2),r1 - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/or1ksim-uart.S b/libgloss/or1k/boards/or1ksim-uart.S deleted file mode 100644 index 561ace375..000000000 --- a/libgloss/or1k/boards/or1ksim-uart.S +++ /dev/null @@ -1,55 +0,0 @@ -/* or1ksim-uart.S -- Support for or1ksim with UART support. - * - * Copyright (c) 2011 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ - -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x800000 -_or1k_board_clk_freq: .long 100000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x90000000 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/or1ksim.S b/libgloss/or1k/boards/or1ksim.S deleted file mode 100644 index 946778a9c..000000000 --- a/libgloss/or1k/boards/or1ksim.S +++ /dev/null @@ -1,56 +0,0 @@ -/* or1ksim.S -- Support for or1ksim. - * - * Copyright (c) 2011 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x800000 - -_or1k_board_clk_freq: .long 100000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x0 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 13 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) - diff --git a/libgloss/or1k/boards/ordb1a3pe1500.S b/libgloss/or1k/boards/ordb1a3pe1500.S deleted file mode 100644 index 47b8e5423..000000000 --- a/libgloss/or1k/boards/ordb1a3pe1500.S +++ /dev/null @@ -1,55 +0,0 @@ -/* ordb1a3pe1500.S -- Support for orpsocv2 Actel board. - * - * Copyright (c) 2011 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x02000000 - -_or1k_board_clk_freq: .long 20000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x90000000 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/ordb2a.S b/libgloss/or1k/boards/ordb2a.S deleted file mode 100644 index 9ba23a3ca..000000000 --- a/libgloss/or1k/boards/ordb2a.S +++ /dev/null @@ -1,55 +0,0 @@ -/* ordb2a.S -- Support for the new OpenRISC ORPSoC reference design. - * - * Copyright (c) 2012 Authors - * - * Contributor Olof Kindgren <olof.kindgren@gmail.com> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * Olof Kindgren olof at opencores.org - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x02000000 - -_or1k_board_clk_freq: .long 50000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0x90000000 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/orpsocrefdesign.S b/libgloss/or1k/boards/orpsocrefdesign.S deleted file mode 100644 index 331f96be8..000000000 --- a/libgloss/or1k/boards/orpsocrefdesign.S +++ /dev/null @@ -1,55 +0,0 @@ -/* orpsocrefdesign.S -- Support for the orpsoc reference design. - * - * Copyright (c) 2011 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -_or1k_board_mem_base: .long 0x0 -_or1k_board_mem_size: .long 0x800000 - -_or1k_board_clk_freq: .long 50000000 - -/* Peripheral information - Set base to 0 if not present*/ -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ - -_or1k_board_uart_base: .long 0 -_or1k_board_uart_baud: .long 115200 -_or1k_board_uart_IRQ: .long 2 - -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_K_EXIT_QUIET -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/tmpl.S b/libgloss/or1k/boards/tmpl.S deleted file mode 100644 index 523ecef28..000000000 --- a/libgloss/or1k/boards/tmpl.S +++ /dev/null @@ -1,60 +0,0 @@ -/* tmpl.S -- Template for new boards. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@saunalahti.fi> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "../include/or1k-asm.h" -#include "../include/or1k-nop.h" - -/* - * Define symbols to be used during startup - file is linked at compile time - * - */ -.weak _or1k_board_mem_base -.weak _or1k_board_mem_size -.weak _or1k_board_clk_freq - -// TODO: set memory base here -_or1k_board_mem_base: .long 0x0 -// TODO: set memory size here -_or1k_board_mem_size: .long 0x0 - -// TODO: set board clock frequency here -_or1k_board_clk_freq: .long 50000000 - -// TODO: UART configuration -.weak _or1k_board_uart_base -.weak _or1k_board_uart_baud -.weak _or1k_board_uart_IRQ -_or1k_board_uart_base: .long 0x0 -_or1k_board_uart_baud: .long 0 -_or1k_board_uart_IRQ: .long 0 - -// TODO: Board exit function, default: loop -.weak _or1k_board_exit -_or1k_board_exit: - l.nop OR1K_NOP_EXIT_SILENT -.Lexitloop: - OR1K_DELAYED_NOP(l.j .Lexitloop) - -// TODO: Early initialization (if really needed!) -.global _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(l.jr r9) - -// TODO: Board initialization -.weak _or1k_board_init -_or1k_board_init: - OR1K_DELAYED_NOP(l.jr r9) diff --git a/libgloss/or1k/boards/tmpl.c b/libgloss/or1k/boards/tmpl.c deleted file mode 100644 index ffc725815..000000000 --- a/libgloss/or1k/boards/tmpl.c +++ /dev/null @@ -1,40 +0,0 @@ -/* tmpl.c -- Template for new boards. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@saunalahti.fi> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -// TODO: set memory base here -unsigned long __attribute__((weak)) _or1k_board_mem_base = 0x0; - -// TODO: set memory size here -unsigned long __attribute__((weak)) _or1k_board_mem_size = 0x0; - -// TODO: set board clock frequency here -unsigned long __attribute__((weak)) _or1k_board_clk_freq = 0x0; - -// TODO: UART configuration -unsigned long __attribute__((weak)) _or1k_board_uart_base = 0x0; -unsigned long __attribute__((weak)) _or1k_board_uart_baud = 0x0; -unsigned long __attribute__((weak)) _or1k_board_uart_IRQ = 0x0; - -// TODO: Board exit function, default: loop -void __attribute__((weak)) _or1k_board_exit(void) { - while (1) {} -} - -// TODO: Board initialization -void __attribute__((weak)) _or1k_board_init(void) { - return; -} diff --git a/libgloss/or1k/caches-asm.S b/libgloss/or1k/caches-asm.S deleted file mode 100644 index f2ac09660..000000000 --- a/libgloss/or1k/caches-asm.S +++ /dev/null @@ -1,233 +0,0 @@ -/* caches-asm.S -- cache manipulation for OpenRISC 1000. - * - * Copyright (c) 2011, 2014 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "include/or1k-asm.h" -#include "include/or1k-sprs.h" - -/* -------------------------------------------------------------------------- */ -/*!Function used at reset to clear and enable all caches - */ -/* -------------------------------------------------------------------------- */ - .global _or1k_cache_init - .type _or1k_cache_init,@function - -_or1k_cache_init: - /* Instruction cache enable */ - /* Check if IC present and skip enabling otherwise */ - l.mfspr r3,r0,OR1K_SPR_SYS_UPR_ADDR - l.andi r4,r3,OR1K_SPR_SYS_UPR_ICP_MASK - l.sfeq r4,r0 - OR1K_DELAYED_NOP(OR1K_INST(l.bf .Lnoic)) - - /* Disable IC */ - l.mfspr r6,r0,OR1K_SPR_SYS_SR_ADDR - l.addi r5,r0,-1 - l.xori r5,r5,OR1K_SPR_SYS_SR_ICE_MASK - l.and r5,r6,r5 - l.mtspr r0,r5,OR1K_SPR_SYS_SR_ADDR - - /* Establish cache block size - If BS=0, 16; - If BS=1, 32; - r14 contain block size - */ - l.mfspr r3,r0,OR1K_SPR_SYS_ICCFGR_ADDR - l.andi r4,r3,OR1K_SPR_SYS_ICCFGR_CBS_MASK - l.srli r7,r4,7 - l.ori r8,r0,16 - l.sll r14,r8,r7 - - /* Establish number of cache sets - r13 contains number of cache sets - r7 contains log(# of cache sets) - */ - l.andi r4,r3,OR1K_SPR_SYS_ICCFGR_NCS_MASK - l.srli r7,r4,3 - l.ori r8,r0,1 - l.sll r13,r8,r7 - - /* Invalidate IC */ - l.addi r6,r0,0 - l.sll r5,r14,r7 - -.Linvi: l.mtspr r0,r6,OR1K_SPR_ICACHE_ICBIR_ADDR - l.sfne r6,r5 - OR1K_DELAYED( - OR1K_INST(l.add r6,r6,r14), - OR1K_INST(l.bf .Linvi) - ) - - /* Enable IC */ - l.mfspr r6,r0,OR1K_SPR_SYS_SR_ADDR - l.ori r6,r6,OR1K_SPR_SYS_SR_ICE_MASK - l.mtspr r0,r6,OR1K_SPR_SYS_SR_ADDR - l.nop - l.nop - l.nop - l.nop - l.nop - l.nop - l.nop - l.nop - - /* Data cache enable */ - /* Check if DC present and skip enabling otherwise */ -.Lnoic: l.mfspr r3,r0,OR1K_SPR_SYS_UPR_ADDR - l.andi r4,r3,OR1K_SPR_SYS_UPR_DCP_MASK - l.sfeq r4,r0 - OR1K_DELAYED_NOP(OR1K_INST(l.bf .Lnodc)) - /* Disable DC */ - l.mfspr r6,r0,OR1K_SPR_SYS_SR_ADDR - l.addi r5,r0,-1 - l.xori r5,r5,OR1K_SPR_SYS_SR_DCE_MASK - l.and r5,r6,r5 - l.mtspr r0,r5,OR1K_SPR_SYS_SR_ADDR - /* Establish cache block size - If BS=0, 16; - If BS=1, 32; - r14 contain block size */ - l.mfspr r3,r0,OR1K_SPR_SYS_DCCFGR_ADDR - l.andi r4,r3,OR1K_SPR_SYS_DCCFGR_CBS_MASK - l.srli r7,r4,7 - l.ori r8,r0,16 - l.sll r14,r8,r7 - /* Establish number of cache sets - r13 contains number of cache sets - r7 contains log(# of cache sets) */ - l.andi r4,r3,OR1K_SPR_SYS_ICCFGR_NCS_MASK - l.srli r7,r4,3 - l.ori r8,r0,1 - l.sll r13,r8,r7 - /* Invalidate DC */ - l.addi r6,r0,0 - l.sll r5,r14,r7 - -.Linvd: l.mtspr r0,r6,OR1K_SPR_DCACHE_DCBIR_ADDR - l.sfne r6,r5 - OR1K_DELAYED( - OR1K_INST(l.add r6,r6,r14), - OR1K_INST(l.bf .Linvd) - ) - /* Enable DC */ - l.mfspr r6,r0,OR1K_SPR_SYS_SR_ADDR - l.ori r6,r6,OR1K_SPR_SYS_SR_DCE_MASK - l.mtspr r0,r6,OR1K_SPR_SYS_SR_ADDR - -.Lnodc: - /* Return */ - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) - -/* -------------------------------------------------------------------------- */ -/*!Function to enable instruction cache - */ -/* -------------------------------------------------------------------------- */ - - .global or1k_icache_enable - .type or1k_icache_enable,@function - -or1k_icache_enable: - /* Enable IC */ - l.mfspr r13,r0,OR1K_SPR_SYS_SR_ADDR - l.ori r13,r13,OR1K_SPR_SYS_SR_ICE_MASK - l.mtspr r0,r13,OR1K_SPR_SYS_SR_ADDR - l.nop - l.nop - l.nop - l.nop - l.nop - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) - -/* -------------------------------------------------------------------------- */ -/*!Function to disable instruction cache - */ -/* -------------------------------------------------------------------------- */ - .global or1k_icache_disable - .type or1k_icache_disable,@function - -or1k_icache_disable: - /* Disable IC */ - l.mfspr r13,r0,OR1K_SPR_SYS_SR_ADDR - l.addi r12,r0,-1 - l.xori r12,r12,OR1K_SPR_SYS_SR_ICE_MASK - l.and r12,r13,r12 - l.mtspr r0,r12,OR1K_SPR_SYS_SR_ADDR - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) - -/* -------------------------------------------------------------------------- */ -/*!Function to flush address of instruction cache - */ -/* -------------------------------------------------------------------------- */ - .global or1k_icache_flush - .type or1k_icache_flush,@function - -or1k_icache_flush: - OR1K_DELAYED( - OR1K_INST(l.mtspr r0,r3,OR1K_SPR_ICACHE_ICBIR_ADDR), - /* Push r3 into IC invalidate reg */ - OR1K_INST(l.jr r9) - ) - - -/* -------------------------------------------------------------------------- */ -/*!Function to enable data cache - */ -/* -------------------------------------------------------------------------- */ - .global or1k_dcache_enable - .type or1k_dcache_enable,@function - -or1k_dcache_enable: - /* Enable DC */ - l.mfspr r13,r0,OR1K_SPR_SYS_SR_ADDR - l.ori r13,r13,OR1K_SPR_SYS_SR_DCE_MASK - l.mtspr r0,r13,OR1K_SPR_SYS_SR_ADDR - l.nop - l.nop - l.nop - l.nop - l.nop - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) - -/* -------------------------------------------------------------------------- */ -/*!Function to disable data cache - */ -/* -------------------------------------------------------------------------- */ - .global or1k_dcache_disable - .type or1k_dcache_disable,@function - -or1k_dcache_disable: - /* Disable DC */ - l.mfspr r13,r0,OR1K_SPR_SYS_SR_ADDR - l.addi r12,r0,-1 - l.xori r12,r12,OR1K_SPR_SYS_SR_DCE_MASK - l.and r12,r13,r12 - l.mtspr r0,r12,OR1K_SPR_SYS_SR_ADDR - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) - -/* -------------------------------------------------------------------------- */ -/*!Function to flush address of data cache - */ -/* -------------------------------------------------------------------------- */ - .global or1k_dcache_flush - .type or1k_dcache_flush,@function - -or1k_dcache_flush: - OR1K_DELAYED( - OR1K_INST(l.mtspr r0,r3,OR1K_SPR_DCACHE_DCBIR_ADDR), - /* Push r3 into DC invalidate reg */ - OR1K_INST(l.jr r9) - ) diff --git a/libgloss/or1k/configure b/libgloss/or1k/configure deleted file mode 100755 index 111331325..000000000 --- a/libgloss/or1k/configure +++ /dev/null @@ -1,3892 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for libor1k 0.0.1. -# -# -# 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='libor1k' -PACKAGE_TARNAME='libor1k' -PACKAGE_VERSION='0.0.1' -PACKAGE_STRING='libor1k 0.0.1' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -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 -am__nodep -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_TARNAME}' -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 libor1k 0.0.1 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/libor1k] - --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 - case $ac_init_help in - short | recursive ) echo "Configuration of libor1k 0.0.1:";; - esac - 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 -libor1k configure 0.0.1 -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 libor1k $as_me 0.0.1, 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 - - - -# No shared libraries allowed -if test "${enable_shared}" = "yes" ; then - echo "Shared libraries not supported for cross compiling, ignored" -fi - -# Where are the auxillary tools (confg.sub etc)? -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' - - - -$as_echo "#define HAVE_GNU_LD 1" >>confdefs.h - - -# We always use ELF, define various useful associated things. - -$as_echo "#define HAVE_ELF 1" >>confdefs.h - - -# Standard stuff copied from libnosys. For this we'll need to an aclocal.m4 -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='\' - am__nodep='_no' -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'. - rm -rf conftest.dir - 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 - ;; - msvc7 | msvc7msys | 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 libor1k $as_me 0.0.1, 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="\\ -libor1k config.status 0.0.1 -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/or1k/configure.in b/libgloss/or1k/configure.in deleted file mode 100644 index 5337a4db0..000000000 --- a/libgloss/or1k/configure.in +++ /dev/null @@ -1,81 +0,0 @@ -# Makefile for libgloss/or1k - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. */ - -# Process this file with autoconf to produce a configure script - -AC_PREREQ(2.59) -AC_INIT(libor1k,0.0.1) - -# No shared libraries allowed -if test "${enable_shared}" = "yes" ; then - echo "Shared libraries not supported for cross compiling, ignored" -fi - -# Where are the auxillary tools (confg.sub etc)? -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 - -AC_DEFINE(HAVE_GNU_LD, 1, [Using GNU ld]) - -# We always use ELF, define various useful associated things. -AC_DEFINE(HAVE_ELF, 1, [Using ELF format]) - -# Standard stuff copied from libnosys. For this we'll need to an aclocal.m4 -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
\ No newline at end of file diff --git a/libgloss/or1k/crt0.S b/libgloss/or1k/crt0.S deleted file mode 100644 index f1753d0d7..000000000 --- a/libgloss/or1k/crt0.S +++ /dev/null @@ -1,600 +0,0 @@ -/* crt0.S -- startup file for OpenRISC 1000. - * - * Copyright (c) 2011, 2014 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -/* -------------------------------------------------------------------------- */ -/* Coding convention: - Assembly is hard to read per se, so please follow the following coding - conventions to keep it consistent and ease reading: - * internal jump labels start with L, no identation - * assemble lines have one tab identation - * attributes (.section, .global, ..) are indented with one tab - * code is structured using tabs, i.e., use 'l.sw\t0(r1),r1' with a single - tab. libgloss assumes 8 space tab width, so that might look unstructured - with tab widths below 6. Nevertheless don't use spaces or two tabs. - * no space after comma - * use the defined macros if possible as they reduce errors - * use OR1K_INST with OR1K_DELAYED(_NOP) - * OR1K_DELAYED is multiline for better readability, the inner parts are - indented with another tab. - * COMMENT! Try to accompy every line with a meaningful comment. If possible - use pseudo code to describe the code. Also mention intentions and not only - the obvious things.. */ -/* -------------------------------------------------------------------------- */ - -#include "include/or1k-asm.h" -#include "include/or1k-sprs.h" - -/* -------------------------------------------------------------------------- */ -// Stack definitions -/* -------------------------------------------------------------------------- */ - -// Stacks -// Memory layout: -// +--------------------+ <- board_mem_base+board_mem_size/exception_stack_top -// | exception stack(s) | -// +--------------------+ <- stack_top -// | stack(s) | -// +--------------------+ <- stack_bottom -// | heap | -// +--------------------+ -// | text, data, bss.. | -// +--------------------+ - -// Reserved stack size -#define STACK_SIZE 8192 - -// Reserved stack size for exceptions (can usually be smaller than normal stack) -#define EXCEPTION_STACK_SIZE 8192 - -// Size of redzone + size of space required to store state -// This value must match that in the support library or1k_exception_handler -// function -#define EXCEPTION_STACK_FRAME (128+128) - - .extern _or1k_stack_top /* points to the next address after the stack */ - .extern _or1k_stack_bottom /* points to the last address in the stack */ - .extern _or1k_exception_stack_top - .extern _or1k_exception_stack_bottom - - .section .data - .global _or1k_stack_size /* reserved stack size */ - .global _or1k_exception_stack_size - -_or1k_stack_size: .word STACK_SIZE -_or1k_exception_stack_size: .word EXCEPTION_STACK_SIZE - -#ifdef __OR1K_MULTICORE__ - .extern _or1k_stack_core - .extern _or1k_exception_stack_core -#endif - -#define SHADOW_REG(x) (OR1K_SPR_SYS_GPR_BASE + 32 + x) - -/* -------------------------------------------------------------------------- */ -/*!Macro to handle exceptions. - - Load NPC into r3, EPCR into r4 - */ -/* -------------------------------------------------------------------------- */ - -#define GPR_BUF_OFFSET(x) (x << 2) - -#ifndef __OR1K_MULTICORE__ -#define CALL_EXCEPTION_HANDLER \ - /* store current stack pointer to address 4 */ \ - l.sw 0x4(r0),r1; \ - /* Load top of the exception stack */ \ - l.movhi r1,hi(_or1k_exception_stack_top); \ - l.ori r1,r1,lo(_or1k_exception_stack_top); \ - l.lwz r1,0(r1); \ - /* Reserve red zone and context space */ \ - l.addi r1,r1,-EXCEPTION_STACK_FRAME; \ - /* Store GPR3 in context */ \ - l.sw GPR_BUF_OFFSET(3)(r1),r3; \ - /* Load back software's stack pointer */ \ - l.lwz r3,0x4(r0); \ - /* Store this in the context */ \ - l.sw GPR_BUF_OFFSET(1)(r1),r3; \ - /* Store GPR4 in the context */ \ - l.sw GPR_BUF_OFFSET(4)(r1),r4; \ - /* Copy the current program counter as first */ \ - /* argument for the exception handler. This */ \ - /* is then used to determine the exception. */ \ - l.mfspr r3,r0,OR1K_SPR_SYS_NPC_ADDR; \ - OR1K_DELAYED( \ - /* Copy program counter of exception as */ \ - /* second argument to the exception handler */ \ - OR1K_INST(l.mfspr r4,r0,OR1K_SPR_SYS_EPCR_BASE),\ - /* Jump to exception handler. This will rfe */ \ - OR1K_INST(l.j _or1k_exception_handler) \ - ) -#else -#define CALL_EXCEPTION_HANDLER \ - /* store current stack pointer to shadow reg */ \ - l.mtspr r0,r1,SHADOW_REG(1); \ - /* store current GPR3 as we need it */ \ - l.mtspr r0,r3,SHADOW_REG(2); \ - /* Load pointer to exception stack array */ \ - l.movhi r1,hi(_or1k_exception_stack_core); \ - l.ori r1,r1,lo(_or1k_exception_stack_core); \ - l.lwz r1,0(r1); \ - /* Get core id */ \ - l.mfspr r3,r0,OR1K_SPR_SYS_COREID_ADDR; \ - /* Calculate offset in array */ \ - l.slli r3,r3,2; \ - /* Load value from array to stack pointer */ \ - l.add r1,r1,r3; \ - l.lwz r1,0(r1); \ - /* Reserve red zone and context space */ \ - l.addi r1,r1,-EXCEPTION_STACK_FRAME; \ - /* Load back software's stack pointer */ \ - l.mfspr r3,r0,SHADOW_REG(1); \ - /* Store this in the context */ \ - l.sw GPR_BUF_OFFSET(1)(r1),r3; \ - /* Load back GPR3 */ \ - l.mfspr r3,r0,SHADOW_REG(2); \ - /* Store this in the context */ \ - l.sw GPR_BUF_OFFSET(3)(r1),r3; \ - /* Store GPR4 in the context */ \ - l.sw GPR_BUF_OFFSET(4)(r1),r4; \ - /* Copy the current program counter as first */ \ - /* argument for the exception handler. This */ \ - /* is then used to determine the exception. */ \ - l.mfspr r3,r0,OR1K_SPR_SYS_NPC_ADDR; \ - OR1K_DELAYED( \ - /* Copy program counter of exception as */ \ - /* second argument to the exception handler */ \ - OR1K_INST(l.mfspr r4,r0,OR1K_SPR_SYS_EPCR_BASE),\ - /* Jump to exception handler. This will rfe */ \ - OR1K_INST(l.j _or1k_exception_handler) \ - ) -#endif - -/* -------------------------------------------------------------------------- */ -/*!Exception vectors */ -/* -------------------------------------------------------------------------- */ - .section .vectors,"ax" - - /* 0x100: RESET exception */ - .org 0x100 -_or1k_reset: - l.movhi r0,0 -#ifdef __OR1K_MULTICORE__ - // This is a hack that relies on the fact, that all cores start at the - // same time and they are similarily fast - l.sw 0x4(r0),r0 - // Similarly, we use address 8 to signal how many cores have exit'ed - l.sw 0x8(r0),r0 -#endif - l.movhi r1,0 - l.movhi r2,0 - l.movhi r3,0 - l.movhi r4,0 - l.movhi r5,0 - l.movhi r6,0 - l.movhi r7,0 - l.movhi r8,0 - l.movhi r9,0 - l.movhi r10,0 - l.movhi r11,0 - l.movhi r12,0 - l.movhi r13,0 - l.movhi r14,0 - l.movhi r15,0 - l.movhi r16,0 - l.movhi r17,0 - l.movhi r18,0 - l.movhi r19,0 - l.movhi r20,0 - l.movhi r21,0 - l.movhi r22,0 - l.movhi r23,0 - l.movhi r24,0 - l.movhi r25,0 - l.movhi r26,0 - l.movhi r27,0 - l.movhi r28,0 - l.movhi r29,0 - l.movhi r30,0 - l.movhi r31,0 - - /* Clear status register, set supervisor mode */ - l.ori r1,r0,OR1K_SPR_SYS_SR_SM_MASK - l.mtspr r0,r1,OR1K_SPR_SYS_SR_ADDR - /* Clear timer mode register*/ - l.mtspr r0,r0,OR1K_SPR_TICK_TTMR_ADDR - /* Jump to program initialisation code */ - LOAD_SYMBOL_2_GPR(r4, _or1k_start) - OR1K_DELAYED_NOP(OR1K_INST(l.jr r4)) - - .org 0x200 - CALL_EXCEPTION_HANDLER - - /* 0x300: Data Page Fault exception */ - .org 0x300 - CALL_EXCEPTION_HANDLER - - /* 0x400: Insn Page Fault exception */ - .org 0x400 - CALL_EXCEPTION_HANDLER - - /* 0x500: Timer exception */ - .org 0x500 - CALL_EXCEPTION_HANDLER - - /* 0x600: Aligment exception */ - .org 0x600 - CALL_EXCEPTION_HANDLER - - /* 0x700: Illegal insn exception */ - .org 0x700 - CALL_EXCEPTION_HANDLER - - /* 0x800: External interrupt exception */ - .org 0x800 - CALL_EXCEPTION_HANDLER - - /* 0x900: DTLB miss exception */ - .org 0x900 - CALL_EXCEPTION_HANDLER - - /* 0xa00: ITLB miss exception */ - .org 0xa00 - CALL_EXCEPTION_HANDLER - - /* 0xb00: Range exception */ - .org 0xb00 - CALL_EXCEPTION_HANDLER - - /* 0xc00: Syscall exception */ - .org 0xc00 - CALL_EXCEPTION_HANDLER - - /* 0xd00: Floating point exception */ - .org 0xd00 - CALL_EXCEPTION_HANDLER - - /* 0xe00: Trap exception */ - .org 0xe00 - CALL_EXCEPTION_HANDLER - - /* 0xf00: Reserved exceptions */ - .org 0xf00 - CALL_EXCEPTION_HANDLER - - .org 0x1000 - CALL_EXCEPTION_HANDLER - - .org 0x1100 - CALL_EXCEPTION_HANDLER - - .org 0x1200 - CALL_EXCEPTION_HANDLER - - .org 0x1300 - CALL_EXCEPTION_HANDLER - - .org 0x1400 - CALL_EXCEPTION_HANDLER - - .org 0x1500 - CALL_EXCEPTION_HANDLER - - .org 0x1600 - CALL_EXCEPTION_HANDLER - - .org 0x1700 - CALL_EXCEPTION_HANDLER - - .org 0x1800 - CALL_EXCEPTION_HANDLER - - .org 0x1900 - CALL_EXCEPTION_HANDLER - - .org 0x1a00 - CALL_EXCEPTION_HANDLER - - .org 0x1b00 - CALL_EXCEPTION_HANDLER - - .org 0x1c00 - CALL_EXCEPTION_HANDLER - - .org 0x1d00 - CALL_EXCEPTION_HANDLER - - .org 0x1e00 - CALL_EXCEPTION_HANDLER - - .org 0x1f00 - CALL_EXCEPTION_HANDLER - - /* Pad to the end */ - .org 0x1ffc - l.nop - -/* -------------------------------------------------------------------------- */ -/*!Main entry point - - This is the initialization code of the library. It performs these steps: - - * Call early board initialization: - Before anything happened, the board support may do some very early - initialization. This is at maximum some very basic stuff that would - otherwise prevent the following code from functioning. Other initialization - of peripherals etc. is done later (before calling main). - See the description below and README.board for details. - - * Initialize the stacks: - Two stacks are configured: The system stack is used by the software and - the exception stack is used when an exception occurs. We added this as - this should be flexible with respect to the usage of virtual memory. - - * Activate the caches: - If available the caches are initiliazed and activated. - - * Clear BSS: - The BSS are essentially the uninitialized C variables. They are set to 0 - by default. This is performed by this function. - - * Initialize the impure data structure: - Similarly, we need two library contexts, one for the normal software and - one that is used during exceptions. The impure data structure holds - the context information of the library. The called C function will setup - both data structures. There is furthermore a pointer to the currently - active impure data structure, which is initially set to the normal one. - - * Initialize or1k support library reentrant data structures - - * Initialize constructors: - Call the static and global constructors - - * Set up destructors to call from exit - The library will call the function set via atexit() during exit(). We set - it to call the _fini function which performs destruction. - - * Call board initialization: - The board initialization can perform board specific initializations such as - configuring peripherals etc. - - * Jump to main - Call main with argc = 0 and *argv[] = 0 - - * Call exit after main returns - Now we call exit() - - * Loop forever - We are dead. -*/ - -/* -------------------------------------------------------------------------- */ - .section .text - - /* Following externs from board-specific object passed at link time */ - .extern _or1k_board_mem_base - .extern _or1k_board_mem_size - .extern _or1k_board_uart_base - - /* The early board initialization may for example read the memory size and - set the mem_base and mem_size or do some preliminary board - initialization. As we do not have a stack at this time, the function may - not use the stack (and therefore be a or call a C function. But it can - safely use all registers. - - We define a default implementation, which allows board files in C. As - described above, this can only be used in assembly (board_*.S) as at - the early stage not stack is available. A board that needs early - initialization can overwrite the function with .global _board_init_early. - - Recommendation: Only use when you really need it! */ - .weak _or1k_board_init_early -_or1k_board_init_early: - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) - - /* The board initialization is then called after the C library and UART - are initialized. It can then be used to configure UART or other - devices before the actual main function is called. */ - .extern _or1k_board_init - - .global _or1k_start - .type _or1k_start,@function -_or1k_start: - /* It is good to initialize and enable the caches before we do anything, - otherwise the cores will continuously access the bus during the wait - time for the boot barrier (0x4). - Fortunately or1k_cache_init does not need a stack */ - OR1K_DELAYED_NOP(OR1K_INST(l.jal _or1k_cache_init)) - -#ifdef __OR1K_MULTICORE__ - // All but core 0 have to wait - l.mfspr r1, r0, OR1K_SPR_SYS_COREID_ADDR - l.sfeq r1, r0 - OR1K_DELAYED_NOP(OR1K_INST(l.bf .Lcore0)) -.Lspin: - /* r1 will be used by the other cores to check for the boot variable - Check if r1 is still zero, core 0 will set it to 1 once it booted - As the cache is already turned on, this will not create traffic on - the bus, but the change is snooped by cache coherency then */ - l.lwz r1,0x4(r0) - l.sfeq r1, r0 - OR1K_DELAYED_NOP(OR1K_INST(l.bf .Lspin)) - - /* Initialize core i stack */ - // _or1k_stack_core is the array of stack pointers - LOAD_SYMBOL_2_GPR(r2,_or1k_stack_core) - // Load the base address - l.lwz r2,0(r2) - // Generate offset in array - l.mfspr r1,r0,OR1K_SPR_SYS_COREID_ADDR - l.slli r1,r1,2 - // Add to array base - l.add r2,r2,r1 - // Load pointer to the stack top and set frame pointer - l.lwz r1,0(r2) - l.or r2,r1,r1 - - // The slave cores are done, jump to main part - OR1K_DELAYED_NOP(OR1K_INST(l.j .Linit_done)); - - /* Only core 0 executes the initialization code */ -.Lcore0: -#endif - /* Call early board initialization */ - OR1K_DELAYED_NOP(OR1K_INST(l.jal _or1k_board_init_early)) - - /* Clear BSS */ -.Lclear_bss: - LOAD_SYMBOL_2_GPR(r3,__bss_start) - LOAD_SYMBOL_2_GPR(r4,end) - -.Lclear_bss_loop: - l.sw (0)(r3),r0 - l.sfltu r3,r4 - OR1K_DELAYED( - OR1K_INST(l.addi r3,r3,4), - OR1K_INST(l.bf .Lclear_bss_loop) - ) - - /* Initialise stack and frame pointer (set to same value) */ - LOAD_SYMBOL_2_GPR(r1,_or1k_board_mem_base) - l.lwz r1,0(r1) - LOAD_SYMBOL_2_GPR(r2,_or1k_board_mem_size) - l.lwz r2,0(r2) - l.add r1,r1,r2 - - /* Store exception stack top address */ - LOAD_SYMBOL_2_GPR(r3,_or1k_exception_stack_top) - l.sw 0(r3),r1 - - /* Store exception stack bottom address */ - // calculate bottom address - // r3 = *exception stack size - LOAD_SYMBOL_2_GPR(r3,_or1k_exception_stack_size) - // r3 = exception stack size - l.lwz r3,0(r3) -#ifdef __OR1K_MULTICORE__ - l.mfspr r4,r0,OR1K_SPR_SYS_NUMCORES_ADDR - l.mul r3,r4,r3 -#endif - // r4 = exception stack top - exception stack size = exception stack bottom - l.sub r4,r1,r3 - // r5 = *exception stack bottom - LOAD_SYMBOL_2_GPR(r5,_or1k_exception_stack_bottom) - // store - l.sw 0(r5),r4 - - // Move stack pointer accordingly - l.or r1,r0,r4 - l.or r2,r1,r1 - - /* Store stack top address */ - LOAD_SYMBOL_2_GPR(r3,_or1k_stack_top) - l.sw 0(r3),r1 - - /* Store stack bottom address */ - // calculate bottom address - // r3 = stack size - LOAD_SYMBOL_2_GPR(r3,_or1k_stack_size) - l.lwz r3,0(r3) -#ifdef __OR1K_MULTICORE__ - l.mfspr r4, r0, OR1K_SPR_SYS_NUMCORES_ADDR - l.mul r3, r4, r3 -#endif - // r4 = stack top - stack size = stack bottom - // -> stack bottom - l.sub r4,r1,r3 - // r5 = *exception stack bottom - LOAD_SYMBOL_2_GPR(r5,_or1k_stack_bottom) - // store to variable - l.sw 0(r5),r4 - - /* Reinitialize the or1k support library */ - OR1K_DELAYED_NOP(OR1K_INST(l.jal _or1k_init)) - - /* Reinitialize the reentrancy structure */ - OR1K_DELAYED_NOP(OR1K_INST(l.jal _or1k_libc_impure_init)) - - /* Call global and static constructors */ - OR1K_DELAYED_NOP(OR1K_INST(l.jal _init)) - - /* Set up destructors to be called from exit if main ever returns */ - l.movhi r3,hi(_fini) - OR1K_DELAYED( - OR1K_INST(l.ori r3,r3,lo(_fini)), - OR1K_INST(l.jal atexit) - ) - - /* Check if UART is to be initialised */ - LOAD_SYMBOL_2_GPR(r4,_or1k_board_uart_base) - l.lwz r4,0(r4) - /* Is base set? If not, no UART */ - l.sfne r4,r0 - l.bnf .Lskip_uart - l.or r3,r0,r0 - OR1K_DELAYED_NOP(OR1K_INST(l.jal _or1k_uart_init)) - -.Lskip_uart: - /* Board initialization */ - OR1K_DELAYED_NOP(OR1K_INST(l.jal _or1k_board_init)) - -#ifdef __OR1K_MULTICORE__ - // Start other cores - l.ori r3, r0, 1 - l.sw 0x4(r0), r3 -#endif - -.Linit_done: - /* Jump to main program entry point (argc = argv = envp = 0) */ - l.or r3,r0,r0 - l.or r4,r0,r0 - OR1K_DELAYED( - OR1K_INST(l.or r5,r0,r0), - OR1K_INST(l.jal main) - ) - -#ifdef __OR1K_MULTICORE__ -.incrementexit: - /* Atomically increment number of finished cores */ - l.lwa r3,0x8(r0) - l.addi r3,r3,1 - l.swa 0x8(r0),r3 - OR1K_DELAYED_NOP(OR1K_INST(l.bnf .incrementexit)); - /* Compare to number of cores in this cluster */ - l.mfspr r4,r0, OR1K_SPR_SYS_NUMCORES_ADDR - /* Compare to number of finished tasks */ - l.sfeq r3,r4 - /* Last core needs to desctruct library etc. */ - OR1K_DELAYED_NOP(OR1K_INST(l.bf .exitcorelast)); - OR1K_DELAYED( - OR1K_INST(l.addi r3,r11,0), - OR1K_INST(l.jal _exit) - ) -.exitcorelast: -#endif - /* If program exits, call exit routine */ - OR1K_DELAYED( - OR1K_INST(l.addi r3,r11,0), - OR1K_INST(l.jal exit) - ) - - /* Loop forever */ -.Lloop_forever: - OR1K_DELAYED_NOP(OR1K_INST(l.j .Lloop_forever)) - - .size _or1k_start,.-_or1k_start diff --git a/libgloss/or1k/exceptions-asm.S b/libgloss/or1k/exceptions-asm.S deleted file mode 100644 index 7248683f5..000000000 --- a/libgloss/or1k/exceptions-asm.S +++ /dev/null @@ -1,201 +0,0 @@ -/* exceptions-asm.S -- exception handling for OpenRISC 1000. - * - * Copyright (c) 2011, 2014 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "include/or1k-asm.h" -#include "include/or1k-sprs.h" - -/* -------------------------------------------------------------------------- */ -/*!Generic exception handler function - */ -/* -------------------------------------------------------------------------- */ -// Warning - this must be the same as specified in crt0.S -#define EXCEPTION_STACK_SIZE 128+128 - - .extern _or1k_exception_handler_table - -/* -------------------------------------------------------------------------- */ -/*!Function to call appropriate exception handler - */ -/* -------------------------------------------------------------------------- */ - .section .text - .global _or1k_exception_handler - .type _or1k_exception_handler,@function - - /* - r3 = address of exception vector - r4 = address where exception occurred - */ - -#define GPR_BUF_OFFSET(x) (x << 2) - -_or1k_exception_handler: - /* Store remainder of state (r3,r4 stored in vector entry)*/ - l.sw GPR_BUF_OFFSET(2)(r1),r2 - l.sw GPR_BUF_OFFSET(5)(r1),r5 - l.sw GPR_BUF_OFFSET(6)(r1),r6 - l.sw GPR_BUF_OFFSET(7)(r1),r7 - l.sw GPR_BUF_OFFSET(8)(r1),r8 - l.sw GPR_BUF_OFFSET(9)(r1),r9 - l.sw GPR_BUF_OFFSET(10)(r1),r10 - l.sw GPR_BUF_OFFSET(11)(r1),r11 - l.sw GPR_BUF_OFFSET(12)(r1),r12 - l.sw GPR_BUF_OFFSET(13)(r1),r13 - l.sw GPR_BUF_OFFSET(14)(r1),r14 - l.sw GPR_BUF_OFFSET(15)(r1),r15 - l.sw GPR_BUF_OFFSET(16)(r1),r16 - l.sw GPR_BUF_OFFSET(17)(r1),r17 - l.sw GPR_BUF_OFFSET(18)(r1),r18 - l.sw GPR_BUF_OFFSET(19)(r1),r19 - l.sw GPR_BUF_OFFSET(20)(r1),r20 - l.sw GPR_BUF_OFFSET(21)(r1),r21 - l.sw GPR_BUF_OFFSET(22)(r1),r22 - l.sw GPR_BUF_OFFSET(23)(r1),r23 - l.sw GPR_BUF_OFFSET(24)(r1),r24 - l.sw GPR_BUF_OFFSET(25)(r1),r25 - l.sw GPR_BUF_OFFSET(26)(r1),r26 - l.sw GPR_BUF_OFFSET(27)(r1),r27 - l.sw GPR_BUF_OFFSET(28)(r1),r28 - l.sw GPR_BUF_OFFSET(29)(r1),r29 - l.sw GPR_BUF_OFFSET(30)(r1),r30 - l.sw GPR_BUF_OFFSET(31)(r1),r31 - - /* Replace impure pointer for exception */ - l.movhi r20,hi(_or1k_exception_impure_ptr) - l.ori r20,r20,lo(_or1k_exception_impure_ptr) -#ifdef __OR1K_MULTICORE__ - l.lwz r20,0(r20) - l.mfspr r22,r0,OR1K_SPR_SYS_COREID_ADDR - l.slli r22,r22,2 - l.add r20,r20,r22 -#endif - l.lwz r20,0(r20) - - l.movhi r21,hi(_or1k_current_impure_ptr) - l.ori r21,r21,lo(_or1k_current_impure_ptr) -#ifdef __OR1K_MULTICORE__ - l.lwz r21,0(r21) - l.add r21,r21,r22 -#endif - l.sw 0(r21),r20 - - /* Determine offset in table of exception handler using r3*/ - l.andi r13,r3,0xff00 - l.srli r13,r13,6 - /* Substract 2 words, as we have no vector at 0 and no reset handler */ - l.addi r13,r13,-8 - /* r13 now contains offset in or1k_exception_handler_table for - function - */ - /* Get or1k_exception_handler_table address */ - l.movhi r14,hi(_or1k_exception_handler_table) - l.ori r14,r14,lo(_or1k_exception_handler_table) -#ifdef __OR1K_MULTICORE__ - /* Read the address of the array of cores */ - /* r14 = (*or1k_exception_handler_table) */ - l.lwz r14,0(r14) - /* Generate core offset in array (off = coreid*30*4 = coreid*120) */ - /* r15 = coreid */ - l.mfspr r15,r0,OR1K_SPR_SYS_COREID_ADDR - /* r16 = coreid * 128 */ - l.slli r16,r15,7 - /* r15 = coreid * 8 */ - l.slli r15,r15,3 - /* r15 = coreid*128 - coreid*8 = coreid*120 = off */ - l.sub r15,r16,r15 - /* r14 = (*or1k_exception_handler_table)[coreid] = r14 + off */ - l.add r14,r14,r15 -#endif - /* r14 now contains base of exception handler table */ - /* add offset of exception vector */ - l.add r14,r14,r13 - /* load handler address from table */ - l.lwz r13, 0(r14) - - /* Check to see if this handler has been set yet */ - l.sfne r13,r0 - OR1K_DELAYED_NOP(OR1K_INST(l.bnf exception_exit)) - - /* Call exception handler, copy EPCR to r3 */ - OR1K_DELAYED( - OR1K_INST(l.or r3,r4,r4), - OR1K_INST(l.jalr r13) - ) - - /* Restore impure pointer */ - l.movhi r20,hi(_or1k_impure_ptr) - l.ori r20,r20,lo(_or1k_impure_ptr) -#ifdef __OR1K_MULTICORE__ - l.lwz r20,0(r20) - l.mfspr r22,r0,OR1K_SPR_SYS_COREID_ADDR - l.slli r22,r22,2 - l.add r20,r20,r22 -#endif - l.lwz r20,0(r20) - - l.movhi r21,hi(_or1k_current_impure_ptr) - l.ori r21,r21,lo(_or1k_current_impure_ptr) -#ifdef __OR1K_MULTICORE__ - l.lwz r21,0(r21) - l.add r21,r21,r22 -#endif - l.sw 0(r21),r20 - - /* Restore state */ - l.lwz r2,GPR_BUF_OFFSET(2)(r1) - l.lwz r3,GPR_BUF_OFFSET(3)(r1) - l.lwz r4,GPR_BUF_OFFSET(4)(r1) - l.lwz r5,GPR_BUF_OFFSET(5)(r1) - l.lwz r6,GPR_BUF_OFFSET(6)(r1) - l.lwz r7,GPR_BUF_OFFSET(7)(r1) - l.lwz r8,GPR_BUF_OFFSET(8)(r1) - l.lwz r9,GPR_BUF_OFFSET(9)(r1) - l.lwz r10,GPR_BUF_OFFSET(10)(r1) - l.lwz r11,GPR_BUF_OFFSET(11)(r1) - l.lwz r12,GPR_BUF_OFFSET(12)(r1) - l.lwz r13,GPR_BUF_OFFSET(13)(r1) - l.lwz r14,GPR_BUF_OFFSET(14)(r1) - l.lwz r15,GPR_BUF_OFFSET(15)(r1) - l.lwz r16,GPR_BUF_OFFSET(16)(r1) - l.lwz r17,GPR_BUF_OFFSET(17)(r1) - l.lwz r18,GPR_BUF_OFFSET(18)(r1) - l.lwz r19,GPR_BUF_OFFSET(19)(r1) - l.lwz r20,GPR_BUF_OFFSET(20)(r1) - l.lwz r21,GPR_BUF_OFFSET(21)(r1) - l.lwz r22,GPR_BUF_OFFSET(22)(r1) - l.lwz r23,GPR_BUF_OFFSET(23)(r1) - l.lwz r24,GPR_BUF_OFFSET(24)(r1) - l.lwz r25,GPR_BUF_OFFSET(25)(r1) - l.lwz r26,GPR_BUF_OFFSET(26)(r1) - l.lwz r27,GPR_BUF_OFFSET(27)(r1) - l.lwz r28,GPR_BUF_OFFSET(28)(r1) - l.lwz r29,GPR_BUF_OFFSET(29)(r1) - l.lwz r30,GPR_BUF_OFFSET(30)(r1) - l.lwz r31,GPR_BUF_OFFSET(31)(r1) - - // Restore original stack - l.lwz r1,GPR_BUF_OFFSET(1)(r1) - - l.rfe - l.nop - -exception_exit: - /* Exception handler not set, exit */ - OR1K_DELAYED( - OR1K_INST(l.or r3,r4,r4), - OR1K_INST(l.jal exit) - ) diff --git a/libgloss/or1k/exceptions.c b/libgloss/or1k/exceptions.c deleted file mode 100644 index 8240d09d2..000000000 --- a/libgloss/or1k/exceptions.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "include/or1k-support.h" - -#include "or1k-internals.h" - -#ifdef __OR1K_MULTICORE__ -or1k_exception_handler_table_t *_or1k_exception_handler_table; -#else -or1k_exception_handler_table_t _or1k_exception_handler_table; -#endif - -void or1k_exception_handler_add(int id, or1k_exception_handler_fptr handler) -{ - // Subtract 2 as we do not have a vector at 0 and reset is static - id = id - 2; -#ifdef __OR1K_MULTICORE__ - _or1k_exception_handler_table[or1k_coreid()][id] = handler; - -#else - _or1k_exception_handler_table[id] = handler; -#endif -} diff --git a/libgloss/or1k/impure.c b/libgloss/or1k/impure.c deleted file mode 100644 index f4eb4ad19..000000000 --- a/libgloss/or1k/impure.c +++ /dev/null @@ -1,120 +0,0 @@ -/* impure.c. Handling of re-entrancy data structure for OpenRISC 1000. - - Copyright (C) 2014, Authors - - Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include <reent.h> -#include "or1k-internals.h" - -#include <string.h> - -/* As an exception handler may also use the library, it is better to use - * a different re-entrancy data structure for the exceptions. - * This data structure is configured here and as part of the exception - * handler (or1k_exception_handler) temporarily replaces the software's - * impure data pointer. - * - * During initialization, the libraries standard _impure_data and the exception - * impure data (_exception_impure_data) are initialized. Afterwards, - * the current value _current_impure_ptr is set to _impure_ptr. - * - * At runtime __getreent is called to return the current reentrancy pointer, - * which is stored in _current_impure_ptr. - * - * In the or1k_exception_handler the _current_impure_ptr is set to point to - * _exception_impure_ptr. After the exception handler returned, it is set back - * to _impure_ptr. - */ - -/* Link in the external impure_data structure */ -extern struct _reent *__ATTRIBUTE_IMPURE_PTR__ _impure_ptr; - -#ifdef __OR1K_MULTICORE__ -struct _reent **_or1k_impure_ptr; -struct _reent **_or1k_exception_impure_ptr; -struct _reent **_or1k_current_impure_ptr; -#else -struct _reent *__ATTRIBUTE_IMPURE_PTR__ _or1k_impure_ptr; - -/* Create exception impure data structure */ -static struct _reent _or1k_exception_impure_data = _REENT_INIT (_or1k_exception_impure_data); - -/* Link to the exception impure data structure */ -struct _reent *__ATTRIBUTE_IMPURE_PTR__ _or1k_exception_impure_ptr = &_or1k_exception_impure_data; - -/* Link to the currently used data structure. */ -struct _reent *__ATTRIBUTE_IMPURE_PTR__ _or1k_current_impure_ptr; -#endif - -#ifdef __OR1K_MULTICORE__ -#define OR1K_LIBC_GETREENT _or1k_current_impure_ptr[or1k_coreid()] -#else -#define OR1K_LIBC_GETREENT _or1k_current_impure_ptr -#endif - -void -_or1k_libc_impure_init (void) -{ -#ifdef __OR1K_MULTICORE__ - uint32_t c; - - _or1k_impure_ptr = _sbrk_r(0, sizeof(struct _reent*) * or1k_numcores()); - _or1k_exception_impure_ptr = _sbrk_r(0, sizeof(struct _reent*) * or1k_numcores()); - _or1k_current_impure_ptr = _sbrk_r(0, sizeof(struct _reent*) * or1k_numcores()); - - _or1k_impure_ptr[0] = _impure_ptr; - _REENT_INIT_PTR(_impure_ptr); - for (c = 1; c < or1k_numcores(); c++) { - _or1k_impure_ptr[c] = _sbrk_r(0, sizeof(struct _reent)); - _REENT_INIT_PTR(_or1k_impure_ptr[c]); - } - - for (c = 0; c < or1k_numcores(); c++) { - _or1k_exception_impure_ptr[c] = _sbrk_r(0, sizeof(struct _reent)); - _REENT_INIT_PTR(_or1k_exception_impure_ptr[c]); - } - - for (c = 0; c < or1k_numcores(); c++) { - _or1k_current_impure_ptr[c] = _or1k_impure_ptr[c]; - } -#else - // Initialize both impure data structures - _REENT_INIT_PTR (_impure_ptr); - _REENT_INIT_PTR (_or1k_exception_impure_ptr); - - // Set current to standard impure pointer - _or1k_current_impure_ptr = _impure_ptr; -#endif -} - -struct _reent* -_or1k_libc_getreent(void) { - return OR1K_LIBC_GETREENT; -} - -#ifdef __OR1K_MULTICORE__ -struct _or1k_reent (*_or1k_reent)[]; -#else -struct _or1k_reent _or1k_reent; -#endif - -void -_or1k_reent_init(void) -{ -#ifdef __OR1K_MULTICORE__ - size_t memsize = sizeof(struct _or1k_reent) * or1k_numcores(); - _or1k_reent = (struct _or1k_reent*) _sbrk_r(0, memsize); -#endif -} diff --git a/libgloss/or1k/include/or1k-asm.h b/libgloss/or1k/include/or1k-asm.h deleted file mode 100644 index c218c64fe..000000000 --- a/libgloss/or1k/include/or1k-asm.h +++ /dev/null @@ -1,83 +0,0 @@ -/* or1k-asm.h -- OR1K assembly helper macros - - Copyright (c) 2014 OpenRISC Project Maintainers - Copyright (C) 2012-2014 Peter Gavin <pgavin@gmail.com> - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following condition - is met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT HOLDER 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. - - */ - -#ifndef OR1K_ASM_H -#define OR1K_ASM_H - -/* The purpose of the OR1K_INST macro is simply to protect the commas - embedded within an instruction from the C preprocessor. An entire - instruction can be safely embedded within its arguments, including - an arbitrary number of commas, and it will be reproduced - exactly. */ -#define OR1K_INST(...) __VA_ARGS__ - -/* OR1K_DELAYED takes two arguments which must be instructions. They - should be wrapped in OR1K_INST if the instructions require commas. - The second argument should be a jump or branch instruction. If we - are assembling the code in delay-slot mode (e.g., for the standard - OR1K) the first instruction will be emitted in the delay slot of - the second instruction. In no-delay-slot mode they will be emitted - in order. If we are using compat-delay mode, they will be emitted - in order, but an l.nop instruction will be emitted immediately - after. */ - -/* OR1K_DELAYED_NOP takes a single argument, which should be a - branch/jump instruction. In delay-slot or compat-delay modes, the - instruction will be emitted with an l.nop in its delay slot. In - no-delay mode, the instruction will be emitted by itself. */ - -#if defined(__OR1K_NODELAY__) - -#define OR1K_DELAYED(a, b) a; b -#define OR1K_DELAYED_NOP(a) a - -/* Go ahead and emit the .nodelay directive when in no-delay mode, so - that the flags are appropriately set in the binary. */ -.nodelay - -#elif defined(__OR1K_DELAY__) - -#define OR1K_DELAYED(a, b) b; a -#define OR1K_DELAYED_NOP(a) a; l.nop - -#elif defined(__OR1K_DELAY_COMPAT__) - -#define OR1K_DELAYED(a, b) a; b; l.nop -#define OR1K_DELAYED_NOP(a) a; l.nop - -#else - -#error One of __OR1K_NODELAY__, __OR1K_DELAY__, or __OR1K_DELAY_COMPAT__ must be defined - -#endif - -#define LOAD_SYMBOL_2_GPR(gpr,symbol) \ - .global symbol ; \ - l.movhi gpr, hi(symbol) ; \ - l.ori gpr, gpr, lo(symbol) -#endif diff --git a/libgloss/or1k/include/or1k-nop.h b/libgloss/or1k/include/or1k-nop.h deleted file mode 100644 index 0d432dad4..000000000 --- a/libgloss/or1k/include/or1k-nop.h +++ /dev/null @@ -1,35 +0,0 @@ -/* or1k-asm.h -- OR1K assembly helper macros - - Copyright (c) 2014 OpenRISC Project Maintainers - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following condition - is met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT HOLDER 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. - */ - -#ifndef __OR1K_NOP_H__ -#define __OR1K_NOP_H__ - -#define OR1K_NOP_K_NOP 0x0 -#define OR1K_NOP_K_EXIT 0x1 -#define OR1K_NOP_K_PUTC 0x4 -#define OR1K_NOP_K_EXIT_QUIET 0xc - -#endif diff --git a/libgloss/or1k/include/or1k-support.h b/libgloss/or1k/include/or1k-support.h deleted file mode 100644 index c29b064be..000000000 --- a/libgloss/or1k/include/or1k-support.h +++ /dev/null @@ -1,665 +0,0 @@ -/* Copyright (c) 2014 Authors - * - * Contributor Julius Baxter <julius.baxter@orsoc.se> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -/* -------------------------------------------------------------------------- */ -/* This program is commented throughout in a fashion suitable for processing -with Doxygen. */ -/* -------------------------------------------------------------------------- */ - -#include <stdint.h> - -#ifndef __OR1K_SUPPORT_H__ -#define __OR1K_SUPPORT_H__ - -/*! -* \defgroup or1k_macros OR1K macros -* @{ -*/ - -/*! -* Access byte-sized memory mapped register -* -* Used to access a byte-sized memory mapped register. It avoids usage errors -* when not defining register addresses volatile and handles casting correctly. -* -* Example for both read and write: -* -* \code -* uint8_t status = REG8(IPBLOCK_STATUS_REG_ADDR); -* REG8(IPBLOCK_ENABLE) = 1; -* \endcode -* -* \param add Register address -*/ -#define REG8(add) *((volatile unsigned char *) (add)) - -/*! -* Access halfword-sized memory mapped register -* -* Used to access a 16 byte-sized memory mapped register. It avoids usage errors -* when not defining register addresses volatile and handles casting correctly. -* -* See REG8() for an example. -* -* \param add Register address -*/ -#define REG16(add) *((volatile unsigned short *) (add)) - -/*! -* Access word-sized memory mapped register -* -* Used to access a word-sized memory mapped register. It avoids usage errors -* when not defining register addresses volatile and handles casting correctly. -* -* See REG8() for an example. -* -* \param add Register address -*/ -#define REG32(add) *((volatile unsigned long *) (add)) -/*! -* @} -*/ - -/*! -* \defgroup or1k_interrupts OR1K interrupt control -* -* Interrupt control function prototypes -* -* @{ -*/ - -/*! Function pointer to interrupt handler functions */ -typedef void (*or1k_interrupt_handler_fptr)(void* data); - -/*! -* Add interrupt handler for interrupt line -* -* Registers a callback function for a certain interrupt line. -* -* \param line Interrupt line/id to register a handler for -* \param handler Handler to register -* \param data Data value passed to the handler -*/ -void or1k_interrupt_handler_add(uint32_t line, - or1k_interrupt_handler_fptr handler, - void* data); - -/*! -* Enable interrupts from a given line -* -* Unmask the given interrupt line. It is also important to enable interrupts -* in general, e.g., using or1k_interrupts_enable(). -* -* \param line Interrupt line to enable -*/ -void or1k_interrupt_enable(int line); - -/*! -* Disable interrupts from a given line -* -* Mask given interrupt line. It can be unmasked using or1k_interrupt_enable(). -* -* \param line Interrupt line to disable -*/ -void or1k_interrupt_disable(int line); - -/*! -* Disable interrupts -* -* This disables the interrupt exception. This is sufficient to disable all -* interrupts. It does not change the mask register (which is modified using -* or1k_interrupt_enable() and or1k_interrupt_disable()). -* -* The interrupt exception can be enabled using or1k_interrupts_enable(). -* -* Finally, the status of the interrupt exception enable flag is returned by -* this function. That allows to call this function even if interrupts are -* already disabled. To restore the value of the interrupt exception enable -* flag, use the or1k_interrupts_restore() function. That way you avoid to -* accidentally enable interrupts. Example: -* -* \code -* void f() { -* uint32_t interrupt_status = or1k_interrupts_disable(); -* // do something -* or1k_interrupts_restore(status); -* } -* \endcode -* -* This code will preserve the original status of the interrupt enable flag. -* -* \return Interrupt exception enable flag before call -*/ -uint32_t or1k_interrupts_disable(void); - -/*! -* Enable interrupt exception -* -* Enable the interrupt exception. Beside the interrupt exception, it is also -* necessary to enable the individual interrupt lines using -* or1k_interrupt_enable(). -* -* You should avoid using this function together with or1k_interrupts_disable() -* to guard atomic blocks as it unconditionally enables the interrupt -* exception (see documentation of or1k_interrupts_disable()). -*/ -void or1k_interrupts_enable(void); - -/*! -* Restore interrupt exception enable flag -* -* This function restores the given status to the processor. -* or1k_interrupts_restore(0) is identical to or1k_interrupts_disable() and -* or1k_interrupts_restore(SPR_SR_IEE) is identical to or1k_interrupts_enable(). -* -* It is for example used to guard an atomic block and restore the original -* status of the interrupt exception enable flag as returned by -* or1k_interrupts_disable(). See the documentation of or1k_interrupts_disable() -* for a usage example. -* -* \param status Status of the flag to restore -*/ -void or1k_interrupts_restore(uint32_t status); - -/*! - * Disable timer and interrupt exception - * - * This function disables the timer and interrupt exception to guard critical - * sections. It returns the status of the enable bits before the critical - * section, that is restored with or1k_critical_end(). - * - * Example: - * \code - * ... - * uint32_t status = or1k_critical_start(); - * // critical part - * or1k_critical_end(status); - * ... - * \endcode - * - * \return Status of timer and interrupt exception at time of call - */ -uint32_t or1k_critical_begin(); - -/*! - * Enable timer and interrupt exception - * - * Restore the timer and interrupt exception enable. The restore value is the - * return value from or1k_critical_start(). - * - * \param restore Interrupt and timer exception enable restore value - */ -void or1k_critical_end(uint32_t restore); -/*! -* @} -*/ - -/*! -* \defgroup or1k_exception Exception handling -* @{ -*/ -/*! Function pointer to an exception handler function */ -typedef void (*or1k_exception_handler_fptr)(void); - -/*! -* Register exception handler -* -* Register an exception handler for the given exception id. This handler is -* in the following then called when the exception occurs. You can thereby -* individually handle those exceptions. -* -* \param id Exception id -* \param handler Handler callback -*/ -void or1k_exception_handler_add(int id, or1k_exception_handler_fptr handler); -/*! -* @} -*/ - -/*! -* \defgroup or1k_spr SPR access -* @{ -*/ - -/*! -* Move value to special purpose register -* -* Move data value to a special purpose register -* -* \param spr SPR identifier, see spr-defs.h for macros -* \param value value to move to SPR -*/ -static inline void or1k_mtspr (uint32_t spr, uint32_t value) -{ - __asm__ __volatile__ ("l.mtspr\t\t%0,%1,0": : "r" (spr), "r" (value)); -} - -/*! -* Copy value from special purpose register -* -* Copy a data value from the given special purpose register. -* -* \param spr SPR identifier, see spr-defs.h for macros -* \return SPR data value -*/ -static inline uint32_t or1k_mfspr (uint32_t spr) { - uint32_t value; - __asm__ __volatile__ ("l.mfspr\t\t%0,%1,0" : "=r" (value) : "r" (spr)); - return value; -} -/*! -* @} -*/ - -/*! -* \defgroup or1k_util Miscellaneous utility functions -* -* @{ -*/ - -/*! -* Report value to simulator -* -* Uses the built-in simulator functionality. -* -* \param value Value to report -*/ -void or1k_report (unsigned long int value); - -/*! -* Get (pseudo) random number -* -* This should return pseudo-random numbers, based on a Galois LFSR. -* -* \return (Pseudo) Random number -*/ -unsigned long int or1k_rand(void); - -/*! - * Register UART callback - * - * This function sets a callback function that is called when a character is - * received via UART. The callback function has no return and a gets the - * character as parameter. When a character is received, the function is called. - * - * Example (UART echo): - * \code - * void uart_in(char c) { - * printf("%c", c); // Echo - * } - * - * int main() { - * or1k_uart_set_read_cb(&uart_in); - * or1k_interrupts_enable(); - * - * while (1) {} - * } - * \endcode - */ -void or1k_uart_set_read_cb(void (*cb)(char c)); -/*! -* @} -*/ - -/*! -* \defgroup or1k_cache Cache control -* -* @{ -*/ - -/*! -* Enable instruction cache -*/ -void or1k_icache_enable(void); - -/*! -* Disable instruction cache -*/ -void or1k_icache_disable(void); - -/*! -* Flush instruction cache -* -* Invalidate instruction cache entry -* -* \param entry Entry to invalidate -*/ -void or1k_icache_flush(uint32_t entry); - -/*! -* Enable data cache -*/ -void or1k_dcache_enable(void); - -/*! -* Disable data cache -*/ -void or1k_dcache_disable(void); - -/*! -* Flush data cache -* -* Invalidate data cache entry -* -* \param entry Entry to invalidate -*/ -void or1k_dcache_flush(unsigned long entry); -/*! -* @} -*/ - -/*! -* \defgroup or1k_mmu MMU control -* @{ -*/ - -/*! -* Enable instruction MMU -*/ -void or1k_immu_enable(void); - -/*! -* Disable instruction MMU -*/ -void or1k_immu_disable(void); - -/*! -* Enable data MMU -*/ -void or1k_dmmu_enable(void); - -/*! -* Disable data MMU -*/ -void or1k_dmmu_disable(void); -/*! -* @} -*/ - -/*! -* \defgroup or1k_timer Timer control -* -* The tick timer can be used for time measurement, operating system scheduling -* etc. By default it is initialized to continuously count the ticks of a -* certain period after calling or1k_timer_init(). The period can later be -* changed using or1k_timer_set_period(). -* -* The timer is controlled using or1k_timer_enable(), or1k_timer_disable(), -* or1k_timer_restore(), or1k_timer_pause(). After initialization it is required -* to enable the timer the first time using or1k_timer_enable(). -* or1k_timer_disable() only disables the tick timer interrupts, it does not -* disable the timer counting. If you plan to use a pair of or1k_timer_disable() -* and or1k_timer_enable() to protect sections of your code against interrupts -* you should use or1k_timer_disable() and or1k_timer_restore(), as it may be -* possible that the timer interrupt was not enabled before disabling it, -* enable would then start it unconditionally. or1k_timer_pause() pauses the -* counting. -* -* In the default mode you can get the tick value using or1k_timer_get_ticks() -* and reset this value using or1k_timer_reset_ticks(). -* -* Example for using the default mode: -* -* \code -* int main() { -* uint32_t ticks = 0; -* uint32_t timerstate; -* or1k_timer_init(100); -* or1k_timer_enable(); -* while (1) { -* while (ticks == or1k_timer_get_ticks()) { } -* timerstate = or1k_timer_disable(); -* // do something atomar -* or1k_timer_restore(timerstate); -* if (ticks == 100) { -* printf("A second elapsed\n"); -* or1k_timer_reset_ticks(); -* ticks = 0; -* } -* } -* } -* \endcode -* -* It is possible to change the mode of the tick timer using -* or1k_timer_set_mode(). Allowed values are the correct bit pattern (including -* the bit positions) for the TTMR register, it is recommended to use the macros -* defined in spr-defs.h. For example, implementing an operating system with -* scheduling decisions of varying duration favors the implementation of single -* run tick timer. Here, each quantum is started before leaving the operating -* system kernel. The counter can be restarted with or1k_timer_reset(). -* Example: -* -* \code -* void tick_handler(void) { -* // Make schedule decision -* // and set new thread -* or1k_timer_reset(); -* // End of exception, new thread will run -* } -* -* int main() { -* // Configure operating system and start threads.. -* -* // Configure timer -* or1k_timer_init(50); -* or1k_timer_set_handler(&tick_handler); -* or1k_timer_set_mode(SPR_TTMR_SR); -* or1k_timer_enable(); -* -* // Schedule first thread and die.. -* } -* \endcode -* -* @{ -*/ - -/*! -* Initialize tick timer -* -* This initializes the tick timer in default mode (see \ref or1k_timer for -* details). -* -* \param hz Initial period of the tick timer -* \return 0 if successful, -1 if timer not present -*/ -int or1k_timer_init(unsigned int hz); - -/*! -* Set period of timer -* -* Set the period of the timer to a value in Hz. The frequency from the board -* support package is used to determine the match value. -*/ -void or1k_timer_set_period(uint32_t hz); - -/*! -* Replace the timer interrupt handler -* -* By default the tick timer is used to handle timer ticks. The user can replace -* this with an own handler for example when implementing an operating system. -* -* \param handler The callback function pointer to the handler -*/ -void or1k_timer_set_handler(void (*handler)(void)); - -/*! -* Set timer mode -* -* The timer has different modes (see architecture manual). The default is to -* automatically restart counting (SPR_TTMR_RT), others are single run -* (SPR_TTMR_SR) and continuous run (SPR_TTMR_CR). -* -* \param mode a valid mode (use definitions from spr-defs.h as it is important -* that those are also at the correct position in the bit field!) -*/ -void or1k_timer_set_mode(uint32_t mode); - -/*! -* Enable timer interrupt -* -* Enable the timer interrupt exception, independent of the status before. -* If you want to enable the timer conditionally, for example to implement a -* non-interruptible sequence of code, you should use or1k_timer_restore(). See -* the description of or1k_timer_disable() for more details. -* -* The enable will also restore the mode if the timer was paused previously. -*/ -void or1k_timer_enable(void); - -/*! -* Disable timer interrupt -* -* This disables the timer interrupt exception and returns the state of the -* interrupt exception enable flag before the call. This can be used with -* or1k_timer_restore() to implement sequences of code that are not allowed to -* be interrupted. Using or1k_timer_enable() will unconditionally enable the -* interrupt independent of the state before calling or1k_timer_disable(). -* For an example see \ref or1k_timer. -* -* \return Status of timer interrupt before call -*/ -uint32_t or1k_timer_disable(void); - -/*! -* Restore timer interrupt exception flag -* -* Restores the timer interrupt exception flag as returned by -* or1k_timer_disable(). See the description of or1k_timer_disable() and \ref -* or1k_timer for details and an example. -* -* \param sr_tee Status of timer interrupt -*/ -void or1k_timer_restore(uint32_t sr_tee); - -/*! -* Pause timer counter -* -* Pauses the counter of the tick timer. The counter will hold its current value -* and it can be started again with or1k_timer_enable() which will restore the -* configured mode. -*/ -void or1k_timer_pause(void); - -/*! -* Reset timer counter -*/ -void or1k_timer_reset(void); - -/*! -* Get timer ticks -* -* Get the global ticks of the default configuration. This will increment the -* tick counter according to the preconfigured period. -* -* \return Current value of ticks -*/ -unsigned long or1k_timer_get_ticks(void); - -/*! -* Reset timer ticks -* -* Resets the timer ticks in default configuration to 0. -*/ -void or1k_timer_reset_ticks(void); -/*! -* @} -*/ - -/*! - * \defgroup or1k_multicore Multicore and Synchronization Support - * - * @{ - */ - -/*! - * Compiled with multicore support - * - * \return 1 if compiled with multicore support, 0 otherwise - */ -uint32_t or1k_has_multicore_support(void); - -/*! - * Read core identifier - * - * \return Core identifier - */ -uint32_t or1k_coreid(void); - -/*! - * Read number of cores - * - * \return Total number of cores - */ -uint32_t or1k_numcores(void); - -/*! - * Load linked - * - * Load a value from the given address and link it. If the following - * or1k_sync_sc() goes to the same address and there was no conflicting access - * between loading and storing, the value is written back, else the write fails. - * - * \param address Address to load value from - * \return Value read from the address - */ -uint32_t or1k_sync_ll(void *address); - -/** - * Store conditional - * - * Conditionally store a value to the address. The address must have been read - * before using or1k_sync_ll() and there must be no other load link after that, - * otherwise this will always fail. In case there was no other write to the same - * address in between the load link and the store conditional, the store is - * successful, otherwise it will also fail. - * - * \param address Address to conditionally store to - * \param value Value to write to address - * \return 1 if success, 0 if fail - */ -int or1k_sync_sc(void *address, uint32_t value); - -/*! - * Compare and Swap - * - * Loads a data item from the memory and compares a given value to it. If the - * values match, a new value is written to the memory, if they mismatch, the - * operation is aborted. The whole operation is atomic, i.e., it is guaranteed - * that no other core changes the value between the read and the write. - * - * \param address Address to operate on - * \param compare Compare value - * \param swap New value to write - * \return The value read from memory (can be used to check for success) - */ -uint32_t or1k_sync_cas(void *address, uint32_t compare, uint32_t swap); - -/*! - * Test and Set Lock - * - * Check for a lock on an address. This means, if there is 0 at an address it - * will overwrite it with 1 and return 0. If the lock was already set (value - * 1 read from address), the function returns 1. The operation is atomic. - * - * \param address Address of the lock - * \return 0 if success, 1 if failed - */ -int or1k_sync_tsl(void *address); -/*! - * @} - */ - -#endif /* __NEWLIB_OR1K_SUPPORT_H__ */ diff --git a/libgloss/or1k/interrupts-asm.S b/libgloss/or1k/interrupts-asm.S deleted file mode 100644 index 560035285..000000000 --- a/libgloss/or1k/interrupts-asm.S +++ /dev/null @@ -1,166 +0,0 @@ -/* interrupts-asm.S -- interrupt handling for OpenRISC 1000. - * - * Copyright (c) 2011, 2012, 2014 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * Contributor Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -/* -------------------------------------------------------------------------- */ -/*!Generic interrupt handler function for or1k - */ -/* -------------------------------------------------------------------------- */ - -#include "include/or1k-asm.h" -#include "include/or1k-sprs.h" - - .extern _or1k_interrupt_handler_table - .extern _or1k_interrupt_handler_data_ptr_table - -/* -------------------------------------------------------------------------- */ -/*!Function to call appropriate interrupt handler - */ -/* -------------------------------------------------------------------------- */ - - .section .text - .global _or1k_interrupt_handler - .type _or1k_interrupt_handler,@function - -_or1k_interrupt_handler: - /* Make room on stack, save link register */ - l.addi r1,r1,-12 - l.sw 0(r1),r9 - - /* Read PICSR */ - l.mfspr r3,r0,OR1K_SPR_PIC_PICSR_ADDR - - /* Load handler table base address */ - l.movhi r7,hi(_or1k_interrupt_handler_table) - l.ori r7,r7,lo(_or1k_interrupt_handler_table) - /* Load data pointer table base address */ - l.movhi r12,hi(_or1k_interrupt_handler_data_ptr_table) - l.ori r12,r12,lo(_or1k_interrupt_handler_data_ptr_table) -#ifdef __OR1K_MULTICORE__ - /* Read the addresses of the arrays of cores */ - /* r7 = (*or1k_interrupt_handler_table) */ - l.lwz r7,0(r7) - /* r12 = (*or1k_interrupt_handler_data_ptr_table) */ - l.lwz r12,0(r12) - /* Generate offset in arrays */ - /* r14 = coreid */ - l.mfspr r14,r0,OR1K_SPR_SYS_COREID_ADDR - /* r14 = coreid*32*4 = off */ - l.slli r14,r14,7 - /* r7 = (*or1k_exception_handler_table)[coreid] */ - l.add r7,r7,r14 - /* r12 = (*or1k_exception_handler_table)[coreid] */ - l.add r12,r12,r14 -#endif - -.L0: - /* Find first set bit in PICSR */ - l.ff1 r4,r3 - /* Any bits set? */ - l.sfne r4,r0 - /* If none, finish */ - OR1K_DELAYED_NOP(OR1K_INST(l.bnf .L2)) - /* What is IRQ function table offset? */ - l.addi r5,r4,-1 - l.slli r6,r5,2 - /* Add this to table bases */ - l.add r14,r6,r7 - l.add r13,r6,r12 - - /* Fetch handler function address */ - l.lwz r14,0(r14) - - /* Double check it's valid, compare against INTERRUPT_HANDLER_NOT_SET */ - l.sfne r14,r0 - /* Skip if no handler: TODO: Indicate interrupt fired but no handler*/ - OR1K_DELAYED_NOP(OR1K_INST(l.bnf .L1)) - - /* Pull out data pointer from table, save r3, we'll write over it */ - l.sw 4(r1),r3 - l.lwz r3,0(r13) - /* Call handler, save r5 in delay slot */ - OR1K_DELAYED( - OR1K_INST(l.sw 8(r1),r5), - OR1K_INST(l.jalr r14) - ) - - /* Reload r3,r5 */ - l.lwz r3,4(r1) - l.lwz r5,8(r1) -.L1: - /* Clear bit from PICSR, return to start of checking loop */ - l.ori r6,r0,1 - l.sll r6,r6,r5 - OR1K_DELAYED( - OR1K_INST(l.xor r3,r3,r6), - OR1K_INST(l.j .L0) - ) - -.L2: - /* Finish up - write PICSR back, restore r9*/ - l.lwz r9,0(r1) - l.mtspr r0,r3,OR1K_SPR_PIC_PICSR_ADDR - OR1K_DELAYED( - OR1K_INST(l.addi r1,r1,12), - OR1K_INST(l.jr r9) - ) - -/* -------------------------------------------------------------------------- */ -/*!Function to enable an interrupt handler in the PICMR - */ -/* -------------------------------------------------------------------------- */ - .global or1k_interrupt_enable - .type or1k_interrupt_enable,@function - - /* r3 should have IRQ line for peripheral */ -or1k_interrupt_enable: - l.addi r1,r1,-4 - l.sw 0(r1),r4 - l.ori r4,r0,0x1 - l.sll r4,r4,r3 - l.mfspr r3,r0,OR1K_SPR_PIC_PICMR_ADDR - l.or r3,r3,r4 - l.mtspr r0,r3,OR1K_SPR_PIC_PICMR_ADDR - l.lwz r4,0(r1) - OR1K_DELAYED( - OR1K_INST(l.addi r1,r1,4), - OR1K_INST(l.jr r9) - ) - -/* -------------------------------------------------------------------------- */ -/*!Function to disable an interrupt handler in the PICMR - */ -/* -------------------------------------------------------------------------- */ - .global or1k_interrupt_disable - .type or1k_interrupt_disable,@function - - /* r3 should have IRQ line for peripheral */ -or1k_interrupt_disable: - l.addi r1,r1,-4 - l.sw 0(r1),r4 - l.ori r4,r0,0x1 - l.sll r4,r4,r3 - l.xori r4,r4,0xffff - l.mfspr r3,r0,OR1K_SPR_PIC_PICMR_ADDR - l.and r3,r3,r4 - l.mtspr r0,r3,OR1K_SPR_PIC_PICMR_ADDR - l.lwz r4,0(r1) - OR1K_DELAYED( - OR1K_INST(l.addi r1,r1,4), - OR1K_INST(l.jr r9) - ) diff --git a/libgloss/or1k/interrupts.c b/libgloss/or1k/interrupts.c deleted file mode 100644 index 6badc497c..000000000 --- a/libgloss/or1k/interrupts.c +++ /dev/null @@ -1,69 +0,0 @@ -/* interrupts.c -- interrupt handling for OpenRISC 1000. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "include/or1k-support.h" -#include "include/or1k-sprs.h" -#include <stdint.h> - -#include "or1k-internals.h" - -#ifdef __OR1K_MULTICORE__ -or1k_interrupt_handler_table_t *_or1k_interrupt_handler_table; -or1k_interrupt_handler_data_ptr_table_t *_or1k_interrupt_handler_data_ptr_table; -#else -or1k_interrupt_handler_table_t _or1k_interrupt_handler_table; -or1k_interrupt_handler_data_ptr_table_t _or1k_interrupt_handler_data_ptr_table; -#endif - -void or1k_interrupt_handler_add(uint32_t id, - or1k_interrupt_handler_fptr handler, - void *data_ptr) -{ -#ifdef __OR1K_MULTICORE__ - _or1k_interrupt_handler_table[or1k_coreid()][id] = handler; - _or1k_interrupt_handler_data_ptr_table[or1k_coreid()][id] = (uint32_t) data_ptr; -#else - _or1k_interrupt_handler_table[id] = handler; - _or1k_interrupt_handler_data_ptr_table[id] = (uint32_t) data_ptr; -#endif -} - -void -or1k_interrupts_enable(void) -{ - uint32_t sr = or1k_mfspr(OR1K_SPR_SYS_SR_ADDR); - sr = OR1K_SPR_SYS_SR_IEE_SET(sr, 1); - or1k_mtspr(OR1K_SPR_SYS_SR_ADDR, sr); -} - -uint32_t -or1k_interrupts_disable(void) -{ - uint32_t oldsr, newsr; - oldsr= or1k_mfspr(OR1K_SPR_SYS_SR_ADDR); - newsr = OR1K_SPR_SYS_SR_IEE_SET(oldsr, 0); - or1k_mtspr(OR1K_SPR_SYS_SR_ADDR, newsr); - return OR1K_SPR_SYS_SR_IEE_GET(oldsr); -} - -void -or1k_interrupts_restore(uint32_t sr_iee) -{ - uint32_t sr = or1k_mfspr(OR1K_SPR_SYS_SR_ADDR); - sr = OR1K_SPR_SYS_SR_IEE_SET(sr, sr_iee); - or1k_mtspr(OR1K_SPR_SYS_SR_ADDR, sr); -} diff --git a/libgloss/or1k/mmu-asm.S b/libgloss/or1k/mmu-asm.S deleted file mode 100644 index 535824ccb..000000000 --- a/libgloss/or1k/mmu-asm.S +++ /dev/null @@ -1,67 +0,0 @@ -/* mmu-asm.S -- MMU handling for OpenRISC 1000. - * - * Copyright (c) 2011, 2014 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -/* -------------------------------------------------------------------------- */ -/*!Function to control MMU - */ -/* -------------------------------------------------------------------------- */ - -#include "include/or1k-asm.h" -#include "include/or1k-sprs.h" - -/* MMU control functions always switch MMU control with a l.rfe to return - from function */ - .section .text - - .global or1k_dmmu_enable -or1k_dmmu_enable: - l.mfspr r3,r0,OR1K_SPR_SYS_SR_ADDR - l.ori r3,r3,OR1K_SPR_SYS_SR_DME_MASK - l.mtspr r0,r3,OR1K_SPR_SYS_ESR_BASE - l.mtspr r0,r9,OR1K_SPR_SYS_EPCR_BASE - OR1K_DELAYED_NOP(OR1K_INST(l.rfe)) - - - .global or1k_dmmu_disable -or1k_dmmu_disable: - l.ori r3,r0,OR1K_SPR_SYS_SR_DME_MASK - l.xori r4,r3,0xffff - l.mfspr r3,r0,OR1K_SPR_SYS_SR_ADDR - l.and r3,r4,r3 - l.mtspr r0,r3,OR1K_SPR_SYS_ESR_BASE - l.mtspr r0,r9,OR1K_SPR_SYS_EPCR_BASE - OR1K_DELAYED_NOP(OR1K_INST(l.rfe)) - - - .global or1k_immu_enable -or1k_immu_enable: - l.mfspr r3,r0,OR1K_SPR_SYS_SR_ADDR - l.ori r3,r3,OR1K_SPR_SYS_SR_IME_MASK - l.mtspr r0,r3,OR1K_SPR_SYS_ESR_BASE - l.mtspr r0,r9,OR1K_SPR_SYS_EPCR_BASE - OR1K_DELAYED_NOP(OR1K_INST(l.rfe)) - - .global or1k_immu_disable -or1k_immu_disable: - l.ori r3,r0,OR1K_SPR_SYS_SR_IME_MASK - l.xori r4,r3,0xffff - l.mfspr r3,r0,OR1K_SPR_SYS_SR_ADDR - l.and r3,r4,r3 - l.mtspr r0,r3,OR1K_SPR_SYS_ESR_BASE - l.mtspr r0,r9,OR1K_SPR_SYS_EPCR_BASE - OR1K_DELAYED_NOP(OR1K_INST(l.rfe)) diff --git a/libgloss/or1k/or1k-internals.h b/libgloss/or1k/or1k-internals.h deleted file mode 100644 index b24ad136b..000000000 --- a/libgloss/or1k/or1k-internals.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef __OR1K_INTERNAL_H__ -#define __OR1K_INTERNAL_H__ - -#include <stdint.h> -#include <string.h> - -#include "include/or1k-support.h" - -extern uint32_t* _or1k_stack_top; -extern size_t _or1k_stack_size; -extern uint32_t* _or1k_stack_bottom; - -extern uint32_t* _or1k_exception_stack_top; -extern size_t _or1k_exception_stack_size; -extern uint32_t* _or1k_exception_stack_bottom; - -#ifdef __OR1K_MULTICORE__ -extern uint32_t* *_or1k_stack_core; -extern uint32_t* *_or1k_exception_stack_core; -#endif - - -// The first two vectors are not used (address 0 and reset) -#define OR1K_NUM_EXCEPTIONS 30 - -typedef or1k_exception_handler_fptr or1k_exception_handler_table_t[OR1K_NUM_EXCEPTIONS]; - -#ifdef __OR1K_MULTICORE__ -extern or1k_exception_handler_table_t *_or1k_exception_handler_table; -#else -extern or1k_exception_handler_table_t _or1k_exception_handler_table; -#endif - -typedef or1k_interrupt_handler_fptr or1k_interrupt_handler_table_t[32]; -typedef void* or1k_interrupt_handler_data_ptr_table_t[32]; - -#ifdef __OR1K_MULTICORE__ -extern or1k_interrupt_handler_table_t *_or1k_interrupt_handler_table; -extern or1k_interrupt_handler_data_ptr_table_t *_or1k_interrupt_handler_data_ptr_table; -#else -extern or1k_interrupt_handler_table_t _or1k_interrupt_handler_table; -extern or1k_interrupt_handler_data_ptr_table_t _or1k_interrupt_handler_data_ptr_table; -#endif - -extern void _or1k_interrupt_handler(void); - -struct _or1k_reent { - /* Tick timer variable */ - volatile uint32_t or1k_timer_ticks; - - /* Tick rate storage */ - uint32_t or1k_timer_period; - uint32_t or1k_timer_mode; -}; - - -#ifdef __OR1K_MULTICORE__ -extern struct _or1k_reent (*_or1k_reent)[]; -#define OR1K_REENT (*_or1k_reent)[or1k_coreid()] -#else -extern struct _or1k_reent _or1k_reent; -#define OR1K_REENT _or1k_reent -#endif - -extern void _or1k_reent_init(); - -#endif diff --git a/libgloss/or1k/or1k_uart.c b/libgloss/or1k/or1k_uart.c deleted file mode 100644 index 3d79f4516..000000000 --- a/libgloss/or1k/or1k_uart.c +++ /dev/null @@ -1,82 +0,0 @@ -/* or1k_uart.c -- UART implementation for OpenRISC 1000. - * - *Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "include/or1k-support.h" -#include "or1k_uart.h" - -#include <stdint.h> - -void (*_or1k_uart_read_cb)(char c); - -void _or1k_uart_interrupt_handler(uint32_t data) -{ - _or1k_uart_read_cb(REG8(RB)); -} - -int _or1k_uart_init(void) -{ - uint16_t divisor; - - // Is uart present? - if (!_or1k_board_uart_base) { - return -1; - } - - // Reset the callback function - _or1k_uart_read_cb = 0; - - // Calculate and set divisor - divisor = _or1k_board_clk_freq / (_or1k_board_uart_baud * 16); - REG8(LCR) = LCR_DLA; - REG8(DLB1) = divisor & 0xff; - REG8(DLB2) = divisor >> 8; - - // Set line control register: - // - 8 bits per character - // - 1 stop bit - // - No parity - // - Break disabled - // - Disallow access to divisor latch - REG8(LCR) = LCR_BPC_8; - - // Reset FIFOs and set trigger level to 14 bytes - REG8(FCR) = FCR_CLRRECV | FCR_CLRTMIT | FCR_TRIG_14; - - // Disable all interrupts - REG8(IER) = 0; - - return 0; -} - -void _or1k_uart_write(char c) -{ - while (!REG8(LSR) & LSR_TFE) {} - - REG8(THR) = c; -} - -void or1k_uart_set_read_cb(void (*cb)(char c)) -{ - _or1k_uart_read_cb = cb; - - // Enable interrupt - REG8(IER) = 1 << IER_RDAI; - - or1k_interrupt_handler_add(_or1k_board_uart_IRQ, - _or1k_uart_interrupt_handler, 0); - or1k_interrupt_enable(_or1k_board_uart_IRQ); -} diff --git a/libgloss/or1k/or1k_uart.h b/libgloss/or1k/or1k_uart.h deleted file mode 100644 index dc8a3dbce..000000000 --- a/libgloss/or1k/or1k_uart.h +++ /dev/null @@ -1,83 +0,0 @@ -/* or1k_uart.h -- UART definitions for OpenRISC 1000. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -/* This is the generic board support for the OpenCores UART device */ - -#include <stdint.h> - -#include "board.h" - -extern void (*_or1k_uart_read_cb)(char c); - -void _or1k_uart_interrupt_handler(uint32_t data); - -int _or1k_uart_init(void); -void _or1k_uart_write(char c); - -#define RB _or1k_board_uart_base + 0 -#define THR _or1k_board_uart_base + 0 -#define IER _or1k_board_uart_base + 1 -#define IIR _or1k_board_uart_base + 2 -#define FCR _or1k_board_uart_base + 2 -#define LCR _or1k_board_uart_base + 3 -#define MCR _or1k_board_uart_base + 4 -#define LSR _or1k_board_uart_base + 5 -#define MSR _or1k_board_uart_base + 6 - -#define DLB1 _or1k_board_uart_base + 0 -#define DLB2 _or1k_board_uart_base + 1 - -#define IER_RDAI 0 -#define IER_TEI 1 -#define IER_RLSI 2 -#define IER_MSI 3 - -#define IIR_RLS 0xC3 -#define IIR_RDA 0xC2 -#define IIR_TO 0xC6 -#define IIR_THRE 0xC1 -#define IIT_MS 0xC0 - -#define FCR_CLRRECV 0x1 -#define FCR_CLRTMIT 0x2 -#define FCR_TRIG_1 0x0 -#define FCR_TRIG_4 0x40 -#define FCR_TRIG_8 0x80 -#define FCR_TRIG_14 0xC0 - -#define LCR_BPC_MASK 0x3 -#define LCR_SB_MASK 0x4 - -#define LCR_BPC_5 0x0 -#define LCR_BPC_6 0x1 -#define LCR_BPC_7 0x2 -#define LCR_BPC_8 0x3 -#define LCR_SB_1 0x0 -#define LCR_SB_2 0x4 -#define LCR_PE 0x8 -#define LCR_EPS 0x10 -#define LCR_SP 0x20 -#define LCR_BC 0x40 -#define LCR_DLA 0x80 - -#define LSR_DR 0x0 -#define LSR_OE 0x2 -#define LSR_PE 0x4 -#define LSR_FE 0x8 -#define LSR_BI 0x10 -#define LSR_TFE 0x20 -#define LSR_TEI 0x40 diff --git a/libgloss/or1k/outbyte.S b/libgloss/or1k/outbyte.S deleted file mode 100644 index 2cd514855..000000000 --- a/libgloss/or1k/outbyte.S +++ /dev/null @@ -1,34 +0,0 @@ -/* outbyte.S -- Write one byte for OpenRISC 1000. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "include/or1k-asm.h" - -.global _or1k_outbyte - -.text -_or1k_outbyte: - LOAD_SYMBOL_2_GPR(r4,_or1k_board_uart_base) - l.lwz r4, 0(r4) - l.sfeq r4, r0 - OR1K_DELAYED_NOP(l.bf .Lnouart) -.Luart: - OR1K_DELAYED_NOP(l.j _or1k_uart_write) -.Lnouart: - OR1K_DELAYED( - OR1K_INST(l.nop 0x4), - OR1K_INST(l.jr r9) - ) diff --git a/libgloss/or1k/sbrk.c b/libgloss/or1k/sbrk.c deleted file mode 100644 index de80663ee..000000000 --- a/libgloss/or1k/sbrk.c +++ /dev/null @@ -1,52 +0,0 @@ -/* sbrk.c -- allocate space on heap on OpenRISC 1000. - * - * Copyright (c) 2014 Authors - * - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include <reent.h> - -#include "include/or1k-support.h" - -static uint32_t _or1k_heap_end; - -void * -_sbrk_r (struct _reent * reent, ptrdiff_t incr) -{ - extern uint32_t end; /* Set by linker. */ - uint32_t prev_heap_end; - - // This needs to be atomic - - // Disable interrupts on this core - uint32_t sr_iee = or1k_interrupts_disable(); - uint32_t sr_tee = or1k_timer_disable(); - - // Initialize heap end to end if not initialized before - or1k_sync_cas((void*) &_or1k_heap_end, 0, (uint32_t) &end); - - do { - // Read previous heap end - prev_heap_end = _or1k_heap_end; - // and try to set it to the new value as long as it has changed - } while (or1k_sync_cas((void*) &_or1k_heap_end, - (uint32_t) prev_heap_end, - (uint32_t) (prev_heap_end + incr)) != (uint32_t) prev_heap_end); - - // Restore interrupts on this core - or1k_timer_restore(sr_tee); - or1k_interrupts_restore(sr_iee); - - return (void*) prev_heap_end; -} diff --git a/libgloss/or1k/sync-asm.S b/libgloss/or1k/sync-asm.S deleted file mode 100644 index 911e2552f..000000000 --- a/libgloss/or1k/sync-asm.S +++ /dev/null @@ -1,135 +0,0 @@ -#include "include/or1k-asm.h" -#include "include/or1k-sprs.h" - - .section .text - - - .global or1k_has_multicore_support - .type or1k_has_multicore_support,@function -or1k_has_multicore_support: -#ifdef __OR1K_MULTICORE__ - // Return 1 - OR1K_DELAYED( - OR1K_INST(l.ori r11,r0,1), - OR1K_INST(l.jr r9) - ) -#else - // Return 0 - OR1K_DELAYED( - OR1K_INST(l.or r11,r0,r0), - OR1K_INST(l.jr r9) - ) -#endif - - .global or1k_coreid - .type or1k_coreid,@function -or1k_coreid: -#ifdef __OR1K_MULTICORE__ - // Return SPR with core identifier - OR1K_DELAYED( - OR1K_INST(l.mfspr r11,r0,OR1K_SPR_SYS_COREID_ADDR), - OR1K_INST(l.jr r9) - ) -#else - // Return 0 - OR1K_DELAYED( - OR1K_INST(l.or r11,r0,r0), - OR1K_INST(l.jr r9) - ) -#endif - - .global or1k_numcores - .type or1k_numcores,@function -or1k_numcores: -#ifdef __OR1K_MULTICORE__ - // Return SPR with number of cores - OR1K_DELAYED( - OR1K_INST(l.mfspr r11,r0,OR1K_SPR_SYS_NUMCORES_ADDR), - OR1K_INST(l.jr r9) - ) -#else - // Return 1 - OR1K_DELAYED( - OR1K_INST(l.ori r11,r0,1), - OR1K_INST(l.jr r9) - ) -#endif - - .global or1k_sync_ll - .type or1k_sync_ll,@function -or1k_sync_ll: -#ifdef __OR1K_MULTICORE__ - // Load word atomic - OR1K_DELAYED( - OR1K_INST(l.lwa r11, 0(r3)), - OR1K_INST(l.jr r9) - ) -#else - // Simply load word, TODO: throw exception? which? - OR1K_DELAYED( - OR1K_INST(l.lwz r11, 0(r3)), - OR1K_INST(l.jr r9) - ) -#endif - - .global or1k_sync_sc - .type or1k_sync_sc,@function -or1k_sync_sc: -#ifdef __OR1K_MULTICORE__ - // swa sets the flag if it was succesfull - // Store the value to address and set flag - l.swa 0(r3),r4 - OR1K_DELAYED( - // Set return to success speculatively (may go to delay slot) - OR1K_INST(l.ori r11,r0,1), - // If the swa was successfull, jump to end - OR1K_INST(l.bf .or1k_sync_sc_done) - ) - // If the swa was not successfull, set - l.or r11,r0,r0 -.or1k_sync_sc_done: - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) -#else - // Simply store word, TODO: throw exception? which? - OR1K_DELAYED( - OR1K_INST(l.sw 0(r3),r4), - OR1K_INST(l.jr r9) - ) -#endif - - - .global or1k_sync_cas - .type or1k_sync_sc,@function -or1k_sync_cas: -#ifdef __OR1K_MULTICORE__ - /* Load linked address value to return register */ - l.lwa r11,0(r3) - /* Compare value to parameter */ - l.sfeq r11,r4 - /* If not equal: abort and return the read value */ - OR1K_DELAYED_NOP(OR1K_INST(l.bnf .or1k_sync_cas_done)) - /* If compare was successfull: try writing */ - l.swa 0(r3),r5 - /* If writing was not successful: restart */ - OR1K_DELAYED_NOP(OR1K_INST(l.bnf or1k_sync_cas)) -.or1k_sync_cas_done: - /* Return value is the original read value */ - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) -#else - // Non-atomic CAS, TODO: throw exception? which? - l.lwz r11,0(r3) - l.sfeq r11,r4 - OR1K_DELAYED_NOP(OR1K_INST(l.bnf .or1k_sync_cas_done)) - l.sw 0(r3),r5 -.or1k_sync_cas_done: - OR1K_DELAYED_NOP(OR1K_INST(l.jr r9)) -#endif - - .global or1k_sync_tsl - .type or1k_sync_tsl,@function -or1k_sync_tsl: - l.or r4,r0,r0 - OR1K_DELAYED( - OR1K_INST(l.addi r5,r0,1), - OR1K_INST(l.j or1k_sync_cas) - ) diff --git a/libgloss/or1k/syscalls.c b/libgloss/or1k/syscalls.c deleted file mode 100644 index 690d21ad1..000000000 --- a/libgloss/or1k/syscalls.c +++ /dev/null @@ -1,160 +0,0 @@ -/* syscalls.c -- reentrant syscalls for OpenRISC 1000. - * - * Copyright (c) 2011, 2014 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include <errno.h> -#include <reent.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/time.h> -#include "board.h" - -/* Write is actually the only thing we provide. All other are stubs.. */ - -extern void _or1k_outbyte(char c); - -_ssize_t -_write_r(struct _reent * reent, int fd, const void *buf, size_t nbytes) -{ - int i; - char* b = (char*) buf; - - for (i = 0; i < nbytes; i++) { - if (*(b + i) == '\n') { - _or1k_outbyte ('\r'); - } - _or1k_outbyte (*(b + i)); - } - return (nbytes); -} - -void -_exit(int rc) -{ - _or1k_board_exit(); - while (1) {} -} - -int -_close_r(struct _reent *reent, int fildes) -{ - reent->_errno = ENOSYS; - return -1; -} - -char *__env[1] = { 0 }; -char **environ = __env; - -int -_execve_r(struct _reent *reent, const char *name, char * const *argv, - char * const *env) -{ - reent->_errno = ENOSYS; - return -1; -} - -int -_fork_r(struct _reent *reent) -{ - errno = ENOSYS; - return -1; -} - -int -_fstat_r(struct _reent *reent, int fildes, struct stat *st) -{ - reent->_errno = ENOSYS; - return -1; -} - -int -_getpid_r(struct _reent *reent) -{ - reent->_errno = ENOSYS; - return -1; -} - -int -_gettimeofday(struct _reent *reent, struct timeval *ptimeval, void *ptimezone) -{ - reent->_errno = ENOSYS; - return -1; -} - -int -_isatty_r(struct _reent *reent, int file) -{ - reent->_errno = ENOSYS; - return 0; -} - -int -_kill_r(struct _reent *reent, int pid, int sig) -{ - reent->_errno = ENOSYS; - return -1; -} - -int -_link_r(struct _reent *reent, const char *existing, const char *new) -{ - reent->_errno = ENOSYS; - return -1; -} - -_off_t -_lseek_r(struct _reent *reent, int file, _off_t ptr, int dir) -{ - errno = ENOSYS; - return -1; -} - -int -_open(struct _reent *reent, char *file, int flags, int mode) -{ - reent->_errno = ENOSYS; - return -1; -} - -_ssize_t -_read_r(struct _reent *reent, int file, void *ptr, size_t len) -{ - reent->_errno = ENOSYS; - return -1; -} - -int -_readlink_r(struct _reent *reent, const char *path, char *buf, size_t bufsize) -{ - reent->_errno = ENOSYS; - return -1; -} - -int -_stat_r(struct _reent *reent, const char *path, struct stat *buf) -{ - reent->_errno = EIO; - return -1; -} - -int -_unlink_r(struct _reent *reent, const char * path) -{ - reent->_errno = EIO; - return (-1); -} - diff --git a/libgloss/or1k/timer.c b/libgloss/or1k/timer.c deleted file mode 100644 index 27a24a1c1..000000000 --- a/libgloss/or1k/timer.c +++ /dev/null @@ -1,186 +0,0 @@ -/* timer.c -- tick timer functions for OpenRISC 1000. - * - * Copyright (c) 2011, 2014 Authors - * - * Contributor Julius Baxter <juliusbaxter@gmail.com> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include "include/or1k-support.h" -#include "include/or1k-sprs.h" - -#include "or1k-internals.h" -#include "board.h" - -/* --------------------------------------------------------------------------*/ -/*!Tick timer interrupt handler - - Increment timer ticks counter, reload TTMR - */ -/* --------------------------------------------------------------------------*/ -void -_or1k_timer_interrupt_handler(void) -{ - OR1K_REENT.or1k_timer_ticks++; - uint32_t ttmr = or1k_mfspr(OR1K_SPR_TICK_TTMR_ADDR); - ttmr = OR1K_SPR_TICK_TTMR_IE_SET(ttmr, 1); - ttmr = OR1K_SPR_TICK_TTMR_MODE_SET(ttmr, OR1K_SPR_TICK_TTMR_MODE_RESTART); - ttmr = OR1K_SPR_TICK_TTMR_IE_SET(ttmr, 1); - or1k_mtspr(OR1K_SPR_TICK_TTMR_ADDR, ttmr); -} - -/* --------------------------------------------------------------------------*/ -/*!Enable tick timer - - Install handler, calculate TTMR period, reset tick counter - - @param[in] hz Rate at which to trigger timer ticks */ -/* --------------------------------------------------------------------------*/ -int -or1k_timer_init(unsigned int hz) -{ - uint32_t upr = or1k_mfspr(OR1K_SPR_SYS_UPR_ADDR); - if (OR1K_SPR_SYS_UPR_TTP_GET(upr) == 0) { - return -1; - } - - /* Set this, for easy access when reloading */ - uint32_t period = (_or1k_board_clk_freq/hz) & OR1K_SPR_TICK_TTMR_TP_MASK; - OR1K_REENT.or1k_timer_period = period; - or1k_mtspr(OR1K_SPR_TICK_TTMR_ADDR, period); - - /* Reset timer tick counter */ - OR1K_REENT.or1k_timer_ticks = 0; - - /* Install handler */ - or1k_exception_handler_add(0x5, _or1k_timer_interrupt_handler); - OR1K_REENT.or1k_timer_mode = OR1K_SPR_TICK_TTMR_MODE_RESTART; - - /* Reset counter register */ - or1k_mtspr(OR1K_SPR_TICK_TTCR_ADDR, 0); - - return 0; -} - -void -or1k_timer_set_period(uint32_t hz) -{ - uint32_t period = (_or1k_board_clk_freq/hz) & OR1K_SPR_TICK_TTMR_TP_MASK; - uint32_t ttmr = or1k_mfspr(OR1K_SPR_TICK_TTMR_ADDR); - ttmr = OR1K_SPR_TICK_TTMR_TP_SET(ttmr, period); - or1k_mtspr(OR1K_SPR_TICK_TTMR_ADDR, ttmr); - OR1K_REENT.or1k_timer_period = period; -} - -void -or1k_timer_set_handler(void (*handler)(void)) -{ - or1k_exception_handler_add(0x5, handler); -} - -void -or1k_timer_set_mode(uint32_t mode) -{ - // Store mode in variable - OR1K_REENT.or1k_timer_mode = mode; - - uint32_t ttmr = or1k_mfspr(OR1K_SPR_TICK_TTMR_ADDR); - // If the timer is currently running, we also change the mode - if (OR1K_SPR_TICK_TTMR_MODE_GET(ttmr) != 0) { - ttmr = OR1K_SPR_TICK_TTMR_MODE_SET(ttmr, mode); - or1k_mtspr(OR1K_SPR_TICK_TTMR_ADDR, ttmr); - } -} - -/* --------------------------------------------------------------------------*/ -/*!Enable tick timer - - Enable timer interrupt, install handler, load TTMR - */ -/* --------------------------------------------------------------------------*/ -void -or1k_timer_enable(void) -{ - uint32_t ttmr = or1k_mfspr(OR1K_SPR_TICK_TTMR_ADDR); - ttmr = OR1K_SPR_TICK_TTMR_IE_SET(ttmr, 1); - ttmr = OR1K_SPR_TICK_TTMR_MODE_SET(ttmr, OR1K_REENT.or1k_timer_mode); - or1k_mtspr(OR1K_SPR_TICK_TTMR_ADDR, ttmr); - - uint32_t sr = or1k_mfspr(OR1K_SPR_SYS_SR_ADDR); - sr = OR1K_SPR_SYS_SR_TEE_SET(sr, 1); - or1k_mtspr(OR1K_SPR_SYS_SR_ADDR, sr); -} - -/* --------------------------------------------------------------------------*/ -/*!Disable tick timer - - Disable timer interrupt in SR - */ -/* --------------------------------------------------------------------------*/ -uint32_t -or1k_timer_disable(void) -{ - uint32_t oldsr = or1k_mfspr(OR1K_SPR_SYS_SR_ADDR); - uint32_t sr = OR1K_SPR_SYS_SR_TEE_SET(oldsr, 0); - or1k_mtspr(OR1K_SPR_SYS_SR_ADDR, sr); - return OR1K_SPR_SYS_SR_TEE_GET(oldsr); -} - -void -or1k_timer_restore(uint32_t sr_tee) -{ - uint32_t sr = or1k_mfspr(OR1K_SPR_SYS_SR_ADDR); - sr = OR1K_SPR_SYS_SR_TEE_SET(sr, 1); - or1k_mtspr(OR1K_SPR_SYS_SR_ADDR, sr); -} - -void -or1k_timer_pause(void) -{ - uint32_t ttmr = or1k_mfspr(OR1K_SPR_TICK_TTMR_ADDR); - ttmr = OR1K_SPR_TICK_TTMR_MODE_SET(ttmr, OR1K_SPR_TICK_TTMR_MODE_DISABLE); - or1k_mtspr(OR1K_SPR_TICK_TTMR_ADDR, ttmr); -} - -void -or1k_timer_reset(void) -{ - uint32_t ttmr = or1k_mfspr(OR1K_SPR_TICK_TTMR_ADDR); - ttmr = OR1K_SPR_TICK_TTMR_IP_SET(ttmr, 0); - or1k_mtspr(OR1K_SPR_TICK_TTMR_ADDR, ttmr); - or1k_mtspr(OR1K_SPR_TICK_TTCR_ADDR, 0); -} - -/* --------------------------------------------------------------------------*/ -/*!Get tick timer - - Return value of tick timer - */ -/* --------------------------------------------------------------------------*/ -unsigned long -or1k_timer_get_ticks(void) -{ - return OR1K_REENT.or1k_timer_ticks; -} - -/* --------------------------------------------------------------------------*/ -/*!Reset tick timer - - Clear value of tick timer - */ -/* --------------------------------------------------------------------------*/ -void -or1k_timer_reset_ticks(void) -{ - OR1K_REENT.or1k_timer_ticks = 0; -} diff --git a/libgloss/or1k/util.c b/libgloss/or1k/util.c deleted file mode 100644 index 74071719e..000000000 --- a/libgloss/or1k/util.c +++ /dev/null @@ -1,83 +0,0 @@ -/* util.c -- Utility functions for OpenRISC 1000. - * - * Copyright (c) 2014 Authors - * - * Contributor Julius Baxter <julius.baxter@orsoc.se> - * Contributor Stefan Wallentowitz <stefan.wallentowitz@tum.de> - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include <stdint.h> -#include <stddef.h> -#include <reent.h> - -#include "or1k-internals.h" - -#ifdef __OR1K_MULTICORE__ -uint32_t* *_or1k_stack_core; -uint32_t* *_or1k_exception_stack_core; -#endif - -uint32_t* _or1k_stack_top; -uint32_t* _or1k_stack_bottom; - -uint32_t* _or1k_exception_stack_top; -uint32_t* _or1k_exception_stack_bottom; - -void _or1k_init() { -#ifdef __OR1K_MULTICORE__ - uint32_t c; - - // Initialize stacks - _or1k_stack_core = _sbrk_r(0, sizeof(uint32_t*) * or1k_numcores()); - _or1k_exception_stack_core = _sbrk_r(0, sizeof(uint32_t*) * or1k_numcores()); - - _or1k_stack_core[0] = _or1k_stack_top; - _or1k_exception_stack_core[0] = _or1k_exception_stack_top; - - for (c = 1; c < or1k_numcores(); c++) { - _or1k_stack_core[c] = _or1k_stack_core[c-1] - _or1k_stack_size; - _or1k_exception_stack_core[c] = _or1k_exception_stack_core[c-1] - - _or1k_exception_stack_size; - } - - size_t exc_size = sizeof(void*) * or1k_numcores() * OR1K_NUM_EXCEPTIONS; - _or1k_exception_handler_table = _sbrk_r(0, exc_size); - - size_t int_size = sizeof(void*) * or1k_numcores() * 32; - size_t intdata_size = sizeof(void*) * or1k_numcores() * 32; - _or1k_interrupt_handler_table = _sbrk_r(0, int_size); - _or1k_interrupt_handler_data_ptr_table = _sbrk_r(0, intdata_size); -#endif - - _or1k_reent_init(); - -#ifdef __OR1K_MULTICORE__ - for (c = 0; c < or1k_numcores(); c++) { - _or1k_exception_handler_table[c][6] = _or1k_interrupt_handler; - } -#else - _or1k_exception_handler_table[6] = _or1k_interrupt_handler; -#endif -} - -uint32_t or1k_critical_begin() { - uint32_t iee = or1k_interrupts_disable(); - uint32_t tee = or1k_timer_disable(); - return (iee << 1) | tee; -} - -void or1k_critical_end(uint32_t restore) { - or1k_timer_restore(restore & 0x1); - or1k_interrupts_restore((restore >> 1) & 0x1); -} - |