OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gnu-src/newlib-1.18.0/newlib-1.18.0-or32-1.0rc1/libgloss/hp74x
    from Rev 207 to Rev 345
    Reverse comparison

Rev 207 → Rev 345

/diagnose.h
0,0 → 1,168
/****************************************************************************
 
THIS SOFTWARE IS NOT COPYRIGHTED
 
HP offers the following for use in the public domain. HP makes no
warranty with regard to the software or it's performance and the
user accepts the software "AS IS" with all faults.
 
HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD
TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
****************************************************************************/
 
/* Diagnose register definitions */
 
 
#ifdef PCXL
 
#define CPU_DIAG_0_L2IHPMC_BIT 6 /* Level 2 I-cache error flag */
#define CPU_DIAG_0_L2DHPMC_BIT 8 /* Level 2 D-cache error flag */
#define CPU_DIAG_0_L1IHPMC_BIT 10 /* Level 1 I-cache error flag */
#define CPU_DIAG_0_L2PARERR_BIT 15 /* rightmost bit */
#define CPU_DIAG_0_PREV_HPMC_PREP_BIT 16 /* Previous HPMC finished */
#define CPU_DIAG_0_PWR_FAIL_BIT 17
#define CPU_DIAG_0_EXPECT_HPMC_BIT 18 /* Expecting HPMC */
 
/* Mask for Read/clear bits in CPU diagnose register 0 */
#define CPU0_MASK 0x02AF0000
 
#else /* PCXT */
 
#define CPU_DIAG_0_PREV_HPMC_PREP_BIT 3 /* Previous HPMC finished */
#define CPU_DIAG_0_BOOTING_BIT 4
#define CPU_DIAG_0_EXPECT_HPMC_BIT 5 /* Expecting HPMC */
 
#define CPU_DIAG_0_DHPMC_BIT 10
#define CPU_DIAG_0_ILPMC_BIT 14
#define CPU_DIAG_0_HTOC_BIT 23
 
/* Mask for Read/clear bits in CPU diagnose register 0 */
#define CPU0_MASK 0x00220100
 
#endif
 
/* Diagnose instruction macros */
 
#ifdef PCXL
 
/*** Different PCXL diagnose commands ***/
 
/* Original mfcpu replaced with the two commands mfcpu_t & mfcpu_c */
mfcpu_t .macro diag_reg,gen_reg
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = diag_reg {27 .. 31}
{11 .. 15} = 0x0 {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0xa0 {24 .. 31}
{27 .. 31} = gen_reg {27 .. 31}
.endm
 
mfcpu_c .macro diag_reg,gen_reg
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = diag_reg {27 .. 31}
{11 .. 15} = gen_reg {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0x30 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
mtcpu .macro gen_reg,diag_reg
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = diag_reg {27 .. 31}
{11 .. 15} = gen_reg {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0x12 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
shdw_gr .macro
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = 0x0 {27 .. 31}
{11 .. 15} = 0x0 {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0xd0 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
gr_shdw .macro
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = 0x0 {27 .. 31}
{11 .. 15} = 0x0 {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0xd2 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
#else
 
/*** original PCXT version ***/
 
/* Originally was mfcpu without the _c */
mfcpu_c .macro diag_reg,gen_reg
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = diag_reg {27 .. 31}
{11 .. 15} = gen_reg {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0xd0 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
mtcpu .macro gen_reg,diag_reg
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = diag_reg {27 .. 31}
{11 .. 15} = gen_reg {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0xb0 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
shdw_gr .macro
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = 0x2 {27 .. 31}
{11 .. 15} = 0x0 {27 .. 31}
{16 .. 18} = 0x1 {29 .. 31}
{19 .. 26} = 0x30 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
gr_shdw .macro
{ 0 .. 5} = 0x5 {26 .. 31}
{ 6 .. 10} = 0x2 {27 .. 31}
{11 .. 15} = 0x0 {27 .. 31}
{16 .. 18} = 0x0 {29 .. 31}
{19 .. 26} = 0x31 {24 .. 31}
{27 .. 31} = 0x0 {27 .. 31}
.endm
 
#endif
 
 
/* Actual commands used doubled instructions for cpu timing */
 
 
#define SHDW_GR shdw_gr ! \
shdw_gr
 
 
/* Break instruction definitions */
 
#define i13BREAK 0xa5a /* im13 field for specified functions */
#define i5REG 0x06 /* Init registers */
#define i5BP 0x09 /* GDB breakpoint */
#define i5PSW 0x0b /* Get PSW */
#define i5INLINE 0x0e /* Get INLINE */
 
BR_INIT_REGS .macro
break i5REG,i13BREAK
.endm
 
BR_GET_PSW .macro
break i5PSW,i13BREAK
.endm
 
BR_INLINE .macro
break i5INLINE,i13BREAK
.endm
 
diagnose.h Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: configure =================================================================== --- configure (nonexistent) +++ configure (revision 345) @@ -0,0 +1,3572 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 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=: + # Zsh 3.x and 4.x performs 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 + + + + +# PATH needs CR +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +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.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +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 + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +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 + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs 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 + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs 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_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. 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" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); 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 +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +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 +fi +echo >conf$$.file +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 +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=: +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 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, 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= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="crt0.s" +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +CC +am__leading_dot +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +AS +AR +LD +RANLIB +CCAS +CCASFLAGS +host_makefile_frag_path +LIBOBJS +LTLIBOBJS' +ac_subst_files='host_makefile_frag' + ac_precious_vars='build_alias +host_alias +target_alias +CCAS +CCASFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=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 ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +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 + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +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 + 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 .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# 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 -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + 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 .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --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. + +_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" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`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 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 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 +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.61. 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=. + 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$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 + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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 + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_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 + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + 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'; { (exit 1); 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 + +# 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 + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + 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. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`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. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +if test "$srcdir" = "." ; then + mdir=`echo "${with_multisubdir}/" \ + | sed -e 's,\([^/][^/]*\),..,g' -e 's,^/$,,'` + ac_aux_dir= +for ac_dir in ${mdir}../../.. "$srcdir"/${mdir}../../..; 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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ${mdir}../../.. \"$srcdir\"/${mdir}../../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ${mdir}../../.. \"$srcdir\"/${mdir}../../.." >&2;} + { (exit 1); exit 1; }; } +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. + + +else + ac_aux_dir= +for ac_dir in ${srcdir}/../.. "$srcdir"/${srcdir}/../..; 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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ${srcdir}/../.. \"$srcdir\"/${srcdir}/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in ${srcdir}/../.. \"$srcdir\"/${srcdir}/../.." >&2;} + { (exit 1); exit 1; }; } +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. + + +fi + +# 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. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +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 +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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" + echo "$as_me:$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 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +depcc="$CC" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + 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 + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} 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 +{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$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 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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" + echo "$as_me:$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 + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5 +echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +fi + +{ echo "$as_me:$LINENO: checking whether we are using GNU C" >&5 +echo $ECHO_N "checking whether we are using GNU C... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } | egrep yes >/dev/null 2>&1; then + ac_cv_c_compiler_gnu=yes +else + ac_cv_c_compiler_gnu=no +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$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 +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +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 +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$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 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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" + echo "$as_me:$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 + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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" + echo "$as_me:$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 + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&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 + +host_makefile_frag_path=$host_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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_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 + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +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=' +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= +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=`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. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $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} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## 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=: + # Zsh 3.x and 4.x performs 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 + + + + +# PATH needs CR +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +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.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +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 + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +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 + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. 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" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); 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 +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +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 +fi +echo >conf$$.file +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 +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=: +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 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.61. 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 + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet 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 ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 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' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$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 ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + 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. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$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 +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# 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" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + 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= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + +# Create sed commands to just substitute file output variables. + +# Remaining file output variables are in a fragment that also has non-file +# output varibles. + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +CC!$CC$ac_delim +am__leading_dot!$am__leading_dot$ac_delim +DEPDIR!$DEPDIR$ac_delim +am__include!$am__include$ac_delim +am__quote!$am__quote$ac_delim +AMDEP_TRUE!$AMDEP_TRUE$ac_delim +AMDEP_FALSE!$AMDEP_FALSE$ac_delim +AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim +CCDEPMODE!$CCDEPMODE$ac_delim +am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim +am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim +AS!$AS$ac_delim +AR!$AR$ac_delim +LD!$LD$ac_delim +RANLIB!$RANLIB$ac_delim +CCAS!$CCAS$ac_delim +CCASFLAGS!$CCASFLAGS$ac_delim +host_makefile_frag_path!$host_makefile_frag_path$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 60; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +/^[ ]*@host_makefile_frag@[ ]*$/{ +r $host_makefile_frag +d +} +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[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="$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 || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$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 "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + 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 || +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" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`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 || +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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`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 +# 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= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + 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 + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;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 +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +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 "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /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 || +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 || +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 + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`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 || +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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# 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 || { (exit 1); exit 1; } +fi +
configure Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: Makefile.in =================================================================== --- Makefile.in (nonexistent) +++ Makefile.in (revision 345) @@ -0,0 +1,216 @@ +# +# Makefile +# Copyright (C) 1990, 1991, 1992, 1993 ,1994 Free Software Foundation +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +# + +# +# Makefile for newlib/libc/stub/hppa. This is the board support code +# for the HP-PRO hppa embedded boards. +# + +DESTDIR = +VPATH = @srcdir@ +srcdir = @srcdir@ +objdir = . +srcroot = $(srcdir)/../.. +objroot = $(objdir)/../.. + +prefix = @prefix +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +libdir = @libdir@ +tooldir = $(exec_prefix)/$(target_alias) + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +SHELL = /bin/sh + +CC = @CC@ + +AS = @AS@ +AR = @AR@ +LD = @LD@ +RANLIB = @RANLIB@ + +# +# As the boot process only deals with LIF volumes, here's the src +# where we borrow existing code modules and where we put our +# boot image if we can bvuild one. +# +LIF_SRC = /usr/tftpdir/srcboot.lif +LIF_DEST = /usr/tftpdir/romboot.lif + +HPDEFS = -D_INCLUDE_POSIX_SOURCE -D_INCLUDE_XOPEN_SOURCE \ + -D_INCLUDE_HPUX_SOURCE -DPCXT + +LIBS_FOR_TARGET = -lc + +# +# The original flags used by HP for the boot ROMS were +# CFLAGS_FOR_TARGET = -c -Aa +O3 +OS -Wc,-DA1.0 -Wc,-DS1.0 +ESfic +ESsfc ${HPDEFS} +CFLAGS_FOR_TARGET = -c -Wd,-a -g +# the original value for -R was 0 +LDFLAGS_FOR_TARGET = -v -t -N -R 10000 -a archive +INCLUDES = -I${srcdir} + +BSP_OBJS= pa_stub.o debugger.o iva_table.o io.o +STUBCRT0=crt0.o +STUBLIB=hppa.o +LDSCRIPT=hppa.ld +SHARED_DIR= +SHARED_OBJS= +# SHARED_OBJS=$(SHARED_DIR) + +# Host specific makefile fragment comes in here. +@host_makefile_frag@ + +all: boot + +# this target is only for testing +test: ${STUBCRT0} $(STUBLIB) test.o $(BSP_OBJS) +# ${LD} $(LDFLAGS_FOR_TARGET) ${STUBCRT0} test.o $(BSP_OBJS) -o test $(LIBS_FOR_TARGET) + rootme=`pwd` ; \ + ${LD} $(LDFLAGS_FOR_TARGET) ${STUBCRT0} test.o pa_stub.o debugger.o iva_table.o io.o -o test $(LIBS_FOR_TARGET) + +$(STUBLIB): $(BSP_OBJS) + ${LD} -r $(BSP_OBJS) $(SHARED_OBJS) -o $(STUBLIB) + +checksum: $(srcdir)/checksum.c + $(CC) -g $(srcdir)/checksum.c -o checksum + +# this is the target from HP's Makefile, it may be bogus +hpstub: $(OBJS) + $(LD) $(LDFLAGS_FOR_TARGET) -e main -o $@ $(LIBRARY)/crt1.o \ + $(OBJS) -lc -m >stub.map + +install: + $(INSTALL_PROGRAM) $(STUBLIB) $(DESTDIR)$(tooldir)/lib/$(MULTISUBDIR)$(STUBLIB) + $(INSTALL_PROGRAM) $(SHARED_DIR)/$(STUBCRT0) $(DESTDIR)$(tooldir)/lib/$(MULTISUBDIR)$(STUBCRT0) + $(INSTALL_PROGRAM) $(srcdir)/$(LDSCRIPT) $(DESTDIR)$(tooldir)/lib/$(LDSCRIPT) + +.c.o: + $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $< + +.c.s: + $(CC) $(CFLAGS_FOR_TARGET) -S $(INCLUDES) $< +# $(CC) $(CFLAGS_FOR_TARGET) $(NEWLIB_CFLAGS) $(INCLUDES) -c $< + +.s.o: + $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $< +# $(AS) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $< + +.SUFFIXES: .S .c .o .s .lif +# +# lifinit -- +# -vnnn Sets volume size to nnn bytes. +# nnn must be a multiple of 256. +# -d Sets directory size to nnn file entries. +# nnn must be a multiple of 8. +# -nsss Sets the volume name to be sss. +# -Knnn Forces the directory start location to be the +# nearest multiple of nnn x 1024 bytes. +# -snnn set the initial system load (ISL) start address to +# nnn in the volume label +# -lnnn Specifies the length in bytes of the ISL code. +# -ennn Set the ISL entry point to nnn bytes from the +# beginning of the ISL +# +# lifcp -- +# -r Forces RAW mode copying. +# -T Sets the file type of the directory entry. +# ASCII is 1 +# BIN is -23951 +# BINARY is -2 +# -Knnn forces each file copied in to begin on a nnn x +# 1024-byte boundary from the beginning of the volume +# Note: the word echoed below MUST be 10 characters exactly. +# +# somxtract infile outfile -- +# converts a series 800 file *only* into a raw image +# +LIF_VOL = this_lif +# 65532 +boot: test checksum +# FIXME: This fills up the hard disk unless "-R" is used + @rm -f ${LIF_VOL} ${LIF_DEST} + @ipl_entry=`nm -t d $< | grep "T .START." | sed -e 's/T .START.//' -e 's/^0*//'` ; \ + echo "Entry point is at $${ipl_entry}" ; \ + if test x"$${ipl_entry}" != x ; then \ + ipl_entry=`expr $${ipl_entry} - 65536` ; \ + echo "Entry point offset is $${ipl_entry}" ; \ + cp $< $<.raw ; \ + rm -f $<.dis ; \ + objdump -d $< > $<.dis ; \ + somxtract $< $<.raw ; \ + ipl_size=`checksum -s $<.raw $<.image | sed -e 's/ is the.*//'` ; \ + echo "IPL_SIZE is $${ipl_size}" ; \ + lifinit -v64000000 -d64 -n"CYGNUS " -K2 -s4096 -l$${ipl_size} -e$${ipl_entry} ${LIF_DEST} ;\ + else \ + echo "ERROR: \$$START\$$ symbol not found" ; \ + fi + @chmod a+rw $<.image + @lifcp -r -K2 $<.image ${LIF_DEST}:TEST + @rm -f $<.image $<.dis + @lifls -l ${LIF_DEST} + @objdump -d $< > $<.dis + +.S.o: + rm -f $*.s + ${CPP} $< > $*.s + $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $*.s +# $(CC) $(CFLAGS_FOR_TARGET) $(NEWLIB_CFLAGS) $(INCLUDES) -c $< + +.c.list: + $(CC) $(CFLAGS) $*.c -S + $(AS) $(AFLAGS) $*.s -Wa,-l > $*.list + rm $*.s + +.s.list: + $(AS) $(AFLAGS) $*.s -Wa,-l > $*.list + +doc: + +clean mostlyclean: + rm -f *~ *.map *.list stub romboot.lif a.out *.raw *.image + rm -f *.o $(STUBLIB) $(STUBCRT0) checksum *.dis test + +distclean maintainer-clean realclean: clean + rm -f Makefile config.cache config.log config.status + +pa_stub.o: $(srcdir)/pa_stub.c +debugger.o: $(srcdir)/debugger.s +iva_table.o: $(srcdir)/iva_table.s +io.o: $(srcdir)/io.c +crt0.o: $(srcdir)/crt0.s +test.o: $(srcdir)/test.c +term_in.o: $(srcdir)/term_in.s +term_out.o: $(srcdir)/term_out.s +term_init.o: $(srcdir)/term_init.s + +.PHONY: info install-info clean-info +info: +install-info: +clean-info: + +Makefile: Makefile.in config.status @host_makefile_frag_path@ + $(SHELL) config.status + +config.status: configure + $(SHELL) config.status --recheck Index: checksum.c =================================================================== --- checksum.c (nonexistent) +++ checksum.c (revision 345) @@ -0,0 +1,150 @@ +#include +#include + +#define USAGE "USAGE: checkum -[vhcs] infile outfile\n\t-v\tverbose\n\ +\t-h\thelp\n\t-c\tcheck checksum\n\t-s\tprint the ipl size" +static int verbose = 0; +static int verify = 0; +static int size = 0; + +typedef int word_t; +#define WORDSIZE (sizeof(word_t)) + +main(argc, argv) + int argc; + char **argv; +{ + char *infile; + char *outfile; + int infd; + int outfd; + word_t checksum = 0; + int nbytes; + word_t buf; + int i = 1; + int filesize = 0; + + while (*argv[i] == '-') { + switch (*(argv[i]+1)) { + case 'v': + verbose++; + break; + case 'c': + verify++; + puts ("Sorry, unimplemented for now"); + exit(1); + break; + case 's': + size++; + break; + case 'h': + puts (USAGE); + exit(0); + default: + printf ("\"%s\", Illegal option\n", argv[i]); + puts (USAGE); + exit(1); + } + i++; + } + infile = *(argv + i); + outfile = *(argv + i+1); + + /* see it there were file names on the command line */ + if (infile == 0x0) { + puts("Didn't specify an input file name"); + exit(1); + } + if (outfile == 0x0) { + puts("Didn't specify an output file name"); + exit(1); + } + + /* try to open the files */ + infd = open(infile, O_RDONLY); + if (infd == -1) { + printf("Couldn't open %s\n", infile); + exit(1); + } + + outfd = open(outfile, O_WRONLY|O_CREAT|O_TRUNC); + if (outfd == -1) { + printf("Couldn't open %s\n", outfile); + exit(1); + } + + if (verbose > 2) + putchar('\n'); + + /* calculate the checksum */ + while ((nbytes = read(infd, &buf, WORDSIZE)) == WORDSIZE) { + if (verbose > 2) + putchar('.'); + checksum+= buf; + filesize+= WORDSIZE; + if (write(outfd, &buf, WORDSIZE) != WORDSIZE) { + puts("Couldn't write"); + } + if (verbose > 3) + putchar('+'); + } + if (verbose > 2) + putchar('\n'); + + /* write the last byte read */ + if (nbytes > 0) { + write(outfd, &buf, nbytes); + checksum+= buf; /* calculate the last word */ + filesize+= nbytes; + } + /* write the checksum */ + buf = -checksum; + write(outfd, &buf, WORDSIZE); + filesize+= WORDSIZE; /* checksum increase the size */ + + if (verbose > 0) + printf("The calculated checksum is:\n\t0x%x,\n\t%u\n", -checksum, -checksum); + + /* calculate the extra 2K here */ + buf = 0; + while ((filesize % 2048) !=0) { + filesize+=WORDSIZE; + write(outfd, &buf, WORDSIZE); + } + if (size > 0) { + printf ("%u is the new file size\n", filesize); + } + close(outfd); + close(infd); + exit(0); +} + +#if 0 +/* Calculate a simple checksum and concatenate it to the end of BUF. */ +void +compute_and_concatenate_checksum (word *buf, size_t bufsize_in_words) +{ + size_t i; + word sum; + sum = buf[0] + for (i = 1; i < bufsize_in_words; i++) + sum += buf[i]; + buf[bufsize_in_words] = -sum; +} + +/* Calculate a simple checksum and verify it. NOTE: bufsize_in_words should + include the checksum, i.e., it should be one larger than when the + checksum was calculated using compute_and_concatenate_checksum! */ +int +compute_and_and_verify_checksum (word *buf, size_t bufsize_in_words) +{ + size_t i; + word sum; + sum = buf[0]; + for (i = 1; i < bufsize_in_words; i++) + sum += buf[i]; + if (sum != 0) + return ERROR; + return SUCCESS; +} +#endif
checksum.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debugger.s =================================================================== --- debugger.s (nonexistent) +++ debugger.s (revision 345) @@ -0,0 +1,585 @@ +/**************************************************************************** + + THIS SOFTWARE IS NOT COPYRIGHTED + + HP offers the following for use in the public domain. HP makes no + warranty with regard to the software or it's performance and the + user accepts the software "AS IS" with all faults. + + HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD + TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +****************************************************************************/ + .space $TEXT$ + .subspa $CODE$,access=0x2c + +#if 1 +#include "diagnose.h" +#endif + +i13BREAK .equ 0xa5a ; im13 field for specified functions +i5REG .equ 0x06 ; Init registers +i5BP .equ 0x09 ; GDB breakpoin +i5PSW .equ 0x0b ; Get PSW +i5INLINE .equ 0x0e ; Get INLINE +R_gr0 .equ 0 +R_gr1 .equ 4 +R_gr2 .equ 8 +R_gr3 .equ 12 +R_gr4 .equ 16 +R_gr5 .equ 20 +R_gr6 .equ 24 +R_gr7 .equ 28 +R_gr8 .equ 32 +R_gr9 .equ 36 +R_gr10 .equ 40 +R_gr11 .equ 44 +R_gr12 .equ 48 +R_gr13 .equ 52 +R_gr14 .equ 56 +R_gr15 .equ 60 +R_gr16 .equ 64 +R_gr17 .equ 68 +R_gr18 .equ 72 +R_gr19 .equ 76 +R_gr20 .equ 80 +R_gr21 .equ 84 +R_gr22 .equ 88 +R_gr23 .equ 92 +R_gr24 .equ 96 +R_gr25 .equ 100 +R_gr26 .equ 104 +R_gr27 .equ 108 +R_gr28 .equ 112 +R_gr29 .equ 116 +R_gr30 .equ 120 +R_gr31 .equ 124 + +R_sr0 .equ 128 +R_sr1 .equ 132 +R_sr2 .equ 136 +R_sr3 .equ 140 +R_sr4 .equ 144 +R_sr5 .equ 148 +R_sr6 .equ 152 +R_sr7 .equ 156 + +R_cr0 .equ 160 +R_cr1 .equ 164 +R_cr2 .equ 168 +R_cr3 .equ 172 +R_cr4 .equ 176 +R_cr5 .equ 180 +R_cr6 .equ 184 +R_cr7 .equ 188 +R_cr8 .equ 192 +R_cr9 .equ 196 +R_cr10 .equ 200 +R_cr11 .equ 204 +R_cr12 .equ 208 +R_cr13 .equ 212 +R_cr14 .equ 216 +R_cr15 .equ 220 +R_cr16 .equ 224 +R_cr17H .equ 228 +R_cr18H .equ 232 +R_cr19 .equ 236 +R_cr20 .equ 240 +R_cr21 .equ 244 +R_cr22 .equ 248 +R_cr23 .equ 252 +R_cr24 .equ 256 +R_cr25 .equ 260 +R_cr26 .equ 264 +R_cr27 .equ 268 +R_cr28 .equ 272 +R_cr29 .equ 276 +R_cr30 .equ 280 +R_cr31 .equ 284 + +R_cr17T .equ 288 +R_cr18T .equ 292 + +R_cpu0 .equ 296 + +R_SIZE .equ 300 + +min_stack .equ 64 + + .import handle_exception + .import $global$, data + .IMPORT putnum, code + .IMPORT led_putnum, code + .IMPORT delay, code + + .export FICE + .export DEBUG_GO + .export DEBUG_SS + .export STUB_RESTORE + + .export save_regs + .export RegBlk + .export Exception_index + +;------------------------------------------------------------------------------- + .EXPORT breakpoint,ENTRY,ARGW0=GR,RTNVAL=GR +breakpoint + .PROC + .CALLINFO CALLER,FRAME=128,SAVE_RP + .ENTRY + + stw %r2,-20(0,%r30) ; stash the return pointer + ldo 128(%r30),%r30 ; push up the stack pointer + +;;; debug + ldi 6, %r26 + bl,n led_putnum,%r2 + nop + ldil L'900000,%r26 + ldo R'900000(%r26),%r26 + bl,n delay,%r2 + nop +;;; + break i5INLINE,i13BREAK +;;; more debug + ldi 7, %r26 + bl,n led_putnum,%r2 + nop + ldil L'900000,%r26 + ldo R'900000(%r26),%r26 + bl,n delay,%r2 + nop +;;; + +FICE fice 0(0,%r26) ; Flush the i cache entry + sync + + ldw -148(0,%r30),%r2 ; retrieve the return pointer + ldo -128(%r30),%r30 ; reset the stack pointer + bv,n 0(%r2) ; return to caller + nop + + .EXIT + .PROCEND + +;------------------------------------------------------------------------------- +DEBUG_GO + or,tr %r0,%r0,%r10 ; if go, do not set R-bit to 1 + +DEBUG_SS + ldi 1,%r10 ; else set R-bit to 1 + +DEBUG_EXEC + + bl DGO_0,%r8 ; r8 points to register block + addil L%RegBlk-DGO_0,%r8 +DGO_0 + ldo R%RegBlk-DGO_0(%r1),%r8 + +; load space registers + + ldw R_sr0(%r8),%r1 + mtsp %r1,%sr0 + ldw R_sr1(%r8),%r1 + mtsp %r1,%sr1 + ldw R_sr2(%r8),%r1 + mtsp %r1,%sr2 + ldw R_sr3(%r8),%r1 + mtsp %r1,%sr3 + ldw R_sr4(%r8),%r1 + mtsp %r1,%sr4 + ldw R_sr5(%r8),%r1 + mtsp %r1,%sr5 + ldw R_sr6(%r8),%r1 + mtsp %r1,%sr6 + ldw R_sr7(%r8),%r1 + mtsp %r1,%sr7 + +; clear Q-bit for rfi + + rsm 0x08,%r0 + +; load control registers + + ldw R_cr0(%r8),%r1 + or,= %r10,%r0,%r0 ; if single step + copy %r0,%r1 ; set %cr0 to 0 + mtctl %r1,%cr0 + ldw R_cr8(%r8),%r1 + mtctl %r1,%cr8 + ldw R_cr9(%r8),%r1 + mtctl %r1,%cr9 + ldw R_cr10(%r8),%r1 + mtctl %r1,%cr10 + ldw R_cr11(%r8),%r1 + mtctl %r1,%cr11 + ldw R_cr12(%r8),%r1 + mtctl %r1,%cr12 + ldw R_cr13(%r8),%r1 + mtctl %r1,%cr13 + ldw R_cr14(%r8),%r1 + mtctl %r1,%cr14 + ldw R_cr15(%r8),%r1 + mtctl %r1,%cr15 + ldw R_cr16(%r8),%r1 + mtctl %r1,%cr16 + ldw R_cr17H(%r8),%r1 ; load iiasq.head + mtctl %r1,%cr17 + ldw R_cr18H(%r8),%r1 ; load iiaoq.head + mtctl %r1,%cr18 + ldw R_cr17T(%r8),%r1 ; load iiasq.tail + mtctl %r1,%cr17 + ldw R_cr18T(%r8),%r1 ; load iiaoq.tail + mtctl %r1,%cr18 + ldw R_cr19(%r8),%r1 + mtctl %r1,%cr19 + ldw R_cr20(%r8),%r1 + mtctl %r1,%cr20 + ldw R_cr21(%r8),%r1 + mtctl %r1,%cr21 + ldw R_cr22(%r8),%r1 + dep %r10,27,1,%r1 ; set R-bit if applicable + mtctl %r1,%cr22 + ldw R_cr23(%r8),%r1 + mtctl %r1,%cr23 + ldw R_cr24(%r8),%r1 + mtctl %r1,%cr24 + ldw R_cr25(%r8),%r1 + mtctl %r1,%cr25 + ldw R_cr26(%r8),%r1 + mtctl %r1,%cr26 + ldw R_cr27(%r8),%r1 + mtctl %r1,%cr27 + ldw R_cr28(%r8),%r1 + mtctl %r1,%cr28 + ldw R_cr29(%r8),%r1 + mtctl %r1,%cr29 + ldw R_cr30(%r8),%r1 + mtctl %r1,%cr30 + ldw R_cr31(%r8),%r1 + mtctl %r1,%cr31 + +; load diagnose registers + + ldw R_cpu0(%r8),%r1 + ldil L%CPU0_MASK,%r2 + ldo R%CPU0_MASK(%r2),%r2 + xor %r1,%r2,%r1 ; xor the read/clear bits + nop + mtcpu %r1,0 + mtcpu %r1,0 + +; load general registers + + ldw R_gr1(%r8),%r1 + ldw R_gr2(%r8),%r2 + ldw R_gr3(%r8),%r3 + ldw R_gr4(%r8),%r4 + ldw R_gr5(%r8),%r5 + ldw R_gr6(%r8),%r6 + ldw R_gr7(%r8),%r7 + ldw R_gr9(%r8),%r9 + ldw R_gr10(%r8),%r10 + ldw R_gr11(%r8),%r11 + ldw R_gr12(%r8),%r12 + ldw R_gr13(%r8),%r13 + ldw R_gr14(%r8),%r14 + ldw R_gr15(%r8),%r15 + ldw R_gr16(%r8),%r16 + ldw R_gr17(%r8),%r17 + ldw R_gr18(%r8),%r18 + ldw R_gr19(%r8),%r19 + ldw R_gr20(%r8),%r20 + ldw R_gr21(%r8),%r21 + ldw R_gr22(%r8),%r22 + ldw R_gr23(%r8),%r23 + ldw R_gr24(%r8),%r24 + ldw R_gr25(%r8),%r25 + ldw R_gr26(%r8),%r26 + ldw R_gr27(%r8),%r27 + ldw R_gr28(%r8),%r28 + ldw R_gr29(%r8),%r29 + ldw R_gr30(%r8),%r30 + ldw R_gr31(%r8),%r31 + ldw R_gr8(%r8),%r8 + +; execute user program + + nop + rfi ; switch to user code + nop + +;------------------------------------------------------------------------------- + +STUB_RESTORE + copy %r1,%r9 ; save exception index + bl SR_00,%r8 + addil L%Exception_index-SR_00,%r8 +SR_00 + ldo R%Exception_index-SR_00(%r1),%r8 + stw %r9,(%r8) + + bl save_regs,%r25 + nop + +#ifdef DEBUG_DEBUGGER1 + stwm %r1,8(%sp) + bl putc,%rp + ldi CR,%arg0 + bl putc,%rp + ldi LF,%arg0 + bl printit,%mrp + mfctl %pcoq,%arg0 + + mfctl %pcoq,%r1 + mtctl %r1,%pcoq + mfctl %pcoq,%arg0 + bl printit,%mrp + mtctl %arg0,%pcoq + + bl printit,%mrp + ldw -8(%sp),%arg0 + + ldwm -8(%sp),%r1 +#endif + +#ifdef DEBUG_DEBUGGER2 + stwm %r1,8(%sp) + bl putc,%rp + ldi LF,%arg0 + ldwm -8(%sp),%r1 +#endif + +#ifdef DEBUG_DEBUGGER3 + bl printit,%mrp + copy iptr,%arg0 + bl printit,%mrp + copy rstack,%arg0 + bl printit,%mrp + copy gspace,%arg0 + bl printit,%mrp + copy dstack,%arg0 + bl printit,%mrp + copy nextptr,%arg0 + bl printit,%mrp + copy %dp,%arg0 + bl printit,%mrp + copy %sp,%arg0 + bl printit,%mrp + mfctl %rctr,%arg0 + bl printit,%mrp + mfctl %iva,%arg0 + bl printit,%mrp + mfctl %eiem,%arg0 + bl printit,%mrp + mfctl %ipsw,%arg0 + bl printit,%mrp + copy %r0,%arg0 +#endif + bl SR_1,%sp + addil L%Stub_stack-SR_1,%sp +SR_1 + ldo R%Stub_stack-SR_1(%r1),%sp ; set the stack pointer + + bl SR_2,%arg0 + addil L%RegBlk-SR_2,%arg0 +SR_2 + ldo R%RegBlk-SR_2(%r1),%arg0 ; set arg0 (save register area) + + bl SR_3,%arg1 + addil L%Exception_index-SR_3,%arg1 ; set arg1 address +SR_3 + ldo R%Exception_index-SR_3(%r1),%arg1 ; set arg1 address + + addi min_stack,%sp,%sp ; allocate min stack frame + + bl handle_exception,%r2 + ldw 0(%arg1),%arg1 ; load arg1 + addi -min_stack,%sp,%sp ; de allocate min stack frame + + b DEBUG_EXEC ; + copy %r28,%r10 +;------------------------------------------------------------------------------- + +save_regs ; return address is in %r25 + + bl SR_0,%r1 ; r1 points to Register block + addil L%RegBlk-SR_0,%r1 +SR_0 + ldo R%RegBlk-SR_0(%r1),%r1 + +; save general registers + + stw %r0,R_gr0(%r1) + ; don't store %r1 yet + stw %r2,R_gr2(%r1) + stw %r3,R_gr3(%r1) + stw %r4,R_gr4(%r1) + stw %r5,R_gr5(%r1) + stw %r6,R_gr6(%r1) + stw %r7,R_gr7(%r1) + ; don't store %r8 yet + ; don't store %r9 yet + stw %r10,R_gr10(%r1) + stw %r11,R_gr11(%r1) + stw %r12,R_gr12(%r1) + stw %r13,R_gr13(%r1) + stw %r14,R_gr14(%r1) + stw %r15,R_gr15(%r1) + ; don't store %r16 yet + ; don't store %r17 yet + stw %r18,R_gr18(%r1) + stw %r19,R_gr19(%r1) + stw %r20,R_gr20(%r1) + stw %r21,R_gr21(%r1) + stw %r22,R_gr22(%r1) + stw %r23,R_gr23(%r1) + ; don't store %r24 yet + ; don't store %r25 yet + stw %r26,R_gr26(%r1) + stw %r27,R_gr27(%r1) + stw %r28,R_gr28(%r1) + stw %r29,R_gr29(%r1) + stw %r30,R_gr30(%r1) + stw %r31,R_gr31(%r1) + +; restore general registers from shadow registers and save them + + copy %r1,%r10 ; hold Register block pointer + copy %r25,%rp ; hold return pointer + shdw_gr + shdw_gr + stw %r1,R_gr1(%r10) + stw %r8,R_gr8(%r10) + stw %r9,R_gr9(%r10) + stw %r16,R_gr16(%r10) + stw %r17,R_gr17(%r10) + stw %r24,R_gr24(%r10) + stw %r25,R_gr25(%r10) + +; save control registers + + mfctl %cr0,%r1 + stw %r1,R_cr0(%r10) + stw %r0,R_cr1(%r10) + stw %r0,R_cr2(%r10) + stw %r0,R_cr3(%r10) + stw %r0,R_cr4(%r10) + stw %r0,R_cr5(%r10) + stw %r0,R_cr6(%r10) + stw %r0,R_cr7(%r10) + mfctl %cr8,%r1 + stw %r1,R_cr8(%r10) + mfctl %cr9,%r1 + stw %r1,R_cr9(%r10) + mfctl %cr10,%r1 + stw %r1,R_cr10(%r10) + mfctl %cr11,%r1 + stw %r1,R_cr11(%r10) + mfctl %cr12,%r1 + stw %r1,R_cr12(%r10) + mfctl %cr13,%r1 + stw %r1,R_cr13(%r10) + mfctl %cr14,%r1 + stw %r1,R_cr14(%r10) + mfctl %cr15,%r1 + stw %r1,R_cr15(%r10) + mfctl %cr16,%r1 + stw %r1,R_cr16(%r10) + mfctl %cr17,%r1 + stw %r1,R_cr17H(%r10) + mtctl %r1,%cr17 + mfctl %cr17,%r1 + stw %r1,R_cr17T(%r10) + mtctl %r1,%cr17 + mfctl %cr18,%r1 + stw %r1,R_cr18H(%r10) + mtctl %r1,%cr18 + mfctl %cr18,%r1 + stw %r1,R_cr18T(%r10) + mtctl %r1,%cr18 + mfctl %cr19,%r1 + stw %r1,R_cr19(%r10) + mfctl %cr20,%r1 + stw %r1,R_cr20(%r10) + mfctl %cr21,%r1 + stw %r1,R_cr21(%r10) + mfctl %cr22,%r1 + stw %r1,R_cr22(%r10) + mfctl %cr23,%r1 + stw %r1,R_cr23(%r10) + mfctl %cr24,%r1 + stw %r1,R_cr24(%r10) + mfctl %cr25,%r1 + stw %r1,R_cr25(%r10) + mfctl %cr26,%r1 + stw %r1,R_cr26(%r10) + mfctl %cr27,%r1 + stw %r1,R_cr27(%r10) + mfctl %cr28,%r1 + stw %r1,R_cr28(%r10) + mfctl %cr29,%r1 + stw %r1,R_cr29(%r10) + mfctl %cr30,%r1 + stw %r1,R_cr30(%r10) + mfctl %cr31,%r1 + stw %r1,R_cr31(%r10) + +; save diagnose registers + + mfcpu_c 0,%r1 + mfcpu_c 0,%r1 + stw %r1,R_cpu0(%r10) + +; save space registers + + mfsp %sr0,%r1 + stw %r1,R_sr0(%r10) + mfsp %sr1,%r1 + stw %r1,R_sr1(%r10) + mfsp %sr2,%r1 + stw %r1,R_sr2(%r10) + mfsp %sr3,%r1 + stw %r1,R_sr3(%r10) + mfsp %sr4,%r1 + stw %r1,R_sr4(%r10) + mfsp %sr5,%r1 + stw %r1,R_sr5(%r10) + mfsp %sr6,%r1 + stw %r1,R_sr6(%r10) + mfsp %sr7,%r1 + bv (%rp) + stw %r1,R_sr7(%r10) + +#ifdef DEBUG_DEBUGGER +;------------------------------------------------------------------------------- +printit + mtctl %rp,%tr0 + mtctl %r1,%tr1 + bl putnum,%rp + copy %rp,%arg0 + + mtctl %mrp,%tr2 + bl putc,%rp + ldi CR,%arg0 + bl putc,%rp + ldi LF,%arg0 + mfctl %tr2,%mrp + mfctl %tr1,%r1 + bv (%mrp) + mfctl %tr0,%rp +#endif + .space $PRIVATE$ + .subspa $DATA$,align=4,access=0x1f + +Exception_index + .word 0 + +RegBlk + .block R_SIZE ; register block + +Stub_stack + .block 1024 + + .end
debugger.s Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: configure.in =================================================================== --- configure.in (nonexistent) +++ configure.in (revision 345) @@ -0,0 +1,35 @@ +dnl Process this file with autoconf to produce a configure script. +AC_PREREQ(2.59) +AC_INIT(crt0.s) + +if test "$srcdir" = "." ; then + mdir=`echo "${with_multisubdir}/" \ + | sed -e 's,\([[^/]][[^/]]*\),..,g' -e 's,^/$,,'` + AC_CONFIG_AUX_DIR(${mdir}../../..) +else + AC_CONFIG_AUX_DIR(${srcdir}/../..) +fi + +AC_PROG_INSTALL + +LIB_AC_PROG_CC +AS=${AS-as} +AC_SUBST(AS) +AR=${AR-ar} +AC_SUBST(AR) +LD=${LD-ld} +AC_SUBST(LD) +AC_PROG_RANLIB +LIB_AM_PROG_AS + +host_makefile_frag=${srcdir}/../config/default.mh + +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) + +AC_OUTPUT(Makefile)
configure.in Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: hppa.ld =================================================================== --- hppa.ld (nonexistent) +++ hppa.ld (revision 345) @@ -0,0 +1,64 @@ +STARTUP(crt0-hppa.o) +OUTPUT_ARCH(hppa) +/*** INPUT(hppa.o) ***/ +SEARCH_DIR(.) +__DYNAMIC = 0; + +/* + * Setup the memory map of the MC68ec0x0 Board (IDP) + * stack grows up towards high memory. This works for + * both the rom68k and the mon68k monitors. + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x10000, LENGTH = 32M +} + +/* + * stick everything in ram (of course) + */ +SECTIONS +{ + .text : + { + CREATE_OBJECT_SYMBOLS + *(.text) + etext = .; + __CTOR_LIST__ = .; + LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) + *(.ctors) + LONG(0) + __CTOR_END__ = .; + __DTOR_LIST__ = .; + LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) + *(.dtors) + LONG(0) + __DTOR_END__ = .; + *(.lit) + *(.shdata) + } > ram + .shbss SIZEOF(.text) + ADDR(.text) : { + *(.shbss) + } + .data : { + *(.data) + CONSTRUCTORS + _edata = .; + } > ram + + .bss SIZEOF(.data) + ADDR(.data) : + { + _bss_start = ALIGN(0x8); + *(.bss) + *(COMMON) + _bss_end = ALIGN(0x8); + } + .stab 0 (NOLOAD) : + { + [ .stab ] + } + .stabstr 0 (NOLOAD) : + { + [ .stabstr ] + } +} Index: iva_table.s =================================================================== --- iva_table.s (nonexistent) +++ iva_table.s (revision 345) @@ -0,0 +1,996 @@ +/**************************************************************************** + + THIS SOFTWARE IS NOT COPYRIGHTED + + HP offers the following for use in the public domain. HP makes no + warranty with regard to the software or it's performance and the + user accepts the software "AS IS" with all faults. + + HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD + TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +****************************************************************************/ + + .space $TEXT$ + .subspa $CODE$,access=0x2c + +#include "diagnose.h" +#if 0 +#include "iva_table.h" +#endif + +R_gr0 .equ 0 +R_gr1 .equ 4 +R_gr2 .equ 8 +R_gr3 .equ 12 +R_gr4 .equ 16 +R_gr5 .equ 20 +R_gr6 .equ 24 +R_gr7 .equ 28 +R_gr8 .equ 32 +R_gr9 .equ 36 +R_gr10 .equ 40 +R_gr11 .equ 44 +R_gr12 .equ 48 +R_gr13 .equ 52 +R_gr14 .equ 56 +R_gr15 .equ 60 +R_gr16 .equ 64 +R_gr17 .equ 68 +R_gr18 .equ 72 +R_gr19 .equ 76 +R_gr20 .equ 80 +R_gr21 .equ 84 +R_gr22 .equ 88 +R_gr23 .equ 92 +R_gr24 .equ 96 +R_gr25 .equ 100 +R_gr26 .equ 104 +R_gr27 .equ 108 +R_gr28 .equ 112 +R_gr29 .equ 116 +R_gr30 .equ 120 +R_gr31 .equ 124 +R_rctr .equ 160 +R_cpu0 .equ 164 +R_pidr1 .equ 168 +R_pidr2 .equ 172 +R_ccr .equ 176 +R_sar .equ 180 +R_pidr3 .equ 184 +R_pidr4 .equ 188 +R_iva .equ 192 +R_eiem .equ 196 + +R_itmr .equ 200 +R_pcsqH .equ 204 +R_pcoqH .equ 208 +R_iir .equ 212 +R_pcsqT .equ 216 +R_pcoqT .equ 220 +R_isr .equ 224 +R_ior .equ 228 +R_ipsw .equ 232 +R_eirr .equ 236 +R_tr0 .equ 240 +R_tr1 .equ 244 +R_tr2 .equ 248 +R_tr3 .equ 252 +R_tr4 .equ 256 +R_tr5 .equ 260 +R_tr6 .equ 264 +R_tr7 .equ 268 + +R_SIZE .equ 300 + + .import putc,code + .import puts,code + .import putnum,code + .import put_led,code + .import save_regs,code + .import STUB_RESTORE,code + .import RegBlk,data + .export iva_table,data + .IMPORT led_putnum,code + .IMPORT delay,code + .IMPORT putnum,code + .IMPORT outbyte,code + .IMPORT print,code + + .align 2048 +iva_table + .blockz 32 ; entry 0 is reserved + + .align 32 +hpmc + nop + b,n hpmc_handler + nop + .word 0 + .word 0 + .word 0 + .word hpmc_handler + .word 0 + + .align 32 +power_fail +; PrintString Str02,0x2 + ldi 1,%r26 + bl,n putnum,%r2 + nop + + .align 32 +recovery +;; PrintString Str03,0x3 + ldi 2,%r26 + bl,n putnum,%r2 + nop + ldi 3,%r1 + b,n handle_rcc + nop + + .align 32 +external +; PrintString Str04,0x4 + ldi 3,%r26 + bl,n putnum,%r2 + nop + + .align 32 +lpmc +; PrintString Str05,0x5 + ldi 4,%r26 + bl,n putnum,%r2 + nop + + .align 32 +itlb_miss +; PrintString Str06,0x6 + ldi 5,%r26 + bl,n putnum,%r2 + nop + + .align 32 +imem_protection +; PrintString Str07,0x7 + ldi 6,%r26 + bl,n putnum,%r2 + nop + + .align 32 +illegal_inst +; PrintString Str08,0x8 + ldi 7,%r26 + bl,n putnum,%r2 + nop + + .align 32 +break + b,n break_handler + nop + + .align 32 +privileged_op +; PrintString Str0a,0xa + ldi 8,%r26 + bl,n putnum,%r2 + nop + + .align 32 +privileged_reg +; PrintString Str0b,0xb + ldi 9,%r26 + bl,n putnum,%r2 + nop + + .align 32 +overflow +; PrintString Str0c,0xc + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +conditional +; PrintString Str0d,0xd + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +assist_excep +; PrintString Str0e,0xe + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +dtlb_miss +; PrintString Str0f,0xf + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +na_itlb +; PrintString Str10,0x10 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +na_dtlb +; PrintString Str11,0x11 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +dmem_protection +; PrintString Str12,0x12 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +dmem_break +; PrintString Str13,0x13 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +tlb_dirty +; PrintString Str14,0x14 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +page_ref +; PrintString Str15,0x15 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +assist_emul +; PrintString Str16,0x16 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +high_priv +; PrintString Str17,0x17 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +low_priv +; PrintString Str18,0x18 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +branch_taken +; PrintString Str19,0x19 + ldi 32,%r26 + bl,n putnum,%r2 + nop + +/* + * foobar -- debug procedure calling between C and assembler + */ + .EXPORT foobar,ENTRY,ARGW0=GR,RTNVAL=GR +foobar + .PROC + .CALLINFO CALLER,FRAME=128,SAVE_RP + .ENTRY + + stw %r2,-20(0,%r30) ; stash the return pointer + ldo 128(%r30),%r30 ; push up the stack pointer + + ldi 8, %r26 + bl,n led_putnum,%r2 + nop + ldil L'900000,%r26 + ldo R'900000(%r26),%r26 + bl,n delay,%r2 + nop + ldi 8, %r26 + bl,n led_putnum,%r2 + nop + ldil L'900000,%r26 + ldo R'900000(%r26),%r26 + bl,n delay,%r2 + nop +;; copy %r26,%r26 +;; bl,n putnum,%r2 + nop + + ldw -148(0,%r30),%r2 ; retrieve the return pointer + ldo -128(%r30),%r30 ; reset the stack pointer + bv,n 0(%r2) + nop + + .EXIT + .PROCEND + +/* + * setup_vectors -- add vectors for GDB to the vector table. + * %r3 - current vector table + * %r4 - new vector table + */ + .EXPORT setup_vectors,ENTRY,ARGW0=GR,RTNVAL=GR +setup_vectors + .PROC + .CALLINFO CALLER,FRAME=128,SAVE_RP + .ENTRY + stw %r2,-20(0,%r30) ; stash the return pointer + ldo 128(%r30),%r30 ; push up the stack pointer + + mfctl %iva,%r3 + + ldil L%iva_table,%r4 ; Get the new vector table + ldo R%iva_table(%r4),%r4 ; address + + ldil L%break_handler,%r5 ; Get the breakpoint + ldo R%break_handler(%r5),%r5 ; handler vector + + ldil L%break_default,%r6 ; Get the default handler + ldo R%break_default(%r6),%r6 ; vector + + stw %r6,4(%r4) ; ad the default vector + stw %r5,36(%r4) ; add the break vector + + mtctl %r4,%iva + + ldw -148(0,%r30),%r2 ; retrieve the return pointer + ldo -128(%r30),%r30 ; reset the stack pointer + bv,n 0(%r2) + nop + + .EXIT + .PROCEND + +;------------------------------------------------------------------------------- +hpmc_handler + bl,n save_state,%r25 + nop + bl print_intr,%rp + ldi Str01-Str01,%arg0 + bl print_state,%rp + nop + ldil L%0xf0000000,%r1 + ldw (%r1),%r1 ; read from ROM to reset HPMC + + mfcpu_c 0,%r1 + mfcpu_c 0,%r1 + depi 0,CPU_DIAG_0_PREV_HPMC_PREP_BIT,1,%r1 ; clear Prev HPMC bit + +#ifdef PCXL + depi 0,CPU_DIAG_0_L2DHPMC_BIT,1,%r1 + depi 0,CPU_DIAG_0_L2IHPMC_BIT,1,%r1 + depi 0,CPU_DIAG_0_L1IHPMC_BIT,1,%r1 + depi 0,CPU_DIAG_0_L2PARERR_BIT,4,%r1 +#else /* PCXT */ + depi 0,CPU_DIAG_0_DHPMC_BIT,1,%r1 ; don't clear DHPMC + depi 0,CPU_DIAG_0_ILPMC_BIT,1,%r1 ; don't clear ILPMC + depi 0,CPU_DIAG_0_HTOC_BIT,1,%r1 ; don't clear HTOC +#endif + + mtcpu %r1,0 + mtcpu %r1,0 + + b,n restore_to_STUB + ldi 0x1,%r1 + +/* + * break_handler -- this is the main entry point for an exception + */ + .ALIGN 2048 +break_handler + + mfctl %iir,%r1 ; r1 = break instruction + extru %r1,18,13,%r8 + ldo -i13BREAK(%r8),%r8 ; if im13 field doesn't match + comb,<>,n %r8,%r0,break_default ; go to default operation + extru %r1,31,5,%r8 + ldi 0x9,%r1 ; set exception index + comib,=,n i5BP,%r8,break_breakpoint + comib,=,n i5PSW,%r8,break_psw + comib,=,n i5REG,%r8,break_reg_init + comib,=,n i5INLINE,%r8,break_breakpoint + ; fall through to break_default + +break_default +; PrintString Str09,0x9 + ldi 32,%r26 + bl,n putnum,%r2 + nop + +break_reg_init + bl setup_vectors,%r25 + nop + bl save_regs,%r25 + nop + ; fall through to advance past break instruction + +break_psw + b,n recover + +break_breakpoint + b,n STUB_RESTORE + +;------------------------------------------------------------------------------- + +handle_rcc + mfctl %ipsw,%r1 + bb,>=,n %r1,10,do_restore ; check nullify bit + dep %r0,10,1,%r1 + mtctl %r1,%ipsw ; clear nullify bit + + ;; was the AdvancePCOQ .macro + mtctl %r0,%pcoq ; throw away iiaoq head pointer, tail->head + mfctl %pcoq,%r1 ; get tail pointer + mtctl %r1,%pcoq ; insert tail pointer + ldo 4(%r1),%r1 ; advance tail pointer + mtctl %r1,%pcoq ; insert new tail pointer, former tail->head + +do_restore + b,n STUB_RESTORE + nop +;------------------------------------------------------------------------------- + +print_intr +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%r1 + addil L%Str01-pr_intr_0,%r1 + +pr_intr_0 + ldo R%Str01-pr_intr_0(%r1),%r1 ; r1 points to Save_area + b puts ; print string--return through rp + add %r1,%arg0,%arg0 + +;------------------------------------------------------------------------------- + +halt +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%r1 + addil L%HaltStr-halt_0,%r1 + +halt_0 + bl puts,%rp ; print halt message + ldo R%HaltStr-halt_0(%r1),%arg0 + + nop + b,n . ; loop forever + nop + +;------------------------------------------------------------------------------- + +recover + ;; was the AdvancePCOQ .macro + mtctl %r0,%pcoq ; throw away iiaoq head pointer, tail->head + mfctl %pcoq,%r1 ; get tail pointer + mtctl %r1,%pcoq ; insert tail pointer + ldo 4(%r1),%r1 ; advance tail pointer + mtctl %r1,%pcoq ; insert new tail pointer, former tail->head + + rfir + +;------------------------------------------------------------------------------- + +save_state ; %r25 is return pointer +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%r1 + addil L%Save_area-sa_st_0,%r1 + +sa_st_0 + ldo R%Save_area-sa_st_0(%r1),%r1 ; r1 points to Save_area + +; save general registers + stw %r0,R_gr0(%r1) + ; don't save %r1 until restored + stw %r2,R_gr2(%r1) + stw %r3,R_gr3(%r1) + stw %r4,R_gr4(%r1) + stw %r5,R_gr5(%r1) + stw %r6,R_gr6(%r1) + stw %r7,R_gr7(%r1) + ; don't save %r8, %r9 until restored + stw %r10,R_gr10(%r1) + stw %r11,R_gr11(%r1) + stw %r12,R_gr12(%r1) + stw %r13,R_gr13(%r1) + stw %r14,R_gr14(%r1) + stw %r15,R_gr15(%r1) + ; don't save %r16, %r17 until restored + stw %r18,R_gr18(%r1) + stw %r19,R_gr19(%r1) + stw %r20,R_gr20(%r1) + stw %r21,R_gr21(%r1) + stw %r22,R_gr22(%r1) + stw %r23,R_gr23(%r1) + ; don't save %r24, %r25 until restored + stw %r26,R_gr26(%r1) + stw %r27,R_gr27(%r1) + stw %r28,R_gr28(%r1) + stw %r29,R_gr29(%r1) + copy %r25,%rp ; copy return pointer to %rp + stw %r30,R_gr30(%r1) + copy %r1,%r19 ; save Save_area pointer in %r19 + stw %r31,R_gr31(%r1) + shdw_gr ; restore %r1 and %r25 (et al.) from shadow regs + shdw_gr + stw %r1,R_gr1(%r19) ; save %r1 + stw %r8,R_gr8(%r19) + stw %r9,R_gr9(%r19) + stw %r16,R_gr16(%r19) + stw %r17,R_gr17(%r19) + stw %r24,R_gr24(%r19) + +; save control registers + mfctl %rctr,%r1 + stw %r1,R_rctr(%r19) + mfctl %pidr1,%r1 + stw %r1,R_pidr1(%r19) + mfctl %pidr2,%r1 + stw %r1,R_pidr2(%r19) + mfctl %ccr,%r1 + stw %r1,R_ccr(%r19) + mfctl %sar,%r1 + stw %r1,R_sar(%r19) + mfctl %pidr3,%r1 + stw %r1,R_pidr3(%r19) + mfctl %pidr4,%r1 + stw %r1,R_pidr4(%r19) + mfctl %iva,%r1 + stw %r1,R_iva(%r19) + mfctl %eiem,%r1 + stw %r1,R_eiem(%r19) + mfctl %itmr,%r1 + stw %r1,R_itmr(%r19) + mfctl %pcsq,%r1 + mtctl %r1,%pcsq + stw %r1,R_pcsqH(%r19) + mfctl %pcsq,%r1 + mtctl %r1,%pcsq + stw %r1,R_pcsqT(%r19) + mfctl %pcoq,%r1 + mtctl %r1,%pcoq + stw %r1,R_pcoqH(%r19) + mfctl %pcoq,%r1 + mtctl %r1,%pcoq + stw %r1,R_pcoqT(%r19) + mfctl %iir,%r1 + stw %r1,R_iir(%r19) + mfctl %isr,%r1 + stw %r1,R_isr(%r19) + mfctl %ior,%r1 + stw %r1,R_ior(%r19) + mfctl %ipsw,%r1 + stw %r1,R_ipsw(%r19) + mfctl %eirr,%r1 + stw %r1,R_eirr(%r19) + mfctl %tr0,%r1 + stw %r1,R_tr0(%r19) + mfctl %tr1,%r1 + stw %r1,R_tr1(%r19) + mfctl %tr2,%r1 + stw %r1,R_tr2(%r19) + mfctl %tr3,%r1 + stw %r1,R_tr3(%r19) + mfctl %tr4,%r1 + stw %r1,R_tr4(%r19) + mfctl %tr5,%r1 + stw %r1,R_tr5(%r19) + mfctl %tr6,%r1 + stw %r1,R_tr6(%r19) + mfctl %tr7,%r1 + stw %r1,R_tr7(%r19) + +; save diagnose registers + mfcpu_c 0,%r1 + mfcpu_c 0,%r1 + stw %r1,R_cpu0(%r19) + +#ifdef PRINT_SPACE + stw %r25,R_gr25(%r19) + +; save space registers + mfsp %sr0,%r1 + stw %r1,R_sr0(%r19) + mfsp %sr1,%r1 + stw %r1,R_sr1(%r19) + mfsp %sr2,%r1 + stw %r1,R_sr2(%r19) + mfsp %sr3,%r1 + stw %r1,R_sr3(%r19) + mfsp %sr4,%r1 + stw %r1,R_sr4(%r19) + mfsp %sr5,%r1 + stw %r1,R_sr5(%r19) + mfsp %sr6,%r1 + stw %r1,R_sr6(%r19) + mfsp %sr7,%r1 + bv (%rp) + stw %r1,R_sr7(%r19) +#else + bv (%rp) + stw %r25,R_gr25(%r19) +#endif + + +;------------------------------------------------------------------------------- + +restore_to_STUB ; doesn't return--goes to STUB_RESTORE + ; Note--STUB_RESTORE executes rfir, + ; so we don't need to + copy %r1,%r8 ; save exception index +; %dp may be messed up, so do self-relocating to reach Save_area + bl re_st_0,%r1 + addil L%Save_area-re_st_0,%r1 + +re_st_0 + ldo R%Save_area-re_st_0(%r1),%r1 ; r1 points to Save_area + +; restore general registers + ldw R_gr2(%r1),%r2 + ldw R_gr3(%r1),%r3 + ldw R_gr4(%r1),%r4 + ldw R_gr5(%r1),%r5 + ldw R_gr6(%r1),%r6 + ldw R_gr7(%r1),%r7 +; ldw R_gr8(%r1),%r8 don't smash the exception index + ldw R_gr9(%r1),%r9 + ldw R_gr10(%r1),%r10 + ldw R_gr11(%r1),%r11 + ldw R_gr12(%r1),%r12 + ldw R_gr13(%r1),%r13 + ldw R_gr14(%r1),%r14 + ldw R_gr15(%r1),%r15 + ldw R_gr16(%r1),%r16 + ldw R_gr17(%r1),%r17 + ldw R_gr18(%r1),%r18 + ldw R_gr19(%r1),%r19 + ldw R_gr20(%r1),%r20 + ldw R_gr21(%r1),%r21 + ldw R_gr22(%r1),%r22 + ldw R_gr23(%r1),%r23 + ldw R_gr24(%r1),%r24 + ldw R_gr25(%r1),%r25 + ldw R_gr26(%r1),%r26 + ldw R_gr27(%r1),%r27 + ldw R_gr28(%r1),%r28 + ldw R_gr29(%r1),%r29 + ldw R_gr30(%r1),%r30 + ldw R_gr31(%r1),%r31 + ldw R_gr1(%r1),%r1 + b STUB_RESTORE + copy %r8,%r1 ; restore the exception index + +;------------------------------------------------------------------------------- + +#define HoldPtr %r10 +#define SavePtr %r11 +#define StrPtr %r12 +#define Count %r13 + +#define Hold_Hold 0*4 /* First word of hold area */ +#define Hold_Save 1*4 /* Second word of hold area */ +#define Hold_Str 2*4 /* Third word of hold area */ +#define Hold_Count 3*4 /* Fourth word of hold area */ +#define Hold_rp 4*4 /* Fifth word of hold area */ + +print_state +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%mrp + addil L%Hold_area-pr_st_0,%mrp + +pr_st_0 + ldo R%Hold_area-pr_st_0(%r1),%r1 ; r1 points to Hold_area + +; save working registers + + stw HoldPtr,Hold_Hold(%r1) + copy %r1,HoldPtr ; HoldPtr = &Hold_area + stw SavePtr,Hold_Save(HoldPtr) + ldo Save_area-Hold_area(HoldPtr),SavePtr ; SavePtr = &Save_area + stw StrPtr,Hold_Str(HoldPtr) + addil L%PrintLabels-pr_st_0,%mrp + stw Count,Hold_Count(HoldPtr) + ldo R%PrintLabels-pr_st_0(%r1),StrPtr + stw %rp,Hold_rp(HoldPtr) + + +#ifdef PRINT_SPACE + ldi 68,Count +#else + ldo R_gr0(SavePtr),SavePtr + ldi 60,Count +#endif + +; print register values + +print_loop + bl puts,%rp ; print label + ldo 1(StrPtr),%arg0 ; advance past length byte + bl putnum,%rp ; print register value + ldwm 4(SavePtr),%arg0 + ldbs,ma 1(StrPtr),%r1 + addib,> -1,Count,print_loop + add %r1,StrPtr,StrPtr + +; skip to next line + bl puts,%rp ; print label + ldo 1(StrPtr),%arg0 ; advance past length byte + +; restore working registers + + ldw Hold_rp(HoldPtr),%rp + ldw Hold_Count(HoldPtr),Count + ldw Hold_Str(HoldPtr),StrPtr + ldw Hold_Save(HoldPtr),SavePtr + bv (%rp) + ldw Hold_Hold(HoldPtr),HoldPtr + +#undef SavePtr +#undef HoldPtr +#undef StrPtr +#undef Count + +#undef Hold_Save +#undef Hold_Scr +#undef Hold_Str +#undef Hold_Count +#undef Hold_rp + +;------------------------------------------------------------------------------- + + .space $PRIVATE$ + .subspa $DATA$,align=4,access=0x1f + +/* Used to save machine registers before printing */ +Save_area + .block R_SIZE ; Used to store registers + +/* Used to hold callee-save registers */ +Hold_area + .block 8*4 ; 8 words to store temp. registers + +HaltStr + .stringz "\r\nHalted\r\n" + +RebootStr + .stringz "\r\nRebooting . . .\r\n" + +Str01 + .stringz "\r\nHPMC\r\n" + +Str02 + .stringz "\r\nPower Fail\r\n" + +Str03 + .stringz "\r\nRecovery Counter Trap\r\n" + +Str04 + .stringz "\r\nExternal Interrupt\r\n" + +Str05 + .stringz "\r\nLPMC\r\n" + +Str06 + .stringz "\r\nITLB Miss\r\n" + +Str07 + .stringz "\r\nInstruction Memory Protection Trap\r\n" + +Str08 + .stringz "\r\nIllegal Instruction\r\n" + +Str09 + .stringz "\r\nBreak Trap\r\n" + +Str0a + .stringz "\r\nPrivileged Operation\r\n" + +Str0b + .stringz "\r\nPrivileged Register\r\n" + +Str0c + .stringz "\r\nOverflow Trap\r\n" + +Str0d + .stringz "\r\nConditional Trap\r\n" + +Str0e + .stringz "\r\nAssist Exception\r\n" + +Str0f + .stringz "\r\nData TLB Miss\r\n" + +Str10 + .stringz "\r\nNon-access ITLB Miss\r\n" + +Str11 + .stringz "\r\nNon-access DTLB Miss\r\n" + +Str12 + .stringz "\r\nData Memory Protection Trap\r\n" + +Str13 + .stringz "\r\nData Memory Break\r\n" + +Str14 + .stringz "\r\nTLB Dirty Bit Trap\r\n" + +Str15 + .stringz "\r\nPage Reference Trap\r\n" + +Str16 + .stringz "\r\nAssist Emulation Trap\r\n" + +Str17 + .stringz "\r\nHigher-privilege Trap\r\n" + +Str18 + .stringz "\r\nLower-privilege Trap\r\n" + +Str19 + .stringz "\r\nTaken Branch Trap\r\n" + +Str20 + .stringz "\r\nHere I am!\r\n" + +PrintLabels +#ifdef PRINT_SPACE + .byte 10 + .stringz "sr 0 = 0x" + .byte 13 + .stringz "sr 1 = 0x" + .byte 13 + .stringz "sr 2 = 0x" + .byte 13 + .stringz " sr 3 = 0x" + .byte 12 + .stringz "\r\nsr 4 = 0x" + .byte 13 + .stringz " sr 5 = 0x" + .byte 13 + .stringz " sr 6 = 0x" + .byte 13 + .stringz " sr 7 = 0x" + .byte 13 + .stringz "\r\n\ngr 0 = 0x" +#else + .byte 10 + .stringz "gr 0 = 0x" +#endif + + .byte 13 + .stringz " gr 1 = 0x" + .byte 13 + .stringz " gr 2 = 0x" + .byte 13 + .stringz " gr 3 = 0x" + .byte 12 + .stringz "\r\ngr 4 = 0x" + .byte 13 + .stringz " gr 5 = 0x" + .byte 13 + .stringz " gr 6 = 0x" + .byte 13 + .stringz " gr 7 = 0x" + .byte 12 + .stringz "\r\ngr 8 = 0x" + .byte 13 + .stringz " gr 9 = 0x" + .byte 13 + .stringz " gr10 = 0x" + .byte 13 + .stringz " gr11 = 0x" + .byte 12 + .stringz "\r\ngr12 = 0x" + .byte 13 + .stringz " gr13 = 0x" + .byte 13 + .stringz " gr14 = 0x" + .byte 13 + .stringz " gr15 = 0x" + .byte 12 + .stringz "\r\ngr16 = 0x" + .byte 13 + .stringz " gr17 = 0x" + .byte 13 + .stringz " gr18 = 0x" + .byte 13 + .stringz " gr19 = 0x" + .byte 12 + .stringz "\r\ngr20 = 0x" + .byte 13 + .stringz " gr21 = 0x" + .byte 13 + .stringz " gr22 = 0x" + .byte 13 + .stringz " gr23 = 0x" + .byte 12 + .stringz "\r\ngr24 = 0x" + .byte 13 + .stringz " gr25 = 0x" + .byte 13 + .stringz " gr26 = 0x" + .byte 13 + .stringz " gr27 = 0x" + .byte 12 + .stringz "\r\ngr28 = 0x" + .byte 13 + .stringz " gr29 = 0x" + .byte 13 + .stringz " gr30 = 0x" + .byte 13 + .stringz " gr31 = 0x" + .byte 13 + .stringz "\r\n\nrctr = 0x" + .byte 53 + .stringz " cpu0 = 0x" + .byte 12 + .stringz "\r\npid1 = 0x" + .byte 13 + .stringz " pid2 = 0x" + .byte 13 + .stringz " ccr = 0x" + .byte 13 + .stringz " sar = 0x" + .byte 12 + .stringz "\r\npid3 = 0x" + .byte 13 + .stringz " pid4 = 0x" + .byte 13 + .stringz " iva = 0x" + .byte 13 + .stringz " eiem = 0x" + .byte 12 + .stringz "\r\nitmr = 0x" + .byte 13 + .stringz " iasq = 0x" + .byte 13 + .stringz " iaoq = 0x" + .byte 13 + .stringz " iir = 0x" + .byte 32 + .stringz "\r\n iasq = 0x" + .byte 13 + .stringz " iaoq = 0x" + .byte 12 + .stringz "\r\n isr = 0x" + .byte 13 + .stringz " ior = 0x" + .byte 13 + .stringz " ipsw = 0x" + .byte 13 + .stringz " eirr = 0x" + .byte 12 + .stringz "\r\ncr24 = 0x" + .byte 13 + .stringz " cr25 = 0x" + .byte 13 + .stringz " cr26 = 0x" + .byte 13 + .stringz " cr27 = 0x" + .byte 12 + .stringz "\r\ncr28 = 0x" + .byte 13 + .stringz " cr29 = 0x" + .byte 13 + .stringz " cr30 = 0x" + .byte 13 + .stringz " cr31 = 0x" + .byte 4 + .stringz "\r\n\n" + + .end
iva_table.s Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: io.c =================================================================== --- io.c (nonexistent) +++ io.c (revision 345) @@ -0,0 +1,338 @@ +/* + * io.c -- all the code to make GCC and the libraries run on + * a bare target board. + */ + +#include +#include +#include + +#include "hppa-defs.h" + +extern char *_end; /* _end is set in the linker command file */ + +/* just in case, most boards have at least some memory */ +#ifndef RAMSIZE +# define RAMSIZE (char *)0x100000 +#endif + +int +print(ptr) +char *ptr; +{ + while (*ptr) + outbyte (*ptr++); +} + +int +putnum (Num) +unsigned int Num; +{ + char Buffer[9]; + int Count; + char *BufPtr = Buffer; + int Digit; + + for (Count = 7 ; Count >= 0 ; Count--) { + Digit = (Num >> (Count * 4)) & 0xf; + + if (Digit <= 9) + *BufPtr++ = (char) ('0' + Digit); + else + *BufPtr++ = (char) ('a' - 10 + Digit); + } + + *BufPtr = (char) 0; + print (Buffer); + return; +} + +int +delay (x) + int x; +{ + int y = 17; + while (x-- !=0) + y = y^2; +} + +/* + * strobe -- do a zylons thing, toggling each led in sequence forever... + */ +int +zylons() +{ + while (1) { + strobe(); + } +} + +/* + * strobe -- toggle each led in sequence up and back once. + */ +int +strobe() +{ + static unsigned char curled = 1; + static unsigned char dir = 0; + + curled = 1; + dir = 0; + while (curled != 0) { + led_putnum (curled); + delay (70000); + if (dir) + curled >>= 1; + else + curled <<= 1; + + if (curled == 128) { + dir = ~dir; + } + } + curled = 1; + dir = 0; +} + +/* + * iodc_io_call -- this makes a call into the IODC routine + */ +int +iodc_io_call(ep_address,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) +int ep_address, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11; +{ + int (*iodc_entry_point)(); + + iodc_entry_point = (int (*)())ep_address; + + return ((*iodc_entry_point)(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)); +} + +/* + * pdc_call -- this makes a call into the PDC routine + */ +int +pdc_call(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) + int arg0, arg1, arg2, arg3, arg4, arg5; + int arg6, arg7, arg9, arg10, arg11; +{ + return ( CALL_PDC(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)); +} + +/* + * put_led -- put a bit pattern on the LED's. + */ +int +led_putnum (byte) + unsigned short byte; +{ + return (pdc_call(OPT_PDC_CHASSIS,0,byte)); +} + + +/* + * outbyte -- shove a byte out the serial port + */ +int +outbyte(byte) + unsigned char byte; +{ + int status; + int R_addr[32]; + struct _dev *console = (struct _dev *)PGZ_CONSOLE_STRUCT; + + status = iodc_io_call(console->iodc_io, console->hpa, IO_CONSOLE_OUTPUT, console->spa, + console->layer[0], R_addr, 0, &byte, 1, 0); + + switch(status) + { + case 0: return(1); + default: return (-1); + } +} + +/* + * inbyte -- get a byte from the serial port + */ +unsigned char +inbyte() +{ + int status; + int R_addr[32]; + char inbuf; + struct _dev *console = (struct _dev *)PGZ_CONSOLE_STRUCT; + + while (status == 0) { + status = iodc_io_call(console->iodc_io, console->hpa, IO_CONSOLE_INPUT, console->spa, + console->layer[0], R_addr, 0, &inbuf, 1, 0); + + switch (status) { + case 0: + case 2: /* recoverable error */ + if (R_addr[0] != 0) { /* found a character */ + return(inbuf); + } + else + break; /* error, no character */ + default: /* error, no character */ + return(0); + } + } +} + +/* + * read -- read bytes from the serial port. Ignore fd, since + * we only have stdin. + */ +int +read(fd, buf, nbytes) + int fd; + char *buf; + int nbytes; +{ + int i = 0; + + for (i = 0; i < nbytes; i++) { + *(buf + i) = inbyte(); + if ((*(buf + i) == '\n') || (*(buf + i) == '\r')) { + (*(buf + i)) = 0; + break; + } + } + return (i); +} + +/* + * write -- write bytes to the serial port. Ignore fd, since + * stdout and stderr are the same. Since we have no filesystem, + * open will only return an error. + */ +int +write(fd, buf, nbytes) + int fd; + char *buf; + int nbytes; +{ + int i; + + for (i = 0; i < nbytes; i++) { + if (*(buf + i) == '\n') { + outbyte ('\r'); + } + outbyte (*(buf + i)); + } + return (nbytes); +} + +/* + * open -- open a file descriptor. We don't have a filesystem, so + * we return an error. + */ +int +open(buf, flags, mode) + char *buf; + int flags; + int mode; +{ + errno = EIO; + return (-1); +} + +/* + * close -- close a file descriptor. We don't need + * to do anything, but pretend we did. + */ +int +close(fd) + int fd; +{ + return (0); +} + +/* + * sbrk -- changes heap size size. Get nbytes more + * RAM. We just increment a pointer in what's + * left of memory on the board. + */ +char * +sbrk(nbytes) + int nbytes; +{ + static char * heap_ptr = NULL; + char * base; + + if (heap_ptr == NULL) { + heap_ptr = (char *)&_end; + } + + if ((RAMSIZE - heap_ptr) >= 0) { + base = heap_ptr; + heap_ptr += nbytes; + return (heap_ptr); + } else { + errno = ENOMEM; + return ((char *)-1); + } +} + +/* + * isatty -- returns 1 if connected to a terminal device, + * returns 0 if not. Since we're hooked up to a + * serial port, we'll say yes return a 1. + */ +int +isatty(fd) + int fd; +{ + return (1); +} + +/* + * lseek -- move read/write pointer. Since a serial port + * is non-seekable, we return an error. + */ +off_t +lseek(fd, offset, whence) + int fd; + off_t offset; + int whence; +{ + errno = ESPIPE; + return ((off_t)-1); +} + +/* + * fstat -- get status of a file. Since we have no file + * system, we just return an error. + */ +int +fstat(fd, buf) + int fd; + struct stat *buf; +{ + errno = EIO; + return (-1); +} + +/* + * getpid -- only one process, so just return 1. + */ +#define __MYPID 1 +int +getpid() +{ + return __MYPID; +} + +/* + * kill -- assume mvme.S, and go out via exit... + */ +int +kill(pid, sig) + int pid; + int sig; +{ + if(pid == __MYPID) + _exit(sig); + return 0; +}
io.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: README =================================================================== --- README (nonexistent) +++ README (revision 345) @@ -0,0 +1,156 @@ +*** Registers + GR0 *always zero + GR1 scratch + GR2 normal return register + GR27 Global Data Pointer (Must be set in crt0) + GR30 SP stack pointer + GR31 milicode return pointer + + SR* Space registers + + CR24-31 Temporary Control Registers + CR14 Vector Table Register (like VBR on an m68020) + CR0 Put in a count, causes exception when decremented to 0. + +FORTH's magic number is 031240 + +*** + Series 700/800 + The following options are also supported: + + -snnn set the initial system load (ISL) start address to + nnn in the volume label. This is useful when + building boot media for Series 700/800 systems. + + -lnnn specifies the length in bytes of the ISL code in + the LIF volume. + + -ennn set the ISL entry point to nnn bytes from the + beginning of the ISL. For example, specifying - + e3272 means that the ISL entry point is 3272 + (decimal) bytes from the beginning of the ISL + object module. + + -Knnn forces the directory start location to be the + nearest multiple of nnn x 1024 bytes from the + beginning of the volume. This is necessary for + booting Series 700/800 systems from LIF media. + + -n xxx Sets the volume name to be xxx. + lifinit -v64000000 -d64 -nISL10 -K2 -s4096 -l61440 -e5336 this_lif + +# lifcp -- +# -r Forces RAW mode copying. (file type BIN (-23951)) +# -T Sets the file type of the directory entry. +# -Knnn forces each file copied in to begin on a nnn x +# 1024-byte boundary from the beginning of the volume +# Note: the word echoed below MUST be 10 characters exactly. +# + (echo "FORTH ") | lifcp -r -T-030001 -K2 - this_lif:AUTO + + +# +# somxtract infile outfile -- +# converts a series 800 file *only* into a raw image + +It turns out the native cc and our current gcc produce series 700 +output, so in this case it runs till if fills up the hard disk. + +*** rombootlf5 is a FORTH interpreter in a "boot" image. (it won't run on +the HP742 board) + +lifls -l rombootlf5 +volume ISL10 data size 249984 directory size 8 94/04/20 10:26:36 +filename type start size implement created +=============================================================== +ISL -12800 16 240 0 94/04/20 10:26:36 +HPUX -12928 256 496 0 94/04/20 10:26:37 + IOMAP -12960 752 1504 0 94/04/20 10:26:37 +AUTO -12289 2256 1 0 94/04/20 10:26:38 +FORTH -12960 2264 208 0 94/04/20 10:26:38 +HPFORTH ASCII 2472 420 0 94/04/20 10:26:38 +BOOTROM ASCII 2896 3849 0 94/04/20 10:26:40 +PAD1 -12290 6752 1172 0 94/04/20 10:26:40 + +*** The ISL is only needed when booting the raw hardware. As we're runing +on a monitor (barely) all we need is a crt0 that initiallizes the GR27 +Global Data Pointer and zero's bss. + +*** Initial Program Load +-------------------- +From page 11-56, architecture book. +0x00000000 +------------------------------------+ 0 + | LIF_MAGIC | | +0x00000004 +------------------------------------+ 4 + | | +0x000000F0 +------------------------------------+ 240 + | IPL_ADDR | +0x000000F4 +------------------------------------+ 244 + | IPL_SIZE | +0x000000F8 +------------------------------------+ 248 + | IPL_ENTRY | +0x000000FC +------------------------------------+ 252 + | | +IPL_ADDR +------------------------------------+ IPL_ADDR + | Position Independant | + | IPL Code | + | (including IPL_CHECKSUM) | + +------------------------------------+ IPL_ADDR + IPL_SIZE + | | + +------------------------------------+ + +IPL_ADDR 2 Kbyte aligned, nonzero +IPL_SIZE Multiple of 2Kbytes, <= 256 Kbytes +IPL_ENTRY Word aligned, less than IPL_SIZE + +Loads at IPL_START + +This is based on Cobra/Coral hardware: + LED register at 0xf080024 + I/O status register at 0xf0800000 + EEPROM at 0xf0810000 (LAN ID begins at byte 0) + +Here's a dump of the LIF volume header using "xd" (od with hex output) + +* +00000f0 0000 1000 0000 9800 0000 0000 0000 0000 + ^^^^ + This is the size +* +0000800 5445 5354 2020 2020 2020 a271 0000 0010 + ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^<-- this is the ipl offset + this is the vol name ^^^^<- this is the type + +0000810 0000 0098 9407 1919 1426 8001 0000 0000 + ^^^^ + This is the ipl size + +Interupts +--------- +The vector table is access by %iva (%cr14). The address here must be a +multiple of 2048. The indexes are: +1 high-priority +2 power failure +3 recovery counter +4 external interrupt +5 low-priority machine check +6 instruction TLB miss/instruction page fault +7 instruction memory protection +8 illegal instruction +9 break instruction +10 priviledged operation +11 priviledged register +12 overflow +13 conditional +14 assist exception +15 data TLB miss fault/data page fault +16 non access instruction TLB miss fault +17 non access page TLB miss fault/non access data page fault +18 data memory protection/unaligned data reference +19 data memory break +20 TLB dirty bit +21 page reference +22 assist emulation +23 higher-priority transfer +24 lower-priority transfe +25 taken branch
README Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: hppa-defs.h =================================================================== --- hppa-defs.h (nonexistent) +++ hppa-defs.h (revision 345) @@ -0,0 +1,123 @@ +/* + * PDC support + */ +#define OPT_PDC_CACHE 5 +#define OPT_PDC_ADD_VALID 12 +#define OPT_PDC_CHASSIS 2 /* LED's */ +#define OPT_PDC_IODC 8 /* console I/O */ +#define IODC_CONSOLE_OUT 3 /* bytes out serial port */ +#define IODC_CONSOLE_IN 2 /* bytes in serial port */ + +#define PGZ_MEM_PDC 0x0388 /* location of PDC_ENTRY in memory */ +#define PGZ_CONSOLE_STRUCT 0x3A0 /* console config info */ +#define CALL_PDC (*(int (*)())((int *)(*((int *)PGZ_MEM_PDC)))) + +#define putDebugChar outbyte +#define getDebugChar inbyte + +/* + * IODC support + */ +#define MAX_BUS_CONVERTERS 6 +#define MAX_LAYERS 6 +#define IO_CONSOLE_INPUT 2 +#define IO_CONSOLE_OUTPUT 3 + +struct _dev { + unsigned char flags; /* auto-search and auto-boot */ + unsigned char bus_convert[MAX_BUS_CONVERTERS]; + unsigned char pm; /* fixed field of HPA */ + unsigned int layer[MAX_LAYERS]; /* device dependent layers */ + unsigned int hpa; /* device HPA */ + unsigned int spa; /* device SPA */ + unsigned int *iodc_io; /* address of ENTRY_IO in mem */ + unsigned int class; /* device class */ +}; + +/* + * Register defintions + */ +#define gr0 %r0 /* always ZERO */ +#define gr1 %r1 /* ADDIL results only */ +#define gr2 %r2 /* return address */ +#define gr3 %r3 /* scratch registers */ +#define gr4 %r4 +#define gr5 %r5 +#define gr6 %r6 +#define gr7 %r7 +#define gr8 %r8 +#define gr9 %r9 +#define gr10 %r10 +#define gr11 %r11 +#define gr12 %r12 +#define gr13 %r13 +#define gr14 %r14 +#define gr15 %r15 +#define gr16 %r16 +#define gr17 %r17 +#define gr18 %r18 +#define gr19 %r19 /* 4th temp register */ +#define gr20 %r20 /* 3rd temp register */ +#define gr21 %r21 /* 2rd temp register */ +#define gr22 %r22 /* 1rd temp register */ +#define gr23 %r23 /* argument 3 */ +#define gr24 %r24 /* argument 2 */ +#define gr25 %r25 /* argument 1 */ +#define gr26 %r26 /* argument 0 */ +#define gr27 %r27 /* global data pointer */ +#define gr28 %r28 /* return value */ +#define gr29 %r29 /* return value, static link */ +#define gr30 %r30 /* stack pointer */ +#define gr31 %r31 /* millicode return pointer */ + +/* + * extra definitions, calling conventions + */ +#define rp gr2 /* return address */ +#define sp gr30 /* stack pointer */ +#define dp gr27 /* global data area pointer */ + +/* + * extra definitions, argument passing + */ +#define Arg0 gr26 /* pdc function to perform */ +#define Arg1 gr25 /* args to the pdc function */ +#define Arg2 gr24 +#define Arg3 gr23 + +/* + * Special Processor Registers + */ +#define SAR %cr11 /* shift amount register */ +#define IVA %cr14 /* Interruption Vector Address */ +#define EIEM %cr15 /* EIEM reg */ +#define EIR %cr23 /* EIR reg */ +#define TIMER %cr16 /* interval timer */ +#define CCR %cr10 /* coprocessor control reg. */ + +/* + * ASCII escape code + */ +#define NULL 0x00 /* soft-reset (input only) */ +#define DELP 0x03 /* C del-collapse (input only, non-std) */ +#define DELE 0x04 /* D del-to_eol (input only, non-std) */ +#define BELL 0x07 /* G bell - audio */ +#define BS 0x08 /* H back space (left arrow) */ +#define HT 0x09 /* I horizontal tab */ +#define LF 0x0a /* J line feed (down arrow) */ +#define VT 0x0b /* K vertical tab (up arrow) */ +#define FF 0x0c /* L form feed (right arrow) */ +#define RTN 0x0d /* M carrage return */ +#define CR 0x0d /* M carrage return */ + +#define INSC 0x0e /* N insert char (input only, non-std) */ +#define XON 0x11 /* Q DC1 - continue */ +#define BT 0x12 /* R reverse tab (input only, non-std) */ +#define XOFF 0x13 /* S DC3 - wait */ +#define INSE 0x16 /* V insert-expand (input only, non-std) */ +#define DELC 0x18 /* X delete char (input only, non-std) */ +#define CLRH 0x1a /* Z clear/home (input only) */ +#define ESC 0x1b /* [ escape (must call key again) */ +#define ENDL 0x1c /* \ cursor-to-eol (input only, non-std) */ +#define HOME 0x1e /* ^ cursor home (input only) */ +#define DEL 0x7f /* BS destructive backspace */
hppa-defs.h Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: test.c =================================================================== --- test.c (nonexistent) +++ test.c (revision 345) @@ -0,0 +1,47 @@ +extern int led_putnum(); +#define DELAY 900000 +extern char strobe(),putDebugChar(),print(),putnum(); +extern char foobar(); +extern char breakpoint(); + +#define TESTSTUB 1 + +main() +{ + unsigned char x; + char buf[20]; + +#if TESTIO + strobe(); + outbyte ('\n'); + outbyte ('$'); + write (2, "Enter 5 characters... ", 24); + read (0, buf, 5); + print (buf); + print ("\r\n"); + strobe (); +#endif + +#if TESTSTUB + print ("\r\nInit vectors...\r\n"); +/*** set_debug_traps(); ***/ + print ("\r\nSet a breakpoint...\r\n"); + handle_exception(); +/*** breakpoint(); ***/ +#endif + + print ("\r\nTest foobar\r\n"); + foobar(); + /* whew, we made it */ + print ("\r\nDone..."); +} + +/* + * FIXME: this is only hear so things will link. + */ +int +puts(s) + char *s; +{ + s++; +}
test.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: crt0.s =================================================================== --- crt0.s (nonexistent) +++ crt0.s (revision 345) @@ -0,0 +1,177 @@ +/* + * crt0.S -- startup file for hppa. + * rob@cygnus.com (Rob Savoye) + */ + .VERSION "0.2" + .COPYRIGHT "crt0.S for hppa" + +;sp .equ %r30 ; stack pointer +;dp .equ %r27 ; global data pointer +;arg0 .equ %r26 ; argument +;arg1 .equ %r25 ; argument or high part of double argument +;arg2 .equ %r24 ; argument +;arg3 .equ %r23 ; argument or high part of double argument + +#define IMM(a,b) ldil L%a,b ! ldo R%a(b),b +#define imm(i,t) ldil LS%i,t ! addi RS%i,t,t + + .DATA + +/**** + * FIXME: these are just a gross hack so this will assemble + ****/ +_bss_start .WORD +_bss_end .WORD +_foobar + .STRINGZ "Foo Bar...\r\n" + +;;_SYSTEM_ID .WORD +;; .EXPORT _SYSTEM_ID ; FIXME this is only so it'll + ; link + +/* + * Set up the standard spaces (sections) These definitions come + * from /lib/pcc_prefix.s. + */ + .space $TEXT$,0 + + .SUBSPA $BOOT$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=4 + .IMPORT _start + +/* + * stuff we need that's defined elsewhere. + */ + .IMPORT main, CODE + .IMPORT _bss_start, DATA + .IMPORT _bss_end, DATA + .IMPORT environ, DATA + +/* + * start -- set things up so the application will run. + * + */ + .PROC + .CALLINFO SAVE_SP, FRAME=48 + .EXPORT $START$,ENTRY +$START$ + + /* FIXME: this writes to page zero */ + ;; setup the %30 (stack pointer) with some memory + ldil L%_stack+48,%r30 + ldo R%_stack+48(%r30),%r30 ; should be %r30 (sp) but then + ; we'd kill our test program :-) + ;; we need to set %r27 (global data pointer) here too + ldil L%$global$,%r27 + ldo R%$global$(%r27),%r27 ; same problem as above + +/* + * zerobss -- zero out the bss section + */ + ; load the start of bss + ldil L%_bss_start,%r4 + ldo R%_bss_start(%r4),%r4 + + ; load the end of bss + ldil L%_bss_end,%r5 + ldo R%_bss_end(%r5),%r5 + + +bssloop + addi -1,%r5,%r5 ; decrement _bss_end + stb %r0,0(0,%r5) ; we do this by bytes for now even + ; though it's slower, it's safer + combf,= %r4,%r5, bssloop + nop + + ldi 1,%ret0 + +/* + * Call the main routine from the application to get it going. + * main (argc, argv, environ) + * We pass argv as a pointer to NULL. + */ + + bl main,%r2 + nop + + .PROCEND +/* + * _exit -- Exit from the application. Normally we cause a user trap + * to return to the ROM monitor for another run, but with + * this monitor we can't. Still, "C" wants this symbol, it + * should be here. Jumping to 0xF0000004 jumps back into the + * firmware, while writing a 5 to 0xFFFE0030 causes a reset. + */ + .EXPORT _exit, ENTRY +_exit + .PROC + .CALLINFO + .ENTRY +;; ldil L%0xf0000004,%r1 +;; bl %r1, %r2 + + ldil L'4026531844,%r19 + ldo R'4026531844(%r19),%r19 + blr %r19, %r2 + nop + + ;; This just causes a breakpoint exception +;; break 0x0e,0xa5a +;; bv,n (%rp) + nop + .EXIT + .PROCEND + + .subspa $UNWIND_START$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=56 + .export $UNWIND_START +$UNWIND_START + .subspa $UNWIND$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=64 + .subspa $UNWIND_END$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=72 + .export $UNWIND_END +$UNWIND_END + .subspa $RECOVER_START$,QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=73 + .export $RECOVER_START +$RECOVER_START + .subspa $RECOVER$,QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=80 + .subspa $RECOVER_END$,QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=88 + .export $RECOVER_END +$RECOVER_END + +; The following declarations are, by default in the data space ($PRIVATE$) + +;; .space $PRIVATE$,1 + +/* + * Here we set up the standard date sub spaces. + * _dp is for the WinBond board. + * + * Set up some room for a stack. We just grab a chunk of memory. + * We also setup some space for the global variable space, which + * must be done using the reserved name "$global$" so "C" code + * can find it. The stack grows towards the higher addresses. + */ + + .subspa $DATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=16 + .subspa $SHORTDATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=24 + .subspa $GLOBAL$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=40 + .export $global$ + .export _dp +$global$ +_dp + .subspa $SHORTBSS$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=80,ZERO + .subspa $BSS$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=82,ZERO + + .subspa $STACK$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=88,ZERO + .export _stack +_stack + .BLOCK 0x2000 + +/* + * The heap follows the stack. To use dynamic memory routines in an + * application, some space MUST be assigned to the stack. + */ + + .subspa $HEAP$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=96,ZERO + .export _heap +_heap + .end
crt0.s Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debugger.h =================================================================== --- debugger.h (nonexistent) +++ debugger.h (revision 345) @@ -0,0 +1,127 @@ +/**************************************************************************** + + THIS SOFTWARE IS NOT COPYRIGHTED + + HP offers the following for use in the public domain. HP makes no + warranty with regard to the software or it's performance and the + user accepts the software "AS IS" with all faults. + + HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD + TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +****************************************************************************/ + + /* Debugger register array offets */ + +#define R_gr0 0 +#define R_gr1 4 +#define R_gr2 8 +#define R_gr3 12 +#define R_gr4 16 +#define R_gr5 20 +#define R_gr6 24 +#define R_gr7 28 +#define R_gr8 32 +#define R_gr9 36 +#define R_gr10 40 +#define R_gr11 44 +#define R_gr12 48 +#define R_gr13 52 +#define R_gr14 56 +#define R_gr15 60 +#define R_gr16 64 +#define R_gr17 68 +#define R_gr18 72 +#define R_gr19 76 +#define R_gr20 80 +#define R_gr21 84 +#define R_gr22 88 +#define R_gr23 92 +#define R_gr24 96 +#define R_gr25 100 +#define R_gr26 104 +#define R_gr27 108 +#define R_gr28 112 +#define R_gr29 116 +#define R_gr30 120 +#define R_gr31 124 + +#define R_sr0 128 +#define R_sr1 132 +#define R_sr2 136 +#define R_sr3 140 +#define R_sr4 144 +#define R_sr5 148 +#define R_sr6 152 +#define R_sr7 156 + +#define R_cr0 160 +#define R_cr1 164 +#define R_cr2 168 +#define R_cr3 172 +#define R_cr4 176 +#define R_cr5 180 +#define R_cr6 184 +#define R_cr7 188 +#define R_cr8 192 +#define R_cr9 196 +#define R_cr10 200 +#define R_cr11 204 +#define R_cr12 208 +#define R_cr13 212 +#define R_cr14 216 +#define R_cr15 220 +#define R_cr16 224 +#define R_cr17H 228 +#define R_cr18H 232 +#define R_cr19 236 +#define R_cr20 240 +#define R_cr21 244 +#define R_cr22 248 +#define R_cr23 252 +#define R_cr24 256 +#define R_cr25 260 +#define R_cr26 264 +#define R_cr27 268 +#define R_cr28 272 +#define R_cr29 276 +#define R_cr30 280 +#define R_cr31 284 + +#define R_cr17T 288 +#define R_cr18T 292 + +#define R_cpu0 296 + +#define R_SIZE 300 + +#define min_stack 64 + +; ----------------------------------------------------------- +; ------ ASCII control codes +; ----------------------------------------------------------- + +#define NULL 0x00 /* soft-reset (input only) */ +#define DELP 0x03 /* C del-collapse (input only, non-std) */ +#define DELE 0x04 /* D del-to_eol (input only, non-std) */ +#define BELL 0x07 /* G bell - audio */ +#define BS 0x08 /* H back space (left arrow) */ +#define HT 0x09 /* I horizontal tab */ +#define LF 0x0a /* J line feed (down arrow) */ +#define VT 0x0b /* K vertical tab (up arrow) */ +#define FF 0x0c /* L form feed (right arrow) */ +#define RTN 0x0d /* M carrage return */ +#define CR 0x0d /* M carrage return */ +#define INSC 0x0e /* N insert char (input only, non-std) */ +#define XON 0x11 /* Q DC1 - continue */ +#define BT 0x12 /* R reverse tab (input only, non-std) */ +#define XOFF 0x13 /* S DC3 - wait */ +#define INSE 0x16 /* V insert-expand (input only, non-std) */ +#define DELC 0x18 /* X delete char (input only, non-std) */ +#define CLRH 0x1a /* Z clear/home (input only) */ +#define ESC 0x1b /* [ escape (must call key again) */ +#define ENDL 0x1c /* \ cursor-to-eol (input only, non-std) */ +#define HOME 0x1e /* ^ cursor home (input only) */ +#define DEL 0x7f /* BS destructive backspace */ +
debugger.h Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: iva_table.h =================================================================== --- iva_table.h (nonexistent) +++ iva_table.h (revision 345) @@ -0,0 +1,164 @@ +/**************************************************************************** + + THIS SOFTWARE IS NOT COPYRIGHTED + + HP offers the following for use in the public domain. HP makes no + warranty with regard to the software or it's performance and the + user accepts the software "AS IS" with all faults. + + HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD + TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +****************************************************************************/ + + /* Interrupt Vector Table entry macros */ + +#define cstring(Len,String) .byte Len !\ + .string String + +#define cstringz(Len,String) .byte Len !\ + .stringz String + +AdvancePCOQ .macro + mtctl %r0,%pcoq ; throw away iiaoq head pointer, tail->head + mfctl %pcoq,%r1 ; get tail pointer + mtctl %r1,%pcoq ; insert tail pointer + ldo 4(%r1),%r1 ; advance tail pointer + mtctl %r1,%pcoq ; insert new tail pointer, former tail->head + .endm + +#ifdef PRINTSTRING_LED +PrintString .macro NString,Num + bl put_led,%mrp + ldi Num+0xa0,%arg2 + addil L%NString-$global$,%dp + bl puts,%rp + ldo R%NString-$global$(%r1),%arg0 + b,n . + nop + .endm +#endif + +#ifdef HALT + +PrintString .macro NString,Num + bl,n save_state,%r25 + nop + bl print_intr,%rp + ldi NString-Str01,%arg0 + bl print_state,%rp + nop + b,n halt + nop + .endm + +#endif + +#ifdef RECOVER + +PrintString .macro NString,Num + bl,n save_state,%r25 + nop + bl print_intr,%rp + ldi NString-Str01,%arg0 + bl print_state,%rp + nop + b,n recover + nop + .endm + +#endif + +PrintString .macro NString,Num + bl,n save_state,%r25 + nop + bl print_intr,%rp + ldi NString-Str01,%arg0 +#ifdef FULL_REPORT + bl print_state,%rp +#else + nop +#endif + nop + b restore_to_STUB + ldi Num,%r1 + .endm + + + /* IVA register array offets */ + +#define R_sr0 0 +#define R_sr1 4 +#define R_sr2 8 +#define R_sr3 12 +#define R_sr4 16 +#define R_sr5 20 +#define R_sr6 24 +#define R_sr7 28 + +#define R_gr0 32 +#define R_gr1 36 +#define R_gr2 40 +#define R_gr3 44 +#define R_gr4 48 +#define R_gr5 52 +#define R_gr6 56 +#define R_gr7 60 +#define R_gr8 64 +#define R_gr9 68 +#define R_gr10 72 +#define R_gr11 76 +#define R_gr12 80 +#define R_gr13 84 +#define R_gr14 88 +#define R_gr15 92 +#define R_gr16 96 +#define R_gr17 100 +#define R_gr18 104 +#define R_gr19 108 +#define R_gr20 112 +#define R_gr21 116 +#define R_gr22 120 +#define R_gr23 124 +#define R_gr24 128 +#define R_gr25 132 +#define R_gr26 136 +#define R_gr27 140 +#define R_gr28 144 +#define R_gr29 148 +#define R_gr30 152 +#define R_gr31 156 + +#define R_rctr 160 +#define R_cpu0 164 +#define R_pidr1 168 +#define R_pidr2 172 +#define R_ccr 176 +#define R_sar 180 +#define R_pidr3 184 +#define R_pidr4 188 +#define R_iva 192 +#define R_eiem 196 + +#define R_itmr 200 +#define R_pcsqH 204 +#define R_pcoqH 208 +#define R_iir 212 +#define R_pcsqT 216 +#define R_pcoqT 220 +#define R_isr 224 +#define R_ior 228 +#define R_ipsw 232 +#define R_eirr 236 + +#define R_tr0 240 +#define R_tr1 244 +#define R_tr2 248 +#define R_tr3 252 +#define R_tr4 256 +#define R_tr5 260 +#define R_tr6 264 +#define R_tr7 268 + +#define R_SIZE 272
iva_table.h Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: aclocal.m4 =================================================================== --- aclocal.m4 (nonexistent) +++ aclocal.m4 (revision 345) @@ -0,0 +1,344 @@ +# generated automatically by aclocal 1.9.5 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 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. + +# 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 +# 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 7 + +# 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]) +AC_SUBST([$1_FALSE]) +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 +# 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 8 + +# 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], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + 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 + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 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 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; 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. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /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 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_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.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 +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +m4_include([../acinclude.m4]) Index: pa_stub.c =================================================================== --- pa_stub.c (nonexistent) +++ pa_stub.c (revision 345) @@ -0,0 +1,698 @@ +/* -*-C-*- +******************************************************************************* +* +* File: pa_stub.c +* RCS: $Header: /cvs/src/src/libgloss/hp74x/pa_stub.c,v 1.1 2000/03/17 22:48:50 ranjith Exp $ +* Description: main routines for PA RISC monitor stub +* Author: Robert Quist +* Created: Mon Nov 1 10:00:36 1993 +* Modified: Fri Nov 12 15:14:23 1993 (Robert Quist) quist@hpfcrdq +* Language: C +* Package: N/A +* Status: Experimental (Do Not Distribute) +* +******************************************************************************* +*/ + +/**************************************************************************** + + THIS SOFTWARE IS NOT COPYRIGHTED + + HP offers the following for use in the public domain. HP makes no + warranty with regard to the software or it's performance and the + user accepts the software "AS IS" with all faults. + + HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD + TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +****************************************************************************/ + +/**************************************************************************** + * + * Description: low level support for gdb debugger. $ + * + * Considerations: only works on target hardware $ + * + * NOTES: See Below $ + * + * To enable debugger support, two things need to happen. + * + * One, a call to set_debug_traps() is necessary in order to allow + * any breakpoints or error conditions to be properly intercepted and + * reported to gdb. + * + * Two, a breakpoint needs to be generated to begin communication. + * This is most easily accomplished by a call to breakpoint(). + * breakpoint() simulates a breakpoint + + + ************* + * + * The following gdb commands are supported: + * + * command function Return value + * + * g return the value of the CPU registers hex data or ENN + * G set the value of the CPU registers OK or ENN + * + * mAA..AA,LLLL Read LLLL bytes at address AA..AA hex data or ENN + * MAA..AA,LLLL: Write LLLL bytes at address AA.AA OK or ENN + * + * c Resume at current address SNN ( signal NN) + * cAA..AA Continue at address AA..AA SNN + * + * s Step one instruction SNN + * sAA..AA Step one instruction from AA..AA SNN + * + * k kill + * + * ? What was the last sigval ? SNN (signal NN) + * + * bBB..BB Set baud rate to BB..BB OK or BNN, then sets + * baud rate + * + + ************ + * All commands and responses are sent with a packet which includes a + * checksum. A packet consists of : + * + * $#. + * + * where + * :: + * :: < two hex digits computed as modulo 256 sum of > + * + * When a packet is received, it is first acknowledged with either '+' or '-'. + * '+' indicates a successful transfer. '-' indicates a failed transfer. + * + * Example: + * + * Host: Reply: + * $m0,10#2a +$00010203040506070809101112131415#42 + * + ****************************************************************************/ +#include +#include "hppa-defs.h" + +/************************************************************************ + * + * external low-level support + */ +#define OPT_PDC_CACHE 5 +#define OPT_PDC_ADD_VALID 12 +#define PGZ_MEM_PDC 0x0388 /* location of PDC_ENTRY in memory */ +#define CALL_PDC (*(int (*)())((int *)(*((int *)PGZ_MEM_PDC)))) + +extern putDebugChar(); /* write a single character */ +extern getDebugChar(); /* read and return a single char */ +extern FICE(); /* flush i cache entry */ +extern INLINE_BREAK(); /* break for user call */ + +#define RADDR_ALIGN(s,r) (s = ((unsigned int *) ((((int) r ) + 7 ) & 0xFFFFFFF8))) + +/************************************************************************/ +/* BUFMAX defines the maximum number of characters in inbound/outbound buffers*/ +/* at least NUMREGBYTES*2 are needed for register packets */ + +#define BUFMAX 2048 + +#define NUMGPRS 32 +#define NUMSRS 8 +#define NUMCRS 32 +#define NUMSPCLS 3 +#define NUMFPRS 32 + +#define NUMGPRBYTES 4 +#define NUMSRBYTES 4 +#define NUMCRBYTES 4 +#define NUMSPCLBYTES 4 +#define NUMFPRBYTES 8 + +/* Number of bytes of registers. */ +#define NUMREGBYTES \ + ( (NUMGPRS * NUMGPRBYTES) \ + + (NUMSRS * NUMSRBYTES) \ + + (NUMCRS * NUMCRBYTES) \ + + (NUMSPCLS * NUMSPCLBYTES) \ + + (NUMFPRS * NUMFPRBYTES) \ + ) + + +enum regnames {GR0, GR1, GR2, GR3, GR4, GR5, GR6, GR7, + GR8, GR9, GR10, GR11, GR12, GR13, GR14, GR15, + GR16, GR17, GR18, GR19, GR20, GR21, GR22, GR23, + GR24, GR25, GR26, GR27, GR28, GR29, GR30, GR31, + + SR0, SR1, SR2, SR3, SR4, SR5, SR6, SR7, + + CR0, CR1, CR2, CR3, CR4, CR5, CR6, CR7, + CR8, CR9, CR10, CR11, CR12, CR13, CR14, CR15, + CR16, CR17H,CR18H,CR19, CR20, CR21, CR22, CR23, + CR24, CR25, CR26, CR27, CR28, CR29, CR30, CR31, + + CR17T,CR18T,CPUD0 }; + +enum fregnames {FPR0, FPR1, FPR2, FPR3, FPR4, FPR5, FPR6, FPR7, + FPR8, FPR9, FPR10, FPR11, FPR12, FPR13, FPR14, FPR15, + FPR16, FPR17, FPR18, FPR19, FPR20, FPR21, FPR22, FPR23, + FPR24, FPR25, FPR26, FPR27, FPR28, FPR29, FPR30, FPR31 }; + +#define PC CR18H +#define NPC CR18T +#define SP GR30 + +struct registers { + int intregs[NUMGPRS + NUMSRS + NUMCRS + NUMSPCLS]; + int fpregs [NUMFPRS * 2]; + }; +/* Global Variables */ + +static int initialized = 0; /* !0 means we've been initialized */ +static unsigned char hexchars[]="0123456789abcdef"; +static unsigned char remcomInBuffer[BUFMAX]; +static unsigned char remcomOutBuffer[BUFMAX]; +static unsigned int i_cache_params[6]; + +/* This table contains the mapping between PA hardware exception + types, and signals, which are primarily what GDB understands. It also + indicates which hardware traps we need to commandeer when initializing + the stub. + + The only two currently used are Recovery counter (single stepping) + and Break trap ( break points ). +*/ + +static struct hard_trap_info +{ + unsigned char tt; /* Trap number for PA-RISC */ + unsigned char signo; /* Signal that we map this trap into */ +} hard_trap_info[] = { +/* 1 High priority machine check */ +/* 2 Power failure interrupt*/ +/* 3 Recovery counter -- init */ +/* 4 External interrupt */ +/* 5 Low priority machine check */ + {6, SIGSEGV}, /* Instruction TLB miss/page fault */ + {7, SIGSEGV}, /* Memory protection */ + {8, SIGILL}, /* Illegal instruction */ + {9, SIGTRAP}, /* Break instruction -- init */ + {10,SIGILL}, /* Privileged instruction */ + {11,SIGILL}, /* Privileged register */ + {12,SIGUSR1}, /* Overflow */ + {13,SIGUSR2}, /* Conditional */ + {14,SIGEMT}, /* Assist Exception */ + {15,SIGSEGV}, /* Data TLB miss/page fault */ + {16,SIGSEGV}, /* Non-access Instruction TLB miss */ + {17,SIGSEGV}, /* Non-access Data TLB miss/page fault */ + {18,SIGSEGV}, /* Data memory protection/ unaligned data reference */ + {19,SIGTRAP}, /* Data memory break */ + {20,SIGSEGV}, /* TLB dirty bit */ + {21,SIGSEGV}, /* Page reference */ + {22,SIGEMT}, /* Assist emulation */ + {23,SIGILL}, /* Higher-privilege */ + {24,SIGILL}, /* Lower-privilege */ + {25,SIGTRAP}, /* Taken branch */ + {0, 0} /* Must be last */ +}; + +/* Functions */ +/*========================================================================== */ + +/* Convert ch from a hex digit to an int */ + +static int +hex(ch) + unsigned char ch; +{ + if (ch >= 'a' && ch <= 'f') + return ch-'a'+10; + if (ch >= '0' && ch <= '9') + return ch-'0'; + if (ch >= 'A' && ch <= 'F') + return ch-'A'+10; + return -1; +} + +/* scan for the sequence $# */ + +static void +getpacket(buffer) + char *buffer; +{ + unsigned char checksum; + unsigned char xmitcsum; + int i; + int count; + unsigned char ch; + + do + { + /* wait around for the start character, ignore all other characters */ + strobe(); + while ((ch = getDebugChar()) != '$') ; + + checksum = 0; + xmitcsum = -1; + + count = 0; + + /* now, read until a # or end of buffer is found */ + while (count < BUFMAX) + { + ch = getDebugChar(); + if (ch == '#') + break; + checksum = checksum + ch; + buffer[count] = ch; + count = count + 1; + } + + if (count >= BUFMAX) + continue; + + buffer[count] = 0; + + if (ch == '#') + { + xmitcsum = hex(getDebugChar()) << 4; + xmitcsum |= hex(getDebugChar()); + +#if TESTING + /* Humans shouldn't have to figure out checksums to type to it. */ + putDebugChar ('+'); + return; +#endif + if (checksum != xmitcsum) + putDebugChar('-'); /* failed checksum */ + else + { + putDebugChar('+'); /* successful transfer */ + /* if a sequence char is present, reply the sequence ID */ + if (buffer[2] == ':') + { + putDebugChar(buffer[0]); + putDebugChar(buffer[1]); + /* remove sequence chars from buffer */ + count = strlen(buffer); + for (i=3; i <= count; i++) + buffer[i-3] = buffer[i]; + } + } + } + } + while (checksum != xmitcsum); +} + +/* send the packet in buffer. */ + +static void +putpacket(buffer) + unsigned char *buffer; +{ + unsigned char checksum; + int count; + unsigned char ch; + + /* $#. */ + + do + { + putDebugChar('$'); + checksum = 0; + count = 0; + + while (ch = buffer[count]) + { + if (! putDebugChar(ch)) + return; + checksum += ch; + count += 1; + } + + putDebugChar('#'); + putDebugChar(hexchars[checksum >> 4]); + putDebugChar(hexchars[checksum & 0xf]); + } while (getDebugChar() != '+'); +} + +/* Convert the memory pointed to by mem into hex, placing result in buf. + * Return a pointer to the last char put in buf (null), in case of mem fault, + * return 0. + * If MAY_FAULT is non-zero, then we will handle memory faults by returning + * a 0, else treat a fault like any other fault in the stub. + */ + +static unsigned char * +mem2hex(mem, buf, count, may_fault) + unsigned char *mem; + unsigned char *buf; + int count; + int may_fault; +{ + unsigned char ch; + int check_addr, + new_addr; + + check_addr = 0; + + while (count-- > 0) + { + if (may_fault) + { new_addr = ((int) (mem+3)) & 0xFFFFFFF8; + if (new_addr != check_addr) + { check_addr = new_addr; + if (pdc_call(OPT_PDC_ADD_VALID,0,check_addr)) return 0; + } + } + ch = *mem++; + *buf++ = hexchars[ch >> 4]; + *buf++ = hexchars[ch & 0xf]; + } + + *buf = 0; + + return buf; +} + +/* convert the hex array pointed to by buf into binary to be placed in mem + * return a pointer to the character AFTER the last byte written */ + +static unsigned char * +hex2mem(buf, mem, count, may_fault) + unsigned char *buf; + unsigned char *mem; + int count; + int may_fault; +{ + int i; + unsigned int ch; + int check_addr, + new_addr; + + check_addr = 0; + + for (i=0; itt && ht->signo; ht++) + if (ht->tt == tt) + return ht->signo; + + return SIGHUP; /* default for things we don't know about */ +} + +/* + * While we find nice hex chars, build an int. + * Return number of chars processed. + */ + +static int +hexToInt(ptr, intValue) + unsigned char **ptr; + int *intValue; +{ + int numChars = 0; + int hexValue; + + *intValue = 0; + + while (**ptr) + { + hexValue = hex(**ptr); + if (hexValue < 0) + break; + + *intValue = (*intValue << 4) | hexValue; + numChars ++; + + (*ptr)++; + } + + return (numChars); +} + +void +flush_i_cache() + +{ + unsigned int addr,count,loop; + + if (i_cache_params[0] <= 0) return; + + addr = i_cache_params[2]; + for (count = 0; count < i_cache_params[4]; count++) + { for ( loop = 0; loop < i_cache_params[5]; loop++) FICE(addr); + addr = addr + i_cache_params[3]; + } +} + +/* + * This function does all command procesing for interfacing to gdb. + return of 0 will execute DEBUG_GO (continue) + return of 1 will execute DEBUG_SS (single step) + */ + +int +handle_exception (registers,tt) + unsigned long *registers; + int tt; /* Trap type */ +{ + int sigval; + int addr; + int length; + unsigned char *ptr; + + /* reply to host that an exception has occurred */ + sigval = computeSignal(tt); + ptr = remcomOutBuffer; + + *ptr++ = 'T'; + *ptr++ = hexchars[sigval >> 4]; + *ptr++ = hexchars[sigval & 0xf]; + +/* could be lots of stuff here like PC and SP registers */ + + *ptr++ = 0; + + putpacket(remcomOutBuffer); + + while (1) + { + remcomOutBuffer[0] = 0; + + getpacket(remcomInBuffer); + switch (remcomInBuffer[0]) + { + case '?': + remcomOutBuffer[0] = 'S'; + remcomOutBuffer[1] = hexchars[sigval >> 4]; + remcomOutBuffer[2] = hexchars[sigval & 0xf]; + remcomOutBuffer[3] = 0; + break; + + case 'd': + /* toggle debug flag */ + led_putnum (16); + break; + + case 'g': /* return the value of the CPU registers */ + { + ptr = remcomOutBuffer; + /* GR0..GR31 SR0..SR7 CR0..CR31 specials */ + ptr = mem2hex((char *)registers, ptr, NUMREGBYTES, 0); + /* need to add floating point registers */ + } + break; + + case 'G': /* set the value of the CPU registers - return OK */ + { + ptr = &remcomInBuffer[1]; + /* GR0..GR31 SR0..SR7 CR0..CR31 specials */ + hex2mem(ptr, (char *)registers, NUMREGBYTES, 0); + strcpy(remcomOutBuffer,"OK 1"); + } + break; + + case 'm': /* mAA..AA,LLLL Read LLLL bytes at address AA..AA */ + /* Try to read %x,%x. */ + + ptr = &remcomInBuffer[1]; + + if (hexToInt(&ptr, &addr) + && *ptr++ == ',' + && hexToInt(&ptr, &length)) + { + if (mem2hex((char *)addr, remcomOutBuffer, length, 1)) + break; + + strcpy (remcomOutBuffer, "E03"); + } + else + strcpy(remcomOutBuffer,"E01"); + break; + + case 'M': /* MAA..AA,LLLL: Write LLLL bytes at address AA.AA return OK */ + /* Try to read '%x,%x:'. */ + + ptr = &remcomInBuffer[1]; + + if (hexToInt(&ptr, &addr) + && *ptr++ == ',' + && hexToInt(&ptr, &length) + && *ptr++ == ':') + { + if (hex2mem(ptr, (char *)addr, length, 1)) + strcpy(remcomOutBuffer, "OK"); + else + strcpy(remcomOutBuffer, "E03"); + } + else + strcpy(remcomOutBuffer, "E02"); + break; + + case 'c': /* cAA..AA Continue at address AA..AA(optional) */ + /* try to read optional parameter, pc unchanged if no parm */ + + ptr = &remcomInBuffer[1]; + if (hexToInt(&ptr, &addr)) + { + registers[PC] = addr; + registers[NPC] = addr + 4; + } + +/* Need to flush the instruction cache here, as we may have deposited a + breakpoint, and the icache probably has no way of knowing that a data ref to + some location may have changed something that is in the instruction cache. + */ + + flush_i_cache(); + return 0; /* execute GO */ + + /* kill the program */ + case 'k' : /* do nothing */ + break; + + case 's' : /* single step */ + /* try to read optional parameter, pc unchanged if no parm */ + + ptr = &remcomInBuffer[1]; + if (hexToInt(&ptr, &addr)) + { + registers[PC] = addr; + registers[NPC] = addr + 4; + } +/* Need to flush the instruction cache here, as we may have deposited a + breakpoint, and the icache probably has no way of knowing that a data ref to + some location may have changed something that is in the instruction cache. + */ + flush_i_cache(); + return 1; /* execute Single Step */ + break; + +#if TESTING1 + case 't': /* Test feature */ + break; +#endif + case 'r': /* Reset */ + break; + +#if TESTING2 +Disabled until we can unscrew this properly + + case 'b': /* bBB... Set baud rate to BB... */ + { + int baudrate; + extern void set_timer_3(); + + ptr = &remcomInBuffer[1]; + if (!hexToInt(&ptr, &baudrate)) + { + strcpy(remcomOutBuffer,"B01"); + break; + } + + /* Convert baud rate to uart clock divider */ + switch (baudrate) + { + case 38400: + baudrate = 16; + break; + case 19200: + baudrate = 33; + break; + case 9600: + baudrate = 65; + break; + default: + strcpy(remcomOutBuffer,"B02"); + goto x1; + } + + putpacket("OK 2"); /* Ack before changing speed */ + set_timer_3(baudrate); /* Set it */ + } +x1: break; +#endif + } /* switch */ + + /* reply to the request */ + putpacket(remcomOutBuffer); + } + print ("\r\nEscaped handle_exception\r\n"); +}
pa_stub.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.