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

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/gnu-old/gdb-7.1/sim/sh
    from Rev 816 to Rev 834
    Reverse comparison

Rev 816 → Rev 834

/syscall.h File deleted
syscall.h Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: configure =================================================================== --- configure (revision 816) +++ configure (nonexistent) @@ -1,5876 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64. -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software -# Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. -as_fn_error () -{ - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 - fi - $as_echo "$as_me: error: $1" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -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= - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="Makefile.in" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='LTLIBOBJS -LIBOBJS -cgen_breaks -REPORT_BUGS_TEXI -REPORT_BUGS_TO -PKGVERSION -sim_profile -sim_trace -sim_stdio -sim_debug -sim_cflags -sim_bswap -MAINT -EGREP -GREP -CPP -CATOBJEXT -GENCAT -INSTOBJEXT -DATADIRNAME -CATALOGS -POSUB -GMSGFMT -XGETTEXT -INCINTL -LIBINTL_DEP -LIBINTL -USE_NLS -RANLIB -AR -HDEFINES -CC_FOR_BUILD -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -WERROR_CFLAGS -WARN_CFLAGS -sim_xor_endian -sim_stdcall -sim_smp -sim_reserved_bits -sim_regparm -sim_packages -sim_inline -sim_hw -sim_hw_objs -sim_hw_cflags -sim_default_model -sim_scache -sim_float -sim_hostendian -sim_endian -sim_bitsize -sim_assert -sim_alignment -sim_environment -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -with_zlib -enable_maintainer_mode -enable_sim_bswap -enable_sim_cflags -enable_sim_debug -enable_sim_stdio -enable_sim_trace -enable_sim_profile -with_pkgversion -with_bugurl -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information." - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-maintainer-mode Enable developer functionality. - --enable-sim-bswap Use Host specific BSWAP instruction. - --enable-sim-cflags=opts Extra CFLAGS for use in building simulator - --enable-sim-debug=opts Enable debugging flags - --enable-sim-stdio Specify whether to use stdio for console input/output. - --enable-sim-trace=opts Enable tracing flags - --enable-sim-profile=opts Enable profiling flags - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-zlib include zlib support (auto/yes/no) default=auto - --with-pkgversion=PKG Use PKG in the version string in place of "GDB" - --with-bugurl=URL Direct users to URL to report a bug - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.64 - -Copyright (C) 2009 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_func -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.64. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - 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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - 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=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_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=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_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 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - ac_site_file1=$CONFIG_SITE -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_config_headers="$ac_config_headers config.h:config.in" - - -# This file contains common code used by all simulators. -# -# SIM_AC_COMMON invokes AC macros used by all simulators and by the common -# directory. It is intended to be invoked before any target specific stuff. -# SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate the Makefile. -# It is intended to be invoked last. -# -# The simulator's configure.in should look like: -# -# dnl Process this file with autoconf to produce a configure script. -# sinclude(../common/aclocal.m4) -# AC_PREREQ(2.5)dnl -# AC_INIT(Makefile.in) -# -# SIM_AC_COMMON -# -# ... target specific stuff ... -# -# SIM_AC_OUTPUT - -# Include global overrides and fixes for Autoconf. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -sim_inline="-DDEFAULT_INLINE=0" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# intl sister-directory configuration rules. -# - -# The idea behind this macro is that there's no need to repeat all the -# autoconf probes done by the intl directory - it's already done them -# for us. In fact, there's no need even to look at the cache for the -# answers. All we need to do is nab a few pieces of information. -# The intl directory is set up to make this easy, by generating a -# small file which can be sourced as a shell script; then we produce -# the necessary substitutions and definitions for this directory. - - - -# Autoconf M4 include file defining utility macros for complex Canadian -# cross builds. - - - - - - - - - -#### -# _NCN_TOOL_PREFIXES: Some stuff that oughtta be done in AC_CANONICAL_SYSTEM -# or AC_INIT. -# These demand that AC_CANONICAL_SYSTEM be called beforehand. - -#### -# NCN_STRICT_CHECK_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path]) -# Like plain AC_CHECK_TOOLS, but require prefix if build!=host. - - -#### -# NCN_STRICT_CHECK_TARGET_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path]) -# Like CVS Autoconf AC_CHECK_TARGET_TOOLS, but require prefix if build!=target. - - - -# Backported from Autoconf 2.5x; can go away when and if -# we switch. Put the OS path separator in $PATH_SEPARATOR. - - - - -# ACX_HAVE_GCC_FOR_TARGET -# Check if the variable GCC_FOR_TARGET really points to a GCC binary. - - -# ACX_CHECK_INSTALLED_TARGET_TOOL(VAR, PROG) -# Searching for installed target binutils. We need to take extra care, -# else we may find the wrong assembler, linker, etc., and lose. -# -# First try --with-build-time-tools, if specified. -# -# For build != host, we ask the installed GCC for the name of the tool it -# uses, and accept it if it is an absolute path. This is because the -# only good choice for a compiler is the same GCC version that is being -# installed (or we couldn't make target libraries), and we assume that -# on the host system we'll have not only the same GCC version, but also -# the same binutils version. -# -# For build == host, search the same directories that the installed -# compiler will search. We used to do this for the assembler, linker, -# and nm only; for simplicity of configuration, however, we extend this -# criterion to tools (such as ar and ranlib) that are never invoked by -# the compiler, to avoid mismatches. -# -# Also note we have to check MD_EXEC_PREFIX before checking the user's path -# if build == target. This makes the most sense only when bootstrapping, -# but we also do so when build != host. In this case, we hope that the -# build and host systems will have similar contents of MD_EXEC_PREFIX. -# -# If we do not find a suitable binary, then try the user's path. - - -### -# AC_PROG_CPP_WERROR -# Used for autoconf 2.5x to force AC_PREPROC_IFELSE to reject code which -# triggers warnings from the preprocessor. Will be in autoconf 2.58. -# For now, using this also overrides header checks to use only the -# preprocessor (matches 2.13 behavior; matching 2.58's behavior is a -# bit harder from here). -# Eventually autoconf will default to checking headers with the compiler -# instead, and we'll have to do this differently. - -# AC_PROG_CPP_WERROR - -# Test for GNAT. -# We require the gnatbind program, and a compiler driver that -# understands Ada. We use the user's CC setting, already found, -# and possibly add $1 to the command-line parameters. -# -# Sets the shell variable have_gnat to yes or no as appropriate, and -# substitutes GNATBIND and GNATMAKE. - - - - - - - - - - - - - - - - - - - - - - - - - -# Bugs in autoconf 2.59 break the call to SIM_AC_COMMON, hack around -# it by inlining the macro's contents. -# This file contains common code used by all simulators. -# -# common.m4 invokes AC macros used by all simulators and by the common -# directory. It is intended to be included before any target specific -# stuff. SIM_AC_OUTPUT is a cover function to AC_OUTPUT to generate -# the Makefile. It is intended to be invoked last. -# -# The simulator's configure.in should look like: -# -# dnl Process this file with autoconf to produce a configure script. -# AC_PREREQ(2.5)dnl -# AC_INIT(Makefile.in) -# AC_CONFIG_HEADER(config.h:config.in) -# -# sinclude(../common/aclocal.m4) -# sinclude(../common/common.m4) -# -# ... target specific stuff ... - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - for ac_t in install-sh install.sh shtool; do - if test -f "$ac_dir/$ac_t"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/$ac_t -c" - break 2 - fi - done -done -if test -z "$ac_aux_dir"; then - as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if test "${ac_cv_build+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if test "${ac_cv_host+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if test "${ac_cv_target+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -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 -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_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_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_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_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "no acceptable C compiler found in \$PATH -See \`config.log' for more details." "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - rm -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -if test -z "$ac_file"; then : - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ as_fn_set_status 77 -as_fn_error "C compiler cannot create executables -See \`config.log' for more details." "$LINENO" 5; }; } -fi -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." "$LINENO" 5; } -fi -rm -f conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if test "${ac_cv_objext+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of object files: cannot compile -See \`config.log' for more details." "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -# Put a plausible default for CC_FOR_BUILD in Makefile. -if test "x$cross_compiling" = "xno"; then - CC_FOR_BUILD='$(CC)' -else - CC_FOR_BUILD=gcc -fi - - - - -AR=${AR-ar} - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - -ALL_LINGUAS= -# If we haven't got the data from the intl directory, -# assume NLS is disabled. -USE_NLS=no -LIBINTL= -LIBINTL_DEP= -INCINTL= -XGETTEXT= -GMSGFMT= -POSUB= - -if test -f ../../intl/config.intl; then - . ../../intl/config.intl -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } -if test x"$USE_NLS" != xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define ENABLE_NLS 1" >>confdefs.h - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 -$as_echo_n "checking for catalogs to be installed... " >&6; } - # Look for .po and .gmo files in the source directory. - CATALOGS= - XLINGUAS= - for cat in $srcdir/po/*.gmo $srcdir/po/*.po; do - # If there aren't any .gmo files the shell will give us the - # literal string "../path/to/srcdir/po/*.gmo" which has to be - # weeded out. - case "$cat" in *\**) - continue;; - esac - # The quadruple backslash is collapsed to a double backslash - # by the backticks, then collapsed again by the double quotes, - # leaving us with one backslash in the sed expression (right - # before the dot that mustn't act as a wildcard). - cat=`echo $cat | sed -e "s!$srcdir/po/!!" -e "s!\\\\.po!.gmo!"` - lang=`echo $cat | sed -e "s!\\\\.gmo!!"` - # The user is allowed to set LINGUAS to a list of languages to - # install catalogs for. If it's empty that means "all of them." - if test "x$LINGUAS" = x; then - CATALOGS="$CATALOGS $cat" - XLINGUAS="$XLINGUAS $lang" - else - case "$LINGUAS" in *$lang*) - CATALOGS="$CATALOGS $cat" - XLINGUAS="$XLINGUAS $lang" - ;; - esac - fi - done - LINGUAS="$XLINGUAS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 -$as_echo "$LINGUAS" >&6; } - - - DATADIRNAME=share - - INSTOBJEXT=.mo - - GENCAT=gencat - - CATOBJEXT=.gmo - -fi - -# Check for common headers. -# FIXME: Seems to me this can cause problems for i386-windows hosts. -# At one point there were hardcoded AC_DEFINE's if ${host} = i386-*-windows*. - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." "$LINENO" 5; } -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 - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if test "${ac_cv_path_GREP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in stdlib.h string.h strings.h unistd.h time.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in sys/time.h sys/resource.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in fcntl.h fpu_control.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in dlfcn.h errno.h sys/stat.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_func in getrusage time sigaction __setfpucw -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -# Check for socket libraries -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bind in -lsocket" >&5 -$as_echo_n "checking for bind in -lsocket... " >&6; } -if test "${ac_cv_lib_socket_bind+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char bind (); -int -main () -{ -return bind (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_socket_bind=yes -else - ac_cv_lib_socket_bind=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_bind" >&5 -$as_echo "$ac_cv_lib_socket_bind" >&6; } -if test "x$ac_cv_lib_socket_bind" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSOCKET 1 -_ACEOF - - LIBS="-lsocket $LIBS" - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } -if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_nsl_gethostbyname=yes -else - ac_cv_lib_nsl_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBNSL 1 -_ACEOF - - LIBS="-lnsl $LIBS" - -fi - - -# BFD conditionally uses zlib, so we must link it in if libbfd does, by -# using the same condition. - - # See if the user specified whether he wants zlib support or not. - -# Check whether --with-zlib was given. -if test "${with_zlib+set}" = set; then : - withval=$with_zlib; -else - with_zlib=auto -fi - - - if test "$with_zlib" != "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5 -$as_echo_n "checking for library containing zlibVersion... " >&6; } -if test "${ac_cv_search_zlibVersion+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char zlibVersion (); -int -main () -{ -return zlibVersion (); - ; - return 0; -} -_ACEOF -for ac_lib in '' z; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_zlibVersion=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if test "${ac_cv_search_zlibVersion+set}" = set; then : - break -fi -done -if test "${ac_cv_search_zlibVersion+set}" = set; then : - -else - ac_cv_search_zlibVersion=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_zlibVersion" >&5 -$as_echo "$ac_cv_search_zlibVersion" >&6; } -ac_res=$ac_cv_search_zlibVersion -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - for ac_header in zlib.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ZLIB_H 1 -_ACEOF - -fi - -done - -fi - - if test "$with_zlib" = "yes" -a "$ac_cv_header_zlib_h" != "yes"; then - as_fn_error "zlib (libz) library was explicitly requested but not found" "$LINENO" 5 - fi - fi - - -. ${srcdir}/../../bfd/configure.host - - - -USE_MAINTAINER_MODE=no -# Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; case "${enableval}" in - yes) MAINT="" USE_MAINTAINER_MODE=yes ;; - no) MAINT="#" ;; - *) as_fn_error "\"--enable-maintainer-mode does not take a value\"" "$LINENO" 5; MAINT="#" ;; -esac -if test x"$silent" != x"yes" && test x"$MAINT" = x""; then - echo "Setting maintainer mode" 6>&1 -fi -else - MAINT="#" -fi - - - -# Check whether --enable-sim-bswap was given. -if test "${enable_sim_bswap+set}" = set; then : - enableval=$enable_sim_bswap; case "${enableval}" in - yes) sim_bswap="-DWITH_BSWAP=1 -DUSE_BSWAP=1";; - no) sim_bswap="-DWITH_BSWAP=0";; - *) as_fn_error "\"--enable-sim-bswap does not take a value\"" "$LINENO" 5; sim_bswap="";; -esac -if test x"$silent" != x"yes" && test x"$sim_bswap" != x""; then - echo "Setting bswap flags = $sim_bswap" 6>&1 -fi -else - sim_bswap="" -fi - - - -# Check whether --enable-sim-cflags was given. -if test "${enable_sim_cflags+set}" = set; then : - enableval=$enable_sim_cflags; case "${enableval}" in - yes) sim_cflags="-O2 -fomit-frame-pointer";; - trace) as_fn_error "\"Please use --enable-sim-debug instead.\"" "$LINENO" 5; sim_cflags="";; - no) sim_cflags="";; - *) sim_cflags=`echo "${enableval}" | sed -e "s/,/ /g"`;; -esac -if test x"$silent" != x"yes" && test x"$sim_cflags" != x""; then - echo "Setting sim cflags = $sim_cflags" 6>&1 -fi -else - sim_cflags="" -fi - - - -# Check whether --enable-sim-debug was given. -if test "${enable_sim_debug+set}" = set; then : - enableval=$enable_sim_debug; case "${enableval}" in - yes) sim_debug="-DDEBUG=7 -DWITH_DEBUG=7";; - no) sim_debug="-DDEBUG=0 -DWITH_DEBUG=0";; - *) sim_debug="-DDEBUG='(${enableval})' -DWITH_DEBUG='(${enableval})'";; -esac -if test x"$silent" != x"yes" && test x"$sim_debug" != x""; then - echo "Setting sim debug = $sim_debug" 6>&1 -fi -else - sim_debug="" -fi - - - -# Check whether --enable-sim-stdio was given. -if test "${enable_sim_stdio+set}" = set; then : - enableval=$enable_sim_stdio; case "${enableval}" in - yes) sim_stdio="-DWITH_STDIO=DO_USE_STDIO";; - no) sim_stdio="-DWITH_STDIO=DONT_USE_STDIO";; - *) as_fn_error "\"Unknown value $enableval passed to --enable-sim-stdio\"" "$LINENO" 5; sim_stdio="";; -esac -if test x"$silent" != x"yes" && test x"$sim_stdio" != x""; then - echo "Setting stdio flags = $sim_stdio" 6>&1 -fi -else - sim_stdio="" -fi - - - -# Check whether --enable-sim-trace was given. -if test "${enable_sim_trace+set}" = set; then : - enableval=$enable_sim_trace; case "${enableval}" in - yes) sim_trace="-DTRACE=1 -DWITH_TRACE=-1";; - no) sim_trace="-DTRACE=0 -DWITH_TRACE=0";; - [-0-9]*) - sim_trace="-DTRACE='(${enableval})' -DWITH_TRACE='(${enableval})'";; - [a-z]*) - sim_trace="" - for x in `echo "$enableval" | sed -e "s/,/ /g"`; do - if test x"$sim_trace" = x; then - sim_trace="-DWITH_TRACE='(TRACE_$x" - else - sim_trace="${sim_trace}|TRACE_$x" - fi - done - sim_trace="$sim_trace)'" ;; -esac -if test x"$silent" != x"yes" && test x"$sim_trace" != x""; then - echo "Setting sim trace = $sim_trace" 6>&1 -fi -else - sim_trace="" -fi - - - -# Check whether --enable-sim-profile was given. -if test "${enable_sim_profile+set}" = set; then : - enableval=$enable_sim_profile; case "${enableval}" in - yes) sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1";; - no) sim_profile="-DPROFILE=0 -DWITH_PROFILE=0";; - [-0-9]*) - sim_profile="-DPROFILE='(${enableval})' -DWITH_PROFILE='(${enableval})'";; - [a-z]*) - sim_profile="" - for x in `echo "$enableval" | sed -e "s/,/ /g"`; do - if test x"$sim_profile" = x; then - sim_profile="-DWITH_PROFILE='(PROFILE_$x" - else - sim_profile="${sim_profile}|PROFILE_$x" - fi - done - sim_profile="$sim_profile)'" ;; -esac -if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then - echo "Setting sim profile = $sim_profile" 6>&1 -fi -else - sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1" -fi - - - - -# Check whether --with-pkgversion was given. -if test "${with_pkgversion+set}" = set; then : - withval=$with_pkgversion; case "$withval" in - yes) as_fn_error "package version not specified" "$LINENO" 5 ;; - no) PKGVERSION= ;; - *) PKGVERSION="($withval) " ;; - esac -else - PKGVERSION="(GDB) " - -fi - - - - - -# Check whether --with-bugurl was given. -if test "${with_bugurl+set}" = set; then : - withval=$with_bugurl; case "$withval" in - yes) as_fn_error "bug URL not specified" "$LINENO" 5 ;; - no) BUGURL= - ;; - *) BUGURL="$withval" - ;; - esac -else - BUGURL="http://www.gnu.org/software/gdb/bugs/" - -fi - - case ${BUGURL} in - "") - REPORT_BUGS_TO= - REPORT_BUGS_TEXI= - ;; - *) - REPORT_BUGS_TO="<$BUGURL>" - REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`} - ;; - esac; - - - - -cat >>confdefs.h <<_ACEOF -#define PKGVERSION "$PKGVERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define REPORT_BUGS_TO "$REPORT_BUGS_TO" -_ACEOF - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if test "${ac_cv_type_signal+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_signal=int -else - ac_cv_type_signal=void -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - - - -sim_link_files= -sim_link_links= - -sim_link_links=tconfig.h -if test -f ${srcdir}/tconfig.in -then - sim_link_files=tconfig.in -else - sim_link_files=../common/tconfig.in -fi - -# targ-vals.def points to the libc macro description file. -case "${target}" in -*-*-*) TARG_VALS_DEF=../common/nltvals.def ;; -esac -sim_link_files="${sim_link_files} ${TARG_VALS_DEF}" -sim_link_links="${sim_link_links} targ-vals.def" - - -for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF - -fi - -done - - - -ac_sources="$sim_link_files" -ac_dests="$sim_link_links" -while test -n "$ac_sources"; do - set $ac_dests; ac_dest=$1; shift; ac_dests=$* - set $ac_sources; ac_source=$1; shift; ac_sources=$* - ac_config_links_1="$ac_config_links_1 $ac_dest:$ac_source" -done -ac_config_links="$ac_config_links $ac_config_links_1" - -cgen_breaks="" -if grep CGEN_MAINT $srcdir/Makefile.in >/dev/null; then -cgen_breaks="break cgen_rtx_error"; -fi - -ac_config_files="$ac_config_files Makefile.sim:Makefile.in" - -ac_config_files="$ac_config_files Make-common.sim:../common/Make-common.in" - -ac_config_files="$ac_config_files .gdbinit:../common/gdbinit.in" - -ac_config_commands="$ac_config_commands Makefile" - -ac_config_commands="$ac_config_commands stamp-h" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_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=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. -as_fn_error () -{ - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 - fi - $as_echo "$as_me: error: $1" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.64. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_links="$ac_config_links" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration links: -$config_links - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.64, - with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2009 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; - "$ac_config_links_1") CONFIG_LINKS="$CONFIG_LINKS $ac_config_links_1" ;; - "Makefile.sim") CONFIG_FILES="$CONFIG_FILES Makefile.sim:Makefile.in" ;; - "Make-common.sim") CONFIG_FILES="$CONFIG_FILES Make-common.sim:../common/Make-common.in" ;; - ".gdbinit") CONFIG_FILES="$CONFIG_FILES .gdbinit:../common/gdbinit.in" ;; - "Makefile") CONFIG_COMMANDS="$CONFIG_COMMANDS Makefile" ;; - "stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS stamp-h" ;; - - *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links - 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 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\).*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\).*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ - || as_fn_error "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove $(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 || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_t=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_t"; then - break - elif $ac_last_try; then - as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out" && rm -f "$tmp/out";; - *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; - esac \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" - } >"$tmp/config.h" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$tmp/config.h" "$ac_file" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error "could not create -" "$LINENO" 5 - fi - ;; - :L) - # - # CONFIG_LINK - # - - if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then - : - else - # Prefer the file from the source tree if names are identical. - if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then - ac_source=$srcdir/$ac_source - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 -$as_echo "$as_me: linking $ac_source to $ac_file" >&6;} - - if test ! -r "$ac_source"; then - as_fn_error "$ac_source: file not found" "$LINENO" 5 - fi - rm -f "$ac_file" - - # Try a relative symlink, then a hard link, then a copy. - case $srcdir in - [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; - *) ac_rel_source=$ac_top_build_prefix$ac_source ;; - esac - ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || - ln "$ac_source" "$ac_file" 2>/dev/null || - cp -p "$ac_source" "$ac_file" || - as_fn_error "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 - fi - ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "Makefile":C) echo "Merging Makefile.sim+Make-common.sim into Makefile ..." - rm -f Makesim1.tmp Makesim2.tmp Makefile - sed -n -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ p' Makesim1.tmp - sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' Makesim2.tmp - sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \ - -e '/^## COMMON_POST_/ r Makesim2.tmp' \ - Makefile - rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp - ;; - "stamp-h":C) echo > stamp-h ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit $? -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - -
configure Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: Makefile.in =================================================================== --- Makefile.in (revision 816) +++ Makefile.in (nonexistent) @@ -1,44 +0,0 @@ -# Makefile template for Configure for the SH sim library. -# Copyright (C) 1990, 91, 92, 95, 96, 1997, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. -# Written by Cygnus Support. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 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, see . - -## COMMON_PRE_CONFIG_FRAG - -SIM_OBJS = interp.o table.o sim-load.o -SIM_EXTRA_LIBS = -lm -SIM_EXTRA_CLEAN = sh-clean - -## COMMON_POST_CONFIG_FRAG - -interp.o: interp.c code.c table.c ppi.c $(srcroot)/include/gdb/sim-sh.h - -code.c: gencode - ./gencode -x >code.c -# indent code.c - -table.c: gencode - ./gencode -s >table.c -# indent table.c - -ppi.c: gencode - ./gencode -p >ppi.c - -gencode: gencode.c - $(CC_FOR_BUILD) -o gencode $(srcdir)/gencode.c - -sh-clean: - rm -f gencode code.c table.c Index: interp.c =================================================================== --- interp.c (revision 816) +++ interp.c (nonexistent) @@ -1,2789 +0,0 @@ -/* Simulator for the Renesas (formerly Hitachi) / SuperH Inc. SH architecture. - - Written by Steve Chamberlain of Cygnus Support. - sac@cygnus.com - - This file is part of SH sim - - - THIS SOFTWARE IS NOT COPYRIGHTED - - Cygnus offers the following for use in the public domain. Cygnus - makes no warranty with regard to the software or it's performance - and the user accepts the software "AS IS" with all faults. - - CYGNUS 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. - -*/ - -#include "config.h" - -#include -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_MMAP -#include -# ifndef MAP_FAILED -# define MAP_FAILED -1 -# endif -# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON) -# define MAP_ANONYMOUS MAP_ANON -# endif -#endif - -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif - -#ifdef HAVE_STDLIB_H -#include -#endif - -#ifdef HAVE_SYS_STAT_H -#include -#endif - -#include "bfd.h" -#include "gdb/callback.h" -#include "gdb/remote-sim.h" -#include "gdb/sim-sh.h" - -/* This file is local - if newlib changes, then so should this. */ -#include "syscall.h" - -#include - -#ifdef _WIN32 -#include /* Needed for _isnan() */ -#define isnan _isnan -#endif - -#ifndef SIGBUS -#define SIGBUS SIGSEGV -#endif - -#ifndef SIGQUIT -#define SIGQUIT SIGTERM -#endif - -#ifndef SIGTRAP -#define SIGTRAP 5 -#endif - -extern unsigned short sh_jump_table[], sh_dsp_table[0x1000], ppi_table[]; - -int sim_write (SIM_DESC sd, SIM_ADDR addr, unsigned char *buffer, int size); - -#define O_RECOMPILE 85 -#define DEFINE_TABLE -#define DISASSEMBLER_TABLE - -/* Define the rate at which the simulator should poll the host - for a quit. */ -#define POLL_QUIT_INTERVAL 0x60000 - -typedef struct -{ - int regs[20]; -} regstacktype; - -typedef union -{ - - struct - { - int regs[16]; - int pc; - - /* System registers. For sh-dsp this also includes A0 / X0 / X1 / Y0 / Y1 - which are located in fregs, i.e. strictly speaking, these are - out-of-bounds accesses of sregs.i . This wart of the code could be - fixed by making fregs part of sregs, and including pc too - to avoid - alignment repercussions - but this would cause very onerous union / - structure nesting, which would only be managable with anonymous - unions and structs. */ - union - { - struct - { - int mach; - int macl; - int pr; - int dummy3, dummy4; - int fpul; /* A1 for sh-dsp - but only for movs etc. */ - int fpscr; /* dsr for sh-dsp */ - } named; - int i[7]; - } sregs; - - /* sh3e / sh-dsp */ - union fregs_u - { - float f[16]; - double d[8]; - int i[16]; - } - fregs[2]; - - /* Control registers; on the SH4, ldc / stc is privileged, except when - accessing gbr. */ - union - { - struct - { - int sr; - int gbr; - int vbr; - int ssr; - int spc; - int mod; - /* sh-dsp */ - int rs; - int re; - /* sh3 */ - int bank[8]; - int dbr; /* debug base register */ - int sgr; /* saved gr15 */ - int ldst; /* load/store flag (boolean) */ - int tbr; - int ibcr; /* sh2a bank control register */ - int ibnr; /* sh2a bank number register */ - } named; - int i[16]; - } cregs; - - unsigned char *insn_end; - - int ticks; - int stalls; - int memstalls; - int cycles; - int insts; - - int prevlock; - int thislock; - int exception; - - int end_of_registers; - - int msize; -#define PROFILE_FREQ 1 -#define PROFILE_SHIFT 2 - int profile; - unsigned short *profile_hist; - unsigned char *memory; - int xyram_select, xram_start, yram_start; - unsigned char *xmem; - unsigned char *ymem; - unsigned char *xmem_offset; - unsigned char *ymem_offset; - unsigned long bfd_mach; - regstacktype *regstack; - } - asregs; - int asints[40]; -} saved_state_type; - -saved_state_type saved_state; - -struct loop_bounds { unsigned char *start, *end; }; - -/* These variables are at file scope so that functions other than - sim_resume can use the fetch/store macros */ - -static int target_little_endian; -static int global_endianw, endianb; -static int target_dsp; -static int host_little_endian; -static char **prog_argv; - -static int maskw = 0; -static int maskl = 0; - -static SIM_OPEN_KIND sim_kind; -static char *myname; -static int tracing = 0; - - -/* Short hand definitions of the registers */ - -#define SBIT(x) ((x)&sbit) -#define R0 saved_state.asregs.regs[0] -#define Rn saved_state.asregs.regs[n] -#define Rm saved_state.asregs.regs[m] -#define UR0 (unsigned int) (saved_state.asregs.regs[0]) -#define UR (unsigned int) R -#define UR (unsigned int) R -#define SR0 saved_state.asregs.regs[0] -#define CREG(n) (saved_state.asregs.cregs.i[(n)]) -#define GBR saved_state.asregs.cregs.named.gbr -#define VBR saved_state.asregs.cregs.named.vbr -#define DBR saved_state.asregs.cregs.named.dbr -#define TBR saved_state.asregs.cregs.named.tbr -#define IBCR saved_state.asregs.cregs.named.ibcr -#define IBNR saved_state.asregs.cregs.named.ibnr -#define BANKN (saved_state.asregs.cregs.named.ibnr & 0x1ff) -#define ME ((saved_state.asregs.cregs.named.ibnr >> 14) & 0x3) -#define SSR saved_state.asregs.cregs.named.ssr -#define SPC saved_state.asregs.cregs.named.spc -#define SGR saved_state.asregs.cregs.named.sgr -#define SREG(n) (saved_state.asregs.sregs.i[(n)]) -#define MACH saved_state.asregs.sregs.named.mach -#define MACL saved_state.asregs.sregs.named.macl -#define PR saved_state.asregs.sregs.named.pr -#define FPUL saved_state.asregs.sregs.named.fpul - -#define PC insn_ptr - - - -/* Alternate bank of registers r0-r7 */ - -/* Note: code controling SR handles flips between BANK0 and BANK1 */ -#define Rn_BANK(n) (saved_state.asregs.cregs.named.bank[(n)]) -#define SET_Rn_BANK(n, EXP) do { saved_state.asregs.cregs.named.bank[(n)] = (EXP); } while (0) - - -/* Manipulate SR */ - -#define SR_MASK_BO (1 << 14) -#define SR_MASK_CS (1 << 13) -#define SR_MASK_DMY (1 << 11) -#define SR_MASK_DMX (1 << 10) -#define SR_MASK_M (1 << 9) -#define SR_MASK_Q (1 << 8) -#define SR_MASK_I (0xf << 4) -#define SR_MASK_S (1 << 1) -#define SR_MASK_T (1 << 0) - -#define SR_MASK_BL (1 << 28) -#define SR_MASK_RB (1 << 29) -#define SR_MASK_MD (1 << 30) -#define SR_MASK_RC 0x0fff0000 -#define SR_RC_INCREMENT -0x00010000 - -#define BO ((saved_state.asregs.cregs.named.sr & SR_MASK_BO) != 0) -#define CS ((saved_state.asregs.cregs.named.sr & SR_MASK_CS) != 0) -#define M ((saved_state.asregs.cregs.named.sr & SR_MASK_M) != 0) -#define Q ((saved_state.asregs.cregs.named.sr & SR_MASK_Q) != 0) -#define S ((saved_state.asregs.cregs.named.sr & SR_MASK_S) != 0) -#define T ((saved_state.asregs.cregs.named.sr & SR_MASK_T) != 0) -#define LDST ((saved_state.asregs.cregs.named.ldst) != 0) - -#define SR_BL ((saved_state.asregs.cregs.named.sr & SR_MASK_BL) != 0) -#define SR_RB ((saved_state.asregs.cregs.named.sr & SR_MASK_RB) != 0) -#define SR_MD ((saved_state.asregs.cregs.named.sr & SR_MASK_MD) != 0) -#define SR_DMY ((saved_state.asregs.cregs.named.sr & SR_MASK_DMY) != 0) -#define SR_DMX ((saved_state.asregs.cregs.named.sr & SR_MASK_DMX) != 0) -#define SR_RC ((saved_state.asregs.cregs.named.sr & SR_MASK_RC)) - -/* Note: don't use this for privileged bits */ -#define SET_SR_BIT(EXP, BIT) \ -do { \ - if ((EXP) & 1) \ - saved_state.asregs.cregs.named.sr |= (BIT); \ - else \ - saved_state.asregs.cregs.named.sr &= ~(BIT); \ -} while (0) - -#define SET_SR_BO(EXP) SET_SR_BIT ((EXP), SR_MASK_BO) -#define SET_SR_CS(EXP) SET_SR_BIT ((EXP), SR_MASK_CS) -#define SET_BANKN(EXP) \ -do { \ - IBNR = (IBNR & 0xfe00) | (EXP & 0x1f); \ -} while (0) -#define SET_ME(EXP) \ -do { \ - IBNR = (IBNR & 0x3fff) | ((EXP & 0x3) << 14); \ -} while (0) -#define SET_SR_M(EXP) SET_SR_BIT ((EXP), SR_MASK_M) -#define SET_SR_Q(EXP) SET_SR_BIT ((EXP), SR_MASK_Q) -#define SET_SR_S(EXP) SET_SR_BIT ((EXP), SR_MASK_S) -#define SET_SR_T(EXP) SET_SR_BIT ((EXP), SR_MASK_T) -#define SET_LDST(EXP) (saved_state.asregs.cregs.named.ldst = ((EXP) != 0)) - -/* stc currently relies on being able to read SR without modifications. */ -#define GET_SR() (saved_state.asregs.cregs.named.sr - 0) - -#define SET_SR(x) set_sr (x) - -#define SET_RC(x) \ - (saved_state.asregs.cregs.named.sr \ - = saved_state.asregs.cregs.named.sr & 0xf000ffff | ((x) & 0xfff) << 16) - -/* Manipulate FPSCR */ - -#define FPSCR_MASK_FR (1 << 21) -#define FPSCR_MASK_SZ (1 << 20) -#define FPSCR_MASK_PR (1 << 19) - -#define FPSCR_FR ((GET_FPSCR () & FPSCR_MASK_FR) != 0) -#define FPSCR_SZ ((GET_FPSCR () & FPSCR_MASK_SZ) != 0) -#define FPSCR_PR ((GET_FPSCR () & FPSCR_MASK_PR) != 0) - -/* Count the number of arguments in an argv. */ -static int -count_argc (char **argv) -{ - int i; - - if (! argv) - return -1; - - for (i = 0; argv[i] != NULL; ++i) - continue; - return i; -} - -static void -set_fpscr1 (x) - int x; -{ - int old = saved_state.asregs.sregs.named.fpscr; - saved_state.asregs.sregs.named.fpscr = (x); - /* swap the floating point register banks */ - if ((saved_state.asregs.sregs.named.fpscr ^ old) & FPSCR_MASK_FR - /* Ignore bit change if simulating sh-dsp. */ - && ! target_dsp) - { - union fregs_u tmpf = saved_state.asregs.fregs[0]; - saved_state.asregs.fregs[0] = saved_state.asregs.fregs[1]; - saved_state.asregs.fregs[1] = tmpf; - } -} - -/* sts relies on being able to read fpscr directly. */ -#define GET_FPSCR() (saved_state.asregs.sregs.named.fpscr) -#define SET_FPSCR(x) \ -do { \ - set_fpscr1 (x); \ -} while (0) - -#define DSR (saved_state.asregs.sregs.named.fpscr) - -int -fail () -{ - abort (); -} - -#define RAISE_EXCEPTION(x) \ - (saved_state.asregs.exception = x, saved_state.asregs.insn_end = 0) - -#define RAISE_EXCEPTION_IF_IN_DELAY_SLOT() \ - if (in_delay_slot) RAISE_EXCEPTION (SIGILL) - -/* This function exists mainly for the purpose of setting a breakpoint to - catch simulated bus errors when running the simulator under GDB. */ - -void -raise_exception (x) - int x; -{ - RAISE_EXCEPTION (x); -} - -void -raise_buserror () -{ - raise_exception (SIGBUS); -} - -#define PROCESS_SPECIAL_ADDRESS(addr, endian, ptr, bits_written, \ - forbidden_addr_bits, data, retval) \ -do { \ - if (addr & forbidden_addr_bits) \ - { \ - raise_buserror (); \ - return retval; \ - } \ - else if ((addr & saved_state.asregs.xyram_select) \ - == saved_state.asregs.xram_start) \ - ptr = (void *) &saved_state.asregs.xmem_offset[addr ^ endian]; \ - else if ((addr & saved_state.asregs.xyram_select) \ - == saved_state.asregs.yram_start) \ - ptr = (void *) &saved_state.asregs.ymem_offset[addr ^ endian]; \ - else if ((unsigned) addr >> 24 == 0xf0 \ - && bits_written == 32 && (data & 1) == 0) \ - /* This invalidates (if not associative) or might invalidate \ - (if associative) an instruction cache line. This is used for \ - trampolines. Since we don't simulate the cache, this is a no-op \ - as far as the simulator is concerned. */ \ - return retval; \ - else \ - { \ - if (bits_written == 8 && addr > 0x5000000) \ - IOMEM (addr, 1, data); \ - /* We can't do anything useful with the other stuff, so fail. */ \ - raise_buserror (); \ - return retval; \ - } \ -} while (0) - -/* FIXME: sim_resume should be renamed to sim_engine_run. sim_resume - being implemented by ../common/sim_resume.c and the below should - make a call to sim_engine_halt */ - -#define BUSERROR(addr, mask) ((addr) & (mask)) - -#define WRITE_BUSERROR(addr, mask, data, addr_func) \ - do \ - { \ - if (addr & mask) \ - { \ - addr_func (addr, data); \ - return; \ - } \ - } \ - while (0) - -#define READ_BUSERROR(addr, mask, addr_func) \ - do \ - { \ - if (addr & mask) \ - return addr_func (addr); \ - } \ - while (0) - -/* Define this to enable register lifetime checking. - The compiler generates "add #0,rn" insns to mark registers as invalid, - the simulator uses this info to call fail if it finds a ref to an invalid - register before a def - - #define PARANOID -*/ - -#ifdef PARANOID -int valid[16]; -#define CREF(x) if (!valid[x]) fail (); -#define CDEF(x) valid[x] = 1; -#define UNDEF(x) valid[x] = 0; -#else -#define CREF(x) -#define CDEF(x) -#define UNDEF(x) -#endif - -static void parse_and_set_memory_size PARAMS ((char *str)); -static int IOMEM PARAMS ((int addr, int write, int value)); -static struct loop_bounds get_loop_bounds PARAMS ((int, int, unsigned char *, - unsigned char *, int, int)); -static void process_wlat_addr PARAMS ((int, int)); -static void process_wwat_addr PARAMS ((int, int)); -static void process_wbat_addr PARAMS ((int, int)); -static int process_rlat_addr PARAMS ((int)); -static int process_rwat_addr PARAMS ((int)); -static int process_rbat_addr PARAMS ((int)); -static void INLINE wlat_fast PARAMS ((unsigned char *, int, int, int)); -static void INLINE wwat_fast PARAMS ((unsigned char *, int, int, int, int)); -static void INLINE wbat_fast PARAMS ((unsigned char *, int, int, int)); -static int INLINE rlat_fast PARAMS ((unsigned char *, int, int)); -static int INLINE rwat_fast PARAMS ((unsigned char *, int, int, int)); -static int INLINE rbat_fast PARAMS ((unsigned char *, int, int)); - -static host_callback *callback; - - - -/* Floating point registers */ - -#define DR(n) (get_dr (n)) -static double -get_dr (n) - int n; -{ - n = (n & ~1); - if (host_little_endian) - { - union - { - int i[2]; - double d; - } dr; - dr.i[1] = saved_state.asregs.fregs[0].i[n + 0]; - dr.i[0] = saved_state.asregs.fregs[0].i[n + 1]; - return dr.d; - } - else - return (saved_state.asregs.fregs[0].d[n >> 1]); -} - -#define SET_DR(n, EXP) set_dr ((n), (EXP)) -static void -set_dr (n, exp) - int n; - double exp; -{ - n = (n & ~1); - if (host_little_endian) - { - union - { - int i[2]; - double d; - } dr; - dr.d = exp; - saved_state.asregs.fregs[0].i[n + 0] = dr.i[1]; - saved_state.asregs.fregs[0].i[n + 1] = dr.i[0]; - } - else - saved_state.asregs.fregs[0].d[n >> 1] = exp; -} - -#define SET_FI(n,EXP) (saved_state.asregs.fregs[0].i[(n)] = (EXP)) -#define FI(n) (saved_state.asregs.fregs[0].i[(n)]) - -#define FR(n) (saved_state.asregs.fregs[0].f[(n)]) -#define SET_FR(n,EXP) (saved_state.asregs.fregs[0].f[(n)] = (EXP)) - -#define XD_TO_XF(n) ((((n) & 1) << 5) | ((n) & 0x1e)) -#define XF(n) (saved_state.asregs.fregs[(n) >> 5].i[(n) & 0x1f]) -#define SET_XF(n,EXP) (saved_state.asregs.fregs[(n) >> 5].i[(n) & 0x1f] = (EXP)) - -#define RS saved_state.asregs.cregs.named.rs -#define RE saved_state.asregs.cregs.named.re -#define MOD (saved_state.asregs.cregs.named.mod) -#define SET_MOD(i) \ -(MOD = (i), \ - MOD_ME = (unsigned) MOD >> 16 | (SR_DMY ? ~0xffff : (SR_DMX ? 0 : 0x10000)), \ - MOD_DELTA = (MOD & 0xffff) - ((unsigned) MOD >> 16)) - -#define DSP_R(n) saved_state.asregs.sregs.i[(n)] -#define DSP_GRD(n) DSP_R ((n) + 8) -#define GET_DSP_GRD(n) ((n | 2) == 7 ? SEXT (DSP_GRD (n)) : SIGN32 (DSP_R (n))) -#define A1 DSP_R (5) -#define A0 DSP_R (7) -#define X0 DSP_R (8) -#define X1 DSP_R (9) -#define Y0 DSP_R (10) -#define Y1 DSP_R (11) -#define M0 DSP_R (12) -#define A1G DSP_R (13) -#define M1 DSP_R (14) -#define A0G DSP_R (15) -/* DSP_R (16) / DSP_GRD (16) are used as a fake destination for pcmp. */ -#define MOD_ME DSP_GRD (17) -#define MOD_DELTA DSP_GRD (18) - -#define FP_OP(n, OP, m) \ -{ \ - if (FPSCR_PR) \ - { \ - if (((n) & 1) || ((m) & 1)) \ - RAISE_EXCEPTION (SIGILL); \ - else \ - SET_DR (n, (DR (n) OP DR (m))); \ - } \ - else \ - SET_FR (n, (FR (n) OP FR (m))); \ -} while (0) - -#define FP_UNARY(n, OP) \ -{ \ - if (FPSCR_PR) \ - { \ - if ((n) & 1) \ - RAISE_EXCEPTION (SIGILL); \ - else \ - SET_DR (n, (OP (DR (n)))); \ - } \ - else \ - SET_FR (n, (OP (FR (n)))); \ -} while (0) - -#define FP_CMP(n, OP, m) \ -{ \ - if (FPSCR_PR) \ - { \ - if (((n) & 1) || ((m) & 1)) \ - RAISE_EXCEPTION (SIGILL); \ - else \ - SET_SR_T (DR (n) OP DR (m)); \ - } \ - else \ - SET_SR_T (FR (n) OP FR (m)); \ -} while (0) - -static void -set_sr (new_sr) - int new_sr; -{ - /* do we need to swap banks */ - int old_gpr = SR_MD && SR_RB; - int new_gpr = (new_sr & SR_MASK_MD) && (new_sr & SR_MASK_RB); - if (old_gpr != new_gpr) - { - int i, tmp; - for (i = 0; i < 8; i++) - { - tmp = saved_state.asregs.cregs.named.bank[i]; - saved_state.asregs.cregs.named.bank[i] = saved_state.asregs.regs[i]; - saved_state.asregs.regs[i] = tmp; - } - } - saved_state.asregs.cregs.named.sr = new_sr; - SET_MOD (MOD); -} - -static void INLINE -wlat_fast (memory, x, value, maskl) - unsigned char *memory; -{ - int v = value; - unsigned int *p = (unsigned int *) (memory + x); - WRITE_BUSERROR (x, maskl, v, process_wlat_addr); - *p = v; -} - -static void INLINE -wwat_fast (memory, x, value, maskw, endianw) - unsigned char *memory; -{ - int v = value; - unsigned short *p = (unsigned short *) (memory + (x ^ endianw)); - WRITE_BUSERROR (x, maskw, v, process_wwat_addr); - *p = v; -} - -static void INLINE -wbat_fast (memory, x, value, maskb) - unsigned char *memory; -{ - unsigned char *p = memory + (x ^ endianb); - WRITE_BUSERROR (x, maskb, value, process_wbat_addr); - - p[0] = value; -} - -/* Read functions */ - -static int INLINE -rlat_fast (memory, x, maskl) - unsigned char *memory; -{ - unsigned int *p = (unsigned int *) (memory + x); - READ_BUSERROR (x, maskl, process_rlat_addr); - - return *p; -} - -static int INLINE -rwat_fast (memory, x, maskw, endianw) - unsigned char *memory; - int x, maskw, endianw; -{ - unsigned short *p = (unsigned short *) (memory + (x ^ endianw)); - READ_BUSERROR (x, maskw, process_rwat_addr); - - return *p; -} - -static int INLINE -riat_fast (insn_ptr, endianw) - unsigned char *insn_ptr; -{ - unsigned short *p = (unsigned short *) ((size_t) insn_ptr ^ endianw); - - return *p; -} - -static int INLINE -rbat_fast (memory, x, maskb) - unsigned char *memory; -{ - unsigned char *p = memory + (x ^ endianb); - READ_BUSERROR (x, maskb, process_rbat_addr); - - return *p; -} - -#define RWAT(x) (rwat_fast (memory, x, maskw, endianw)) -#define RLAT(x) (rlat_fast (memory, x, maskl)) -#define RBAT(x) (rbat_fast (memory, x, maskb)) -#define RIAT(p) (riat_fast ((p), endianw)) -#define WWAT(x,v) (wwat_fast (memory, x, v, maskw, endianw)) -#define WLAT(x,v) (wlat_fast (memory, x, v, maskl)) -#define WBAT(x,v) (wbat_fast (memory, x, v, maskb)) - -#define RUWAT(x) (RWAT (x) & 0xffff) -#define RSWAT(x) ((short) (RWAT (x))) -#define RSLAT(x) ((long) (RLAT (x))) -#define RSBAT(x) (SEXT (RBAT (x))) - -#define RDAT(x, n) (do_rdat (memory, (x), (n), (maskl))) -static int -do_rdat (memory, x, n, maskl) - char *memory; - int x; - int n; - int maskl; -{ - int f0; - int f1; - int i = (n & 1); - int j = (n & ~1); - f0 = rlat_fast (memory, x + 0, maskl); - f1 = rlat_fast (memory, x + 4, maskl); - saved_state.asregs.fregs[i].i[(j + 0)] = f0; - saved_state.asregs.fregs[i].i[(j + 1)] = f1; - return 0; -} - -#define WDAT(x, n) (do_wdat (memory, (x), (n), (maskl))) -static int -do_wdat (memory, x, n, maskl) - char *memory; - int x; - int n; - int maskl; -{ - int f0; - int f1; - int i = (n & 1); - int j = (n & ~1); - f0 = saved_state.asregs.fregs[i].i[(j + 0)]; - f1 = saved_state.asregs.fregs[i].i[(j + 1)]; - wlat_fast (memory, (x + 0), f0, maskl); - wlat_fast (memory, (x + 4), f1, maskl); - return 0; -} - -static void -process_wlat_addr (addr, value) - int addr; - int value; -{ - unsigned int *ptr; - - PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, 32, 3, value, ); - *ptr = value; -} - -static void -process_wwat_addr (addr, value) - int addr; - int value; -{ - unsigned short *ptr; - - PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, 16, 1, value, ); - *ptr = value; -} - -static void -process_wbat_addr (addr, value) - int addr; - int value; -{ - unsigned char *ptr; - - PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, 8, 0, value, ); - *ptr = value; -} - -static int -process_rlat_addr (addr) - int addr; -{ - unsigned char *ptr; - - PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, -32, 3, -1, 0); - return *ptr; -} - -static int -process_rwat_addr (addr) - int addr; -{ - unsigned char *ptr; - - PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, -16, 1, -1, 0); - return *ptr; -} - -static int -process_rbat_addr (addr) - int addr; -{ - unsigned char *ptr; - - PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, -8, 0, -1, 0); - return *ptr; -} - -#define SEXT(x) (((x & 0xff) ^ (~0x7f))+0x80) -#define SEXT12(x) (((x & 0xfff) ^ 0x800) - 0x800) -#define SEXTW(y) ((int) ((short) y)) -#if 0 -#define SEXT32(x) ((int) ((x & 0xffffffff) ^ 0x80000000U) - 0x7fffffff - 1) -#else -#define SEXT32(x) ((int) (x)) -#endif -#define SIGN32(x) (SEXT32 (x) >> 31) - -/* convert pointer from target to host value. */ -#define PT2H(x) ((x) + memory) -/* convert pointer from host to target value. */ -#define PH2T(x) ((x) - memory) - -#define SKIP_INSN(p) ((p) += ((RIAT (p) & 0xfc00) == 0xf800 ? 4 : 2)) - -#define SET_NIP(x) nip = (x); CHECK_INSN_PTR (nip); - -static int in_delay_slot = 0; -#define Delay_Slot(TEMPPC) iword = RIAT (TEMPPC); in_delay_slot = 1; goto top; - -#define CHECK_INSN_PTR(p) \ -do { \ - if (saved_state.asregs.exception || PH2T (p) & maskw) \ - saved_state.asregs.insn_end = 0; \ - else if (p < loop.end) \ - saved_state.asregs.insn_end = loop.end; \ - else \ - saved_state.asregs.insn_end = mem_end; \ -} while (0) - -#ifdef ACE_FAST - -#define MA(n) -#define L(x) -#define TL(x) -#define TB(x) - -#else - -#define MA(n) \ - do { memstalls += ((((int) PC & 3) != 0) ? (n) : ((n) - 1)); } while (0) - -#define L(x) thislock = x; -#define TL(x) if ((x) == prevlock) stalls++; -#define TB(x,y) if ((x) == prevlock || (y) == prevlock) stalls++; - -#endif - -#if defined(__GO32__) -int sim_memory_size = 19; -#else -int sim_memory_size = 24; -#endif - -static int sim_profile_size = 17; -static int nsamples; - -#undef TB -#define TB(x,y) - -#define SMR1 (0x05FFFEC8) /* Channel 1 serial mode register */ -#define BRR1 (0x05FFFEC9) /* Channel 1 bit rate register */ -#define SCR1 (0x05FFFECA) /* Channel 1 serial control register */ -#define TDR1 (0x05FFFECB) /* Channel 1 transmit data register */ -#define SSR1 (0x05FFFECC) /* Channel 1 serial status register */ -#define RDR1 (0x05FFFECD) /* Channel 1 receive data register */ - -#define SCI_RDRF 0x40 /* Recieve data register full */ -#define SCI_TDRE 0x80 /* Transmit data register empty */ - -static int -IOMEM (addr, write, value) - int addr; - int write; - int value; -{ - if (write) - { - switch (addr) - { - case TDR1: - if (value != '\r') - { - putchar (value); - fflush (stdout); - } - break; - } - } - else - { - switch (addr) - { - case RDR1: - return getchar (); - } - } - return 0; -} - -static int -get_now () -{ - return time ((long *) 0); -} - -static int -now_persec () -{ - return 1; -} - -static FILE *profile_file; - -static unsigned INLINE -swap (n) - unsigned n; -{ - if (endianb) - n = (n << 24 | (n & 0xff00) << 8 - | (n & 0xff0000) >> 8 | (n & 0xff000000) >> 24); - return n; -} - -static unsigned short INLINE -swap16 (n) - unsigned short n; -{ - if (endianb) - n = n << 8 | (n & 0xff00) >> 8; - return n; -} - -static void -swapout (n) - int n; -{ - if (profile_file) - { - union { char b[4]; int n; } u; - u.n = swap (n); - fwrite (u.b, 4, 1, profile_file); - } -} - -static void -swapout16 (n) - int n; -{ - union { char b[4]; int n; } u; - u.n = swap16 (n); - fwrite (u.b, 2, 1, profile_file); -} - -/* Turn a pointer in a register into a pointer into real memory. */ - -static char * -ptr (x) - int x; -{ - return (char *) (x + saved_state.asregs.memory); -} - -/* STR points to a zero-terminated string in target byte order. Return - the number of bytes that need to be converted to host byte order in order - to use this string as a zero-terminated string on the host. - (Not counting the rounding up needed to operate on entire words.) */ -static int -strswaplen (str) - int str; -{ - unsigned char *memory = saved_state.asregs.memory; - int start, end; - int endian = endianb; - - if (! endian) - return 0; - end = str; - for (end = str; memory[end ^ endian]; end++) ; - return end - str + 1; -} - -static void -strnswap (str, len) - int str; - int len; -{ - int *start, *end; - - if (! endianb || ! len) - return; - start = (int *) ptr (str & ~3); - end = (int *) ptr (str + len); - do - { - int old = *start; - *start = (old << 24 | (old & 0xff00) << 8 - | (old & 0xff0000) >> 8 | (old & 0xff000000) >> 24); - start++; - } - while (start < end); -} - -/* Simulate a monitor trap, put the result into r0 and errno into r1 - return offset by which to adjust pc. */ - -static int -trap (i, regs, insn_ptr, memory, maskl, maskw, endianw) - int i; - int *regs; - unsigned char *insn_ptr; - unsigned char *memory; -{ - switch (i) - { - case 1: - printf ("%c", regs[0]); - break; - case 2: - raise_exception (SIGQUIT); - break; - case 3: /* FIXME: for backwards compat, should be removed */ - case 33: - { - unsigned int countp = * (unsigned int *) (insn_ptr + 4); - - WLAT (countp, RLAT (countp) + 1); - return 6; - } - case 34: - { - extern int errno; - int perrno = errno; - errno = 0; - - switch (regs[4]) - { - -#if !defined(__GO32__) && !defined(_WIN32) - case SYS_fork: - regs[0] = fork (); - break; -/* This would work only if endianness matched between host and target. - Besides, it's quite dangerous. */ -#if 0 - case SYS_execve: - regs[0] = execve (ptr (regs[5]), (char **) ptr (regs[6]), - (char **) ptr (regs[7])); - break; - case SYS_execv: - regs[0] = execve (ptr (regs[5]), (char **) ptr (regs[6]), 0); - break; -#endif - case SYS_pipe: - { - regs[0] = (BUSERROR (regs[5], maskl) - ? -EINVAL - : pipe ((int *) ptr (regs[5]))); - } - break; - - case SYS_wait: - regs[0] = wait (ptr (regs[5])); - break; -#endif /* !defined(__GO32__) && !defined(_WIN32) */ - - case SYS_read: - strnswap (regs[6], regs[7]); - regs[0] - = callback->read (callback, regs[5], ptr (regs[6]), regs[7]); - strnswap (regs[6], regs[7]); - break; - case SYS_write: - strnswap (regs[6], regs[7]); - if (regs[5] == 1) - regs[0] = (int) callback->write_stdout (callback, - ptr (regs[6]), regs[7]); - else - regs[0] = (int) callback->write (callback, regs[5], - ptr (regs[6]), regs[7]); - strnswap (regs[6], regs[7]); - break; - case SYS_lseek: - regs[0] = callback->lseek (callback,regs[5], regs[6], regs[7]); - break; - case SYS_close: - regs[0] = callback->close (callback,regs[5]); - break; - case SYS_open: - { - int len = strswaplen (regs[5]); - strnswap (regs[5], len); - regs[0] = callback->open (callback, ptr (regs[5]), regs[6]); - strnswap (regs[5], len); - break; - } - case SYS_exit: - /* EXIT - caller can look in r5 to work out the reason */ - raise_exception (SIGQUIT); - regs[0] = regs[5]; - break; - - case SYS_stat: /* added at hmsi */ - /* stat system call */ - { - struct stat host_stat; - int buf; - int len = strswaplen (regs[5]); - - strnswap (regs[5], len); - regs[0] = stat (ptr (regs[5]), &host_stat); - strnswap (regs[5], len); - - buf = regs[6]; - - WWAT (buf, host_stat.st_dev); - buf += 2; - WWAT (buf, host_stat.st_ino); - buf += 2; - WLAT (buf, host_stat.st_mode); - buf += 4; - WWAT (buf, host_stat.st_nlink); - buf += 2; - WWAT (buf, host_stat.st_uid); - buf += 2; - WWAT (buf, host_stat.st_gid); - buf += 2; - WWAT (buf, host_stat.st_rdev); - buf += 2; - WLAT (buf, host_stat.st_size); - buf += 4; - WLAT (buf, host_stat.st_atime); - buf += 4; - WLAT (buf, 0); - buf += 4; - WLAT (buf, host_stat.st_mtime); - buf += 4; - WLAT (buf, 0); - buf += 4; - WLAT (buf, host_stat.st_ctime); - buf += 4; - WLAT (buf, 0); - buf += 4; - WLAT (buf, 0); - buf += 4; - WLAT (buf, 0); - buf += 4; - } - break; - -#ifndef _WIN32 - case SYS_chown: - { - int len = strswaplen (regs[5]); - - strnswap (regs[5], len); - regs[0] = chown (ptr (regs[5]), regs[6], regs[7]); - strnswap (regs[5], len); - break; - } -#endif /* _WIN32 */ - case SYS_chmod: - { - int len = strswaplen (regs[5]); - - strnswap (regs[5], len); - regs[0] = chmod (ptr (regs[5]), regs[6]); - strnswap (regs[5], len); - break; - } - case SYS_utime: - { - /* Cast the second argument to void *, to avoid type mismatch - if a prototype is present. */ - int len = strswaplen (regs[5]); - - strnswap (regs[5], len); - regs[0] = utime (ptr (regs[5]), (void *) ptr (regs[6])); - strnswap (regs[5], len); - break; - } - case SYS_argc: - regs[0] = count_argc (prog_argv); - break; - case SYS_argnlen: - if (regs[5] < count_argc (prog_argv)) - regs[0] = strlen (prog_argv[regs[5]]); - else - regs[0] = -1; - break; - case SYS_argn: - if (regs[5] < count_argc (prog_argv)) - { - /* Include the termination byte. */ - int i = strlen (prog_argv[regs[5]]) + 1; - regs[0] = sim_write (0, regs[6], prog_argv[regs[5]], i); - } - else - regs[0] = -1; - break; - case SYS_time: - regs[0] = get_now (); - break; - case SYS_ftruncate: - regs[0] = callback->ftruncate (callback, regs[5], regs[6]); - break; - case SYS_truncate: - { - int len = strswaplen (regs[5]); - strnswap (regs[5], len); - regs[0] = callback->truncate (callback, ptr (regs[5]), regs[6]); - strnswap (regs[5], len); - break; - } - default: - regs[0] = -1; - break; - } - regs[1] = callback->get_errno (callback); - errno = perrno; - } - break; - - case 13: /* Set IBNR */ - IBNR = regs[0] & 0xffff; - break; - case 14: /* Set IBCR */ - IBCR = regs[0] & 0xffff; - break; - case 0xc3: - case 255: - raise_exception (SIGTRAP); - if (i == 0xc3) - return -2; - break; - } - return 0; -} - -void -control_c (sig, code, scp, addr) - int sig; - int code; - char *scp; - char *addr; -{ - raise_exception (SIGINT); -} - -static int -div1 (R, iRn2, iRn1/*, T*/) - int *R; - int iRn1; - int iRn2; - /* int T;*/ -{ - unsigned long tmp0; - unsigned char old_q, tmp1; - - old_q = Q; - SET_SR_Q ((unsigned char) ((0x80000000 & R[iRn1]) != 0)); - R[iRn1] <<= 1; - R[iRn1] |= (unsigned long) T; - - switch (old_q) - { - case 0: - switch (M) - { - case 0: - tmp0 = R[iRn1]; - R[iRn1] -= R[iRn2]; - tmp1 = (R[iRn1] > tmp0); - switch (Q) - { - case 0: - SET_SR_Q (tmp1); - break; - case 1: - SET_SR_Q ((unsigned char) (tmp1 == 0)); - break; - } - break; - case 1: - tmp0 = R[iRn1]; - R[iRn1] += R[iRn2]; - tmp1 = (R[iRn1] < tmp0); - switch (Q) - { - case 0: - SET_SR_Q ((unsigned char) (tmp1 == 0)); - break; - case 1: - SET_SR_Q (tmp1); - break; - } - break; - } - break; - case 1: - switch (M) - { - case 0: - tmp0 = R[iRn1]; - R[iRn1] += R[iRn2]; - tmp1 = (R[iRn1] < tmp0); - switch (Q) - { - case 0: - SET_SR_Q (tmp1); - break; - case 1: - SET_SR_Q ((unsigned char) (tmp1 == 0)); - break; - } - break; - case 1: - tmp0 = R[iRn1]; - R[iRn1] -= R[iRn2]; - tmp1 = (R[iRn1] > tmp0); - switch (Q) - { - case 0: - SET_SR_Q ((unsigned char) (tmp1 == 0)); - break; - case 1: - SET_SR_Q (tmp1); - break; - } - break; - } - break; - } - /*T = (Q == M);*/ - SET_SR_T (Q == M); - /*return T;*/ -} - -static void -dmul (sign, rm, rn) - int sign; - unsigned int rm; - unsigned int rn; -{ - unsigned long RnL, RnH; - unsigned long RmL, RmH; - unsigned long temp0, temp1, temp2, temp3; - unsigned long Res2, Res1, Res0; - - RnL = rn & 0xffff; - RnH = (rn >> 16) & 0xffff; - RmL = rm & 0xffff; - RmH = (rm >> 16) & 0xffff; - temp0 = RmL * RnL; - temp1 = RmH * RnL; - temp2 = RmL * RnH; - temp3 = RmH * RnH; - Res2 = 0; - Res1 = temp1 + temp2; - if (Res1 < temp1) - Res2 += 0x00010000; - temp1 = (Res1 << 16) & 0xffff0000; - Res0 = temp0 + temp1; - if (Res0 < temp0) - Res2 += 1; - Res2 += ((Res1 >> 16) & 0xffff) + temp3; - - if (sign) - { - if (rn & 0x80000000) - Res2 -= rm; - if (rm & 0x80000000) - Res2 -= rn; - } - - MACH = Res2; - MACL = Res0; -} - -static void -macw (regs, memory, n, m, endianw) - int *regs; - unsigned char *memory; - int m, n; - int endianw; -{ - long tempm, tempn; - long prod, macl, sum; - - tempm=RSWAT (regs[m]); regs[m]+=2; - tempn=RSWAT (regs[n]); regs[n]+=2; - - macl = MACL; - prod = (long) (short) tempm * (long) (short) tempn; - sum = prod + macl; - if (S) - { - if ((~(prod ^ macl) & (sum ^ prod)) < 0) - { - /* MACH's lsb is a sticky overflow bit. */ - MACH |= 1; - /* Store the smallest negative number in MACL if prod is - negative, and the largest positive number otherwise. */ - sum = 0x7fffffff + (prod < 0); - } - } - else - { - long mach; - /* Add to MACH the sign extended product, and carry from low sum. */ - mach = MACH + (-(prod < 0)) + ((unsigned long) sum < prod); - /* Sign extend at 10:th bit in MACH. */ - MACH = (mach & 0x1ff) | -(mach & 0x200); - } - MACL = sum; -} - -static void -macl (regs, memory, n, m) - int *regs; - unsigned char *memory; - int m, n; -{ - long tempm, tempn; - long macl, mach; - long long ans; - long long mac64; - - tempm = RSLAT (regs[m]); - regs[m] += 4; - - tempn = RSLAT (regs[n]); - regs[n] += 4; - - mach = MACH; - macl = MACL; - - mac64 = ((long long) macl & 0xffffffff) | - ((long long) mach & 0xffffffff) << 32; - - ans = (long long) tempm * (long long) tempn; /* Multiply 32bit * 32bit */ - - mac64 += ans; /* Accumulate 64bit + 64 bit */ - - macl = (long) (mac64 & 0xffffffff); - mach = (long) ((mac64 >> 32) & 0xffffffff); - - if (S) /* Store only 48 bits of the result */ - { - if (mach < 0) /* Result is negative */ - { - mach = mach & 0x0000ffff; /* Mask higher 16 bits */ - mach |= 0xffff8000; /* Sign extend higher 16 bits */ - } - else - mach = mach & 0x00007fff; /* Postive Result */ - } - - MACL = macl; - MACH = mach; -} - -enum { - B_BCLR = 0, - B_BSET = 1, - B_BST = 2, - B_BLD = 3, - B_BAND = 4, - B_BOR = 5, - B_BXOR = 6, - B_BLDNOT = 11, - B_BANDNOT = 12, - B_BORNOT = 13, - - MOVB_RM = 0x0000, - MOVW_RM = 0x1000, - MOVL_RM = 0x2000, - FMOV_RM = 0x3000, - MOVB_MR = 0x4000, - MOVW_MR = 0x5000, - MOVL_MR = 0x6000, - FMOV_MR = 0x7000, - MOVU_BMR = 0x8000, - MOVU_WMR = 0x9000, -}; - -/* Do extended displacement move instructions. */ -void -do_long_move_insn (int op, int disp12, int m, int n, int *thatlock) -{ - int memstalls = 0; - int thislock = *thatlock; - int endianw = global_endianw; - int *R = &(saved_state.asregs.regs[0]); - unsigned char *memory = saved_state.asregs.memory; - int maskb = ~((saved_state.asregs.msize - 1) & ~0); - unsigned char *insn_ptr = PT2H (saved_state.asregs.pc); - - switch (op) { - case MOVB_RM: /* signed */ - WBAT (disp12 * 1 + R[n], R[m]); - break; - case MOVW_RM: - WWAT (disp12 * 2 + R[n], R[m]); - break; - case MOVL_RM: - WLAT (disp12 * 4 + R[n], R[m]); - break; - case FMOV_RM: /* floating point */ - if (FPSCR_SZ) - { - MA (1); - WDAT (R[n] + 8 * disp12, m); - } - else - WLAT (R[n] + 4 * disp12, FI (m)); - break; - case MOVB_MR: - R[n] = RSBAT (disp12 * 1 + R[m]); - L (n); - break; - case MOVW_MR: - R[n] = RSWAT (disp12 * 2 + R[m]); - L (n); - break; - case MOVL_MR: - R[n] = RLAT (disp12 * 4 + R[m]); - L (n); - break; - case FMOV_MR: - if (FPSCR_SZ) { - MA (1); - RDAT (R[m] + 8 * disp12, n); - } - else - SET_FI (n, RLAT (R[m] + 4 * disp12)); - break; - case MOVU_BMR: /* unsigned */ - R[n] = RBAT (disp12 * 1 + R[m]); - L (n); - break; - case MOVU_WMR: - R[n] = RWAT (disp12 * 2 + R[m]); - L (n); - break; - default: - RAISE_EXCEPTION (SIGINT); - exit (1); - } - saved_state.asregs.memstalls += memstalls; - *thatlock = thislock; -} - -/* Do binary logical bit-manipulation insns. */ -void -do_blog_insn (int imm, int addr, int binop, - unsigned char *memory, int maskb) -{ - int oldval = RBAT (addr); - - switch (binop) { - case B_BCLR: /* bclr.b */ - WBAT (addr, oldval & ~imm); - break; - case B_BSET: /* bset.b */ - WBAT (addr, oldval | imm); - break; - case B_BST: /* bst.b */ - if (T) - WBAT (addr, oldval | imm); - else - WBAT (addr, oldval & ~imm); - break; - case B_BLD: /* bld.b */ - SET_SR_T ((oldval & imm) != 0); - break; - case B_BAND: /* band.b */ - SET_SR_T (T && ((oldval & imm) != 0)); - break; - case B_BOR: /* bor.b */ - SET_SR_T (T || ((oldval & imm) != 0)); - break; - case B_BXOR: /* bxor.b */ - SET_SR_T (T ^ ((oldval & imm) != 0)); - break; - case B_BLDNOT: /* bldnot.b */ - SET_SR_T ((oldval & imm) == 0); - break; - case B_BANDNOT: /* bandnot.b */ - SET_SR_T (T && ((oldval & imm) == 0)); - break; - case B_BORNOT: /* bornot.b */ - SET_SR_T (T || ((oldval & imm) == 0)); - break; - } -} -float -fsca_s (int in, double (*f) (double)) -{ - double rad = ldexp ((in & 0xffff), -15) * 3.141592653589793238462643383; - double result = (*f) (rad); - double error, upper, lower, frac; - int exp; - - /* Search the value with the maximum error that is still within the - architectural spec. */ - error = ldexp (1., -21); - /* compensate for calculation inaccuracy by reducing error. */ - error = error - ldexp (1., -50); - upper = result + error; - frac = frexp (upper, &exp); - upper = ldexp (floor (ldexp (frac, 24)), exp - 24); - lower = result - error; - frac = frexp (lower, &exp); - lower = ldexp (ceil (ldexp (frac, 24)), exp - 24); - return abs (upper - result) >= abs (lower - result) ? upper : lower; -} - -float -fsrra_s (float in) -{ - double result = 1. / sqrt (in); - int exp; - double frac, upper, lower, error, eps; - - /* refine result */ - result = result - (result * result * in - 1) * 0.5 * result; - /* Search the value with the maximum error that is still within the - architectural spec. */ - frac = frexp (result, &exp); - frac = ldexp (frac, 24); - error = 4.0; /* 1 << 24-1-21 */ - /* use eps to compensate for possible 1 ulp error in our 'exact' result. */ - eps = ldexp (1., -29); - upper = floor (frac + error - eps); - if (upper > 16777216.) - upper = floor ((frac + error - eps) * 0.5) * 2.; - lower = ceil ((frac - error + eps) * 2) * .5; - if (lower > 8388608.) - lower = ceil (frac - error + eps); - upper = ldexp (upper, exp - 24); - lower = ldexp (lower, exp - 24); - return upper - result >= result - lower ? upper : lower; -} - - -/* GET_LOOP_BOUNDS {EXTENDED} - These two functions compute the actual starting and ending point - of the repeat loop, based on the RS and RE registers (repeat start, - repeat stop). The extended version is called for LDRC, and the - regular version is called for SETRC. The difference is that for - LDRC, the loop start and end instructions are literally the ones - pointed to by RS and RE -- for SETRC, they're not (see docs). */ - -static struct loop_bounds -get_loop_bounds_ext (rs, re, memory, mem_end, maskw, endianw) - int rs, re; - unsigned char *memory, *mem_end; - int maskw, endianw; -{ - struct loop_bounds loop; - - /* FIXME: should I verify RS < RE? */ - loop.start = PT2H (RS); /* FIXME not using the params? */ - loop.end = PT2H (RE & ~1); /* Ignore bit 0 of RE. */ - SKIP_INSN (loop.end); - if (loop.end >= mem_end) - loop.end = PT2H (0); - return loop; -} - -static struct loop_bounds -get_loop_bounds (rs, re, memory, mem_end, maskw, endianw) - int rs, re; - unsigned char *memory, *mem_end; - int maskw, endianw; -{ - struct loop_bounds loop; - - if (SR_RC) - { - if (RS >= RE) - { - loop.start = PT2H (RE - 4); - SKIP_INSN (loop.start); - loop.end = loop.start; - if (RS - RE == 0) - SKIP_INSN (loop.end); - if (RS - RE <= 2) - SKIP_INSN (loop.end); - SKIP_INSN (loop.end); - } - else - { - loop.start = PT2H (RS); - loop.end = PT2H (RE - 4); - SKIP_INSN (loop.end); - SKIP_INSN (loop.end); - SKIP_INSN (loop.end); - SKIP_INSN (loop.end); - } - if (loop.end >= mem_end) - loop.end = PT2H (0); - } - else - loop.end = PT2H (0); - - return loop; -} - -static void ppi_insn (); - -#include "ppi.c" - -/* Provide calloc / free versions that use an anonymous mmap. This can - significantly cut the start-up time when a large simulator memory is - required, because pages are only zeroed on demand. */ -#ifdef MAP_ANONYMOUS -void * -mcalloc (size_t nmemb, size_t size) -{ - void *page; - - if (nmemb != 1) - size *= nmemb; - return mmap (0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, - -1, 0); -} - -#define mfree(start,length) munmap ((start), (length)) -#else -#define mcalloc calloc -#define mfree(start,length) free(start) -#endif - -/* Set the memory size to the power of two provided. */ - -void -sim_size (power) - int power; - -{ - sim_memory_size = power; - - if (saved_state.asregs.memory) - { - mfree (saved_state.asregs.memory, saved_state.asregs.msize); - } - - saved_state.asregs.msize = 1 << power; - - saved_state.asregs.memory = - (unsigned char *) mcalloc (1, saved_state.asregs.msize); - - if (!saved_state.asregs.memory) - { - fprintf (stderr, - "Not enough VM for simulation of %d bytes of RAM\n", - saved_state.asregs.msize); - - saved_state.asregs.msize = 1; - saved_state.asregs.memory = (unsigned char *) mcalloc (1, 1); - } -} - -static void -init_dsp (abfd) - struct bfd *abfd; -{ - int was_dsp = target_dsp; - unsigned long mach = bfd_get_mach (abfd); - - if (mach == bfd_mach_sh_dsp || - mach == bfd_mach_sh4al_dsp || - mach == bfd_mach_sh3_dsp) - { - int ram_area_size, xram_start, yram_start; - int new_select; - - target_dsp = 1; - if (mach == bfd_mach_sh_dsp) - { - /* SH7410 (orig. sh-sdp): - 4KB each for X & Y memory; - On-chip X RAM 0x0800f000-0x0800ffff - On-chip Y RAM 0x0801f000-0x0801ffff */ - xram_start = 0x0800f000; - ram_area_size = 0x1000; - } - if (mach == bfd_mach_sh3_dsp || mach == bfd_mach_sh4al_dsp) - { - /* SH7612: - 8KB each for X & Y memory; - On-chip X RAM 0x1000e000-0x1000ffff - On-chip Y RAM 0x1001e000-0x1001ffff */ - xram_start = 0x1000e000; - ram_area_size = 0x2000; - } - yram_start = xram_start + 0x10000; - new_select = ~(ram_area_size - 1); - if (saved_state.asregs.xyram_select != new_select) - { - saved_state.asregs.xyram_select = new_select; - free (saved_state.asregs.xmem); - free (saved_state.asregs.ymem); - saved_state.asregs.xmem = - (unsigned char *) calloc (1, ram_area_size); - saved_state.asregs.ymem = - (unsigned char *) calloc (1, ram_area_size); - - /* Disable use of X / Y mmeory if not allocated. */ - if (! saved_state.asregs.xmem || ! saved_state.asregs.ymem) - { - saved_state.asregs.xyram_select = 0; - if (saved_state.asregs.xmem) - free (saved_state.asregs.xmem); - if (saved_state.asregs.ymem) - free (saved_state.asregs.ymem); - } - } - saved_state.asregs.xram_start = xram_start; - saved_state.asregs.yram_start = yram_start; - saved_state.asregs.xmem_offset = saved_state.asregs.xmem - xram_start; - saved_state.asregs.ymem_offset = saved_state.asregs.ymem - yram_start; - } - else - { - target_dsp = 0; - if (saved_state.asregs.xyram_select) - { - saved_state.asregs.xyram_select = 0; - free (saved_state.asregs.xmem); - free (saved_state.asregs.ymem); - } - } - - if (! saved_state.asregs.xyram_select) - { - saved_state.asregs.xram_start = 1; - saved_state.asregs.yram_start = 1; - } - - if (saved_state.asregs.regstack == NULL) - saved_state.asregs.regstack = - calloc (512, sizeof *saved_state.asregs.regstack); - - if (target_dsp != was_dsp) - { - int i, tmp; - - for (i = (sizeof sh_dsp_table / sizeof sh_dsp_table[0]) - 1; i >= 0; i--) - { - tmp = sh_jump_table[0xf000 + i]; - sh_jump_table[0xf000 + i] = sh_dsp_table[i]; - sh_dsp_table[i] = tmp; - } - } -} - -static void -init_pointers () -{ - host_little_endian = 0; - * (char*) &host_little_endian = 1; - host_little_endian &= 1; - - if (saved_state.asregs.msize != 1 << sim_memory_size) - { - sim_size (sim_memory_size); - } - - if (saved_state.asregs.profile && !profile_file) - { - profile_file = fopen ("gmon.out", "wb"); - /* Seek to where to put the call arc data */ - nsamples = (1 << sim_profile_size); - - fseek (profile_file, nsamples * 2 + 12, 0); - - if (!profile_file) - { - fprintf (stderr, "Can't open gmon.out\n"); - } - else - { - saved_state.asregs.profile_hist = - (unsigned short *) calloc (64, (nsamples * sizeof (short) / 64)); - } - } -} - -static void -dump_profile () -{ - unsigned int minpc; - unsigned int maxpc; - unsigned short *p; - int i; - - p = saved_state.asregs.profile_hist; - minpc = 0; - maxpc = (1 << sim_profile_size); - - fseek (profile_file, 0L, 0); - swapout (minpc << PROFILE_SHIFT); - swapout (maxpc << PROFILE_SHIFT); - swapout (nsamples * 2 + 12); - for (i = 0; i < nsamples; i++) - swapout16 (saved_state.asregs.profile_hist[i]); - -} - -static void -gotcall (from, to) - int from; - int to; -{ - swapout (from); - swapout (to); - swapout (1); -} - -#define MMASKB ((saved_state.asregs.msize -1) & ~0) - -int -sim_stop (sd) - SIM_DESC sd; -{ - raise_exception (SIGINT); - return 1; -} - -void -sim_resume (sd, step, siggnal) - SIM_DESC sd; - int step, siggnal; -{ - register unsigned char *insn_ptr; - unsigned char *mem_end; - struct loop_bounds loop; - register int cycles = 0; - register int stalls = 0; - register int memstalls = 0; - register int insts = 0; - register int prevlock; -#if 1 - int thislock; -#else - register int thislock; -#endif - register unsigned int doprofile; - register int pollcount = 0; - /* endianw is used for every insn fetch, hence it makes sense to cache it. - endianb is used less often. */ - register int endianw = global_endianw; - - int tick_start = get_now (); - void (*prev) (); - void (*prev_fpe) (); - - register unsigned short *jump_table = sh_jump_table; - - register int *R = &(saved_state.asregs.regs[0]); - /*register int T;*/ -#ifndef PR - register int PR; -#endif - - register int maskb = ~((saved_state.asregs.msize - 1) & ~0); - register int maskw = ~((saved_state.asregs.msize - 1) & ~1); - register int maskl = ~((saved_state.asregs.msize - 1) & ~3); - register unsigned char *memory; - register unsigned int sbit = ((unsigned int) 1 << 31); - - prev = signal (SIGINT, control_c); - prev_fpe = signal (SIGFPE, SIG_IGN); - - init_pointers (); - saved_state.asregs.exception = 0; - - memory = saved_state.asregs.memory; - mem_end = memory + saved_state.asregs.msize; - - if (RE & 1) - loop = get_loop_bounds_ext (RS, RE, memory, mem_end, maskw, endianw); - else - loop = get_loop_bounds (RS, RE, memory, mem_end, maskw, endianw); - - insn_ptr = PT2H (saved_state.asregs.pc); - CHECK_INSN_PTR (insn_ptr); - -#ifndef PR - PR = saved_state.asregs.sregs.named.pr; -#endif - /*T = GET_SR () & SR_MASK_T;*/ - prevlock = saved_state.asregs.prevlock; - thislock = saved_state.asregs.thislock; - doprofile = saved_state.asregs.profile; - - /* If profiling not enabled, disable it by asking for - profiles infrequently. */ - if (doprofile == 0) - doprofile = ~0; - - loop: - if (step && insn_ptr < saved_state.asregs.insn_end) - { - if (saved_state.asregs.exception) - /* This can happen if we've already been single-stepping and - encountered a loop end. */ - saved_state.asregs.insn_end = insn_ptr; - else - { - saved_state.asregs.exception = SIGTRAP; - saved_state.asregs.insn_end = insn_ptr + 2; - } - } - - while (insn_ptr < saved_state.asregs.insn_end) - { - register unsigned int iword = RIAT (insn_ptr); - register unsigned int ult; - register unsigned char *nip = insn_ptr + 2; - -#ifndef ACE_FAST - insts++; -#endif - top: - if (tracing) - fprintf (stderr, "PC: %08x, insn: %04x\n", PH2T (insn_ptr), iword); - -#include "code.c" - - - in_delay_slot = 0; - insn_ptr = nip; - - if (--pollcount < 0) - { - pollcount = POLL_QUIT_INTERVAL; - if ((*callback->poll_quit) != NULL - && (*callback->poll_quit) (callback)) - { - sim_stop (sd); - } - } - -#ifndef ACE_FAST - prevlock = thislock; - thislock = 30; - cycles++; - - if (cycles >= doprofile) - { - - saved_state.asregs.cycles += doprofile; - cycles -= doprofile; - if (saved_state.asregs.profile_hist) - { - int n = PH2T (insn_ptr) >> PROFILE_SHIFT; - if (n < nsamples) - { - int i = saved_state.asregs.profile_hist[n]; - if (i < 65000) - saved_state.asregs.profile_hist[n] = i + 1; - } - - } - } -#endif - } - if (saved_state.asregs.insn_end == loop.end) - { - saved_state.asregs.cregs.named.sr += SR_RC_INCREMENT; - if (SR_RC) - insn_ptr = loop.start; - else - { - saved_state.asregs.insn_end = mem_end; - loop.end = PT2H (0); - } - goto loop; - } - - if (saved_state.asregs.exception == SIGILL - || saved_state.asregs.exception == SIGBUS) - { - insn_ptr -= 2; - } - /* Check for SIGBUS due to insn fetch. */ - else if (! saved_state.asregs.exception) - saved_state.asregs.exception = SIGBUS; - - saved_state.asregs.ticks += get_now () - tick_start; - saved_state.asregs.cycles += cycles; - saved_state.asregs.stalls += stalls; - saved_state.asregs.memstalls += memstalls; - saved_state.asregs.insts += insts; - saved_state.asregs.pc = PH2T (insn_ptr); -#ifndef PR - saved_state.asregs.sregs.named.pr = PR; -#endif - - saved_state.asregs.prevlock = prevlock; - saved_state.asregs.thislock = thislock; - - if (profile_file) - { - dump_profile (); - } - - signal (SIGFPE, prev_fpe); - signal (SIGINT, prev); -} - -int -sim_write (sd, addr, buffer, size) - SIM_DESC sd; - SIM_ADDR addr; - unsigned char *buffer; - int size; -{ - int i; - - init_pointers (); - - for (i = 0; i < size; i++) - { - saved_state.asregs.memory[(MMASKB & (addr + i)) ^ endianb] = buffer[i]; - } - return size; -} - -int -sim_read (sd, addr, buffer, size) - SIM_DESC sd; - SIM_ADDR addr; - unsigned char *buffer; - int size; -{ - int i; - - init_pointers (); - - for (i = 0; i < size; i++) - { - buffer[i] = saved_state.asregs.memory[(MMASKB & (addr + i)) ^ endianb]; - } - return size; -} - -static int gdb_bank_number; -enum { - REGBANK_MACH = 15, - REGBANK_IVN = 16, - REGBANK_PR = 17, - REGBANK_GBR = 18, - REGBANK_MACL = 19 -}; - -int -sim_store_register (sd, rn, memory, length) - SIM_DESC sd; - int rn; - unsigned char *memory; - int length; -{ - unsigned val; - - init_pointers (); - val = swap (* (int *) memory); - switch (rn) - { - case SIM_SH_R0_REGNUM: case SIM_SH_R1_REGNUM: case SIM_SH_R2_REGNUM: - case SIM_SH_R3_REGNUM: case SIM_SH_R4_REGNUM: case SIM_SH_R5_REGNUM: - case SIM_SH_R6_REGNUM: case SIM_SH_R7_REGNUM: case SIM_SH_R8_REGNUM: - case SIM_SH_R9_REGNUM: case SIM_SH_R10_REGNUM: case SIM_SH_R11_REGNUM: - case SIM_SH_R12_REGNUM: case SIM_SH_R13_REGNUM: case SIM_SH_R14_REGNUM: - case SIM_SH_R15_REGNUM: - saved_state.asregs.regs[rn] = val; - break; - case SIM_SH_PC_REGNUM: - saved_state.asregs.pc = val; - break; - case SIM_SH_PR_REGNUM: - PR = val; - break; - case SIM_SH_GBR_REGNUM: - GBR = val; - break; - case SIM_SH_VBR_REGNUM: - VBR = val; - break; - case SIM_SH_MACH_REGNUM: - MACH = val; - break; - case SIM_SH_MACL_REGNUM: - MACL = val; - break; - case SIM_SH_SR_REGNUM: - SET_SR (val); - break; - case SIM_SH_FPUL_REGNUM: - FPUL = val; - break; - case SIM_SH_FPSCR_REGNUM: - SET_FPSCR (val); - break; - case SIM_SH_FR0_REGNUM: case SIM_SH_FR1_REGNUM: case SIM_SH_FR2_REGNUM: - case SIM_SH_FR3_REGNUM: case SIM_SH_FR4_REGNUM: case SIM_SH_FR5_REGNUM: - case SIM_SH_FR6_REGNUM: case SIM_SH_FR7_REGNUM: case SIM_SH_FR8_REGNUM: - case SIM_SH_FR9_REGNUM: case SIM_SH_FR10_REGNUM: case SIM_SH_FR11_REGNUM: - case SIM_SH_FR12_REGNUM: case SIM_SH_FR13_REGNUM: case SIM_SH_FR14_REGNUM: - case SIM_SH_FR15_REGNUM: - SET_FI (rn - SIM_SH_FR0_REGNUM, val); - break; - case SIM_SH_DSR_REGNUM: - DSR = val; - break; - case SIM_SH_A0G_REGNUM: - A0G = val; - break; - case SIM_SH_A0_REGNUM: - A0 = val; - break; - case SIM_SH_A1G_REGNUM: - A1G = val; - break; - case SIM_SH_A1_REGNUM: - A1 = val; - break; - case SIM_SH_M0_REGNUM: - M0 = val; - break; - case SIM_SH_M1_REGNUM: - M1 = val; - break; - case SIM_SH_X0_REGNUM: - X0 = val; - break; - case SIM_SH_X1_REGNUM: - X1 = val; - break; - case SIM_SH_Y0_REGNUM: - Y0 = val; - break; - case SIM_SH_Y1_REGNUM: - Y1 = val; - break; - case SIM_SH_MOD_REGNUM: - SET_MOD (val); - break; - case SIM_SH_RS_REGNUM: - RS = val; - break; - case SIM_SH_RE_REGNUM: - RE = val; - break; - case SIM_SH_SSR_REGNUM: - SSR = val; - break; - case SIM_SH_SPC_REGNUM: - SPC = val; - break; - /* The rn_bank idiosyncracies are not due to hardware differences, but to - a weird aliasing naming scheme for sh3 / sh3e / sh4. */ - case SIM_SH_R0_BANK0_REGNUM: case SIM_SH_R1_BANK0_REGNUM: - case SIM_SH_R2_BANK0_REGNUM: case SIM_SH_R3_BANK0_REGNUM: - case SIM_SH_R4_BANK0_REGNUM: case SIM_SH_R5_BANK0_REGNUM: - case SIM_SH_R6_BANK0_REGNUM: case SIM_SH_R7_BANK0_REGNUM: - if (saved_state.asregs.bfd_mach == bfd_mach_sh2a) - { - rn -= SIM_SH_R0_BANK0_REGNUM; - saved_state.asregs.regstack[gdb_bank_number].regs[rn] = val; - } - else - if (SR_MD && SR_RB) - Rn_BANK (rn - SIM_SH_R0_BANK0_REGNUM) = val; - else - saved_state.asregs.regs[rn - SIM_SH_R0_BANK0_REGNUM] = val; - break; - case SIM_SH_R0_BANK1_REGNUM: case SIM_SH_R1_BANK1_REGNUM: - case SIM_SH_R2_BANK1_REGNUM: case SIM_SH_R3_BANK1_REGNUM: - case SIM_SH_R4_BANK1_REGNUM: case SIM_SH_R5_BANK1_REGNUM: - case SIM_SH_R6_BANK1_REGNUM: case SIM_SH_R7_BANK1_REGNUM: - if (saved_state.asregs.bfd_mach == bfd_mach_sh2a) - { - rn -= SIM_SH_R0_BANK1_REGNUM; - saved_state.asregs.regstack[gdb_bank_number].regs[rn + 8] = val; - } - else - if (SR_MD && SR_RB) - saved_state.asregs.regs[rn - SIM_SH_R0_BANK1_REGNUM] = val; - else - Rn_BANK (rn - SIM_SH_R0_BANK1_REGNUM) = val; - break; - case SIM_SH_R0_BANK_REGNUM: case SIM_SH_R1_BANK_REGNUM: - case SIM_SH_R2_BANK_REGNUM: case SIM_SH_R3_BANK_REGNUM: - case SIM_SH_R4_BANK_REGNUM: case SIM_SH_R5_BANK_REGNUM: - case SIM_SH_R6_BANK_REGNUM: case SIM_SH_R7_BANK_REGNUM: - SET_Rn_BANK (rn - SIM_SH_R0_BANK_REGNUM, val); - break; - case SIM_SH_TBR_REGNUM: - TBR = val; - break; - case SIM_SH_IBNR_REGNUM: - IBNR = val; - break; - case SIM_SH_IBCR_REGNUM: - IBCR = val; - break; - case SIM_SH_BANK_REGNUM: - /* This is a pseudo-register maintained just for gdb. - It tells us what register bank gdb would like to read/write. */ - gdb_bank_number = val; - break; - case SIM_SH_BANK_MACL_REGNUM: - saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_MACL] = val; - break; - case SIM_SH_BANK_GBR_REGNUM: - saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_GBR] = val; - break; - case SIM_SH_BANK_PR_REGNUM: - saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_PR] = val; - break; - case SIM_SH_BANK_IVN_REGNUM: - saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_IVN] = val; - break; - case SIM_SH_BANK_MACH_REGNUM: - saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_MACH] = val; - break; - default: - return 0; - } - return -1; -} - -int -sim_fetch_register (sd, rn, memory, length) - SIM_DESC sd; - int rn; - unsigned char *memory; - int length; -{ - int val; - - init_pointers (); - switch (rn) - { - case SIM_SH_R0_REGNUM: case SIM_SH_R1_REGNUM: case SIM_SH_R2_REGNUM: - case SIM_SH_R3_REGNUM: case SIM_SH_R4_REGNUM: case SIM_SH_R5_REGNUM: - case SIM_SH_R6_REGNUM: case SIM_SH_R7_REGNUM: case SIM_SH_R8_REGNUM: - case SIM_SH_R9_REGNUM: case SIM_SH_R10_REGNUM: case SIM_SH_R11_REGNUM: - case SIM_SH_R12_REGNUM: case SIM_SH_R13_REGNUM: case SIM_SH_R14_REGNUM: - case SIM_SH_R15_REGNUM: - val = saved_state.asregs.regs[rn]; - break; - case SIM_SH_PC_REGNUM: - val = saved_state.asregs.pc; - break; - case SIM_SH_PR_REGNUM: - val = PR; - break; - case SIM_SH_GBR_REGNUM: - val = GBR; - break; - case SIM_SH_VBR_REGNUM: - val = VBR; - break; - case SIM_SH_MACH_REGNUM: - val = MACH; - break; - case SIM_SH_MACL_REGNUM: - val = MACL; - break; - case SIM_SH_SR_REGNUM: - val = GET_SR (); - break; - case SIM_SH_FPUL_REGNUM: - val = FPUL; - break; - case SIM_SH_FPSCR_REGNUM: - val = GET_FPSCR (); - break; - case SIM_SH_FR0_REGNUM: case SIM_SH_FR1_REGNUM: case SIM_SH_FR2_REGNUM: - case SIM_SH_FR3_REGNUM: case SIM_SH_FR4_REGNUM: case SIM_SH_FR5_REGNUM: - case SIM_SH_FR6_REGNUM: case SIM_SH_FR7_REGNUM: case SIM_SH_FR8_REGNUM: - case SIM_SH_FR9_REGNUM: case SIM_SH_FR10_REGNUM: case SIM_SH_FR11_REGNUM: - case SIM_SH_FR12_REGNUM: case SIM_SH_FR13_REGNUM: case SIM_SH_FR14_REGNUM: - case SIM_SH_FR15_REGNUM: - val = FI (rn - SIM_SH_FR0_REGNUM); - break; - case SIM_SH_DSR_REGNUM: - val = DSR; - break; - case SIM_SH_A0G_REGNUM: - val = SEXT (A0G); - break; - case SIM_SH_A0_REGNUM: - val = A0; - break; - case SIM_SH_A1G_REGNUM: - val = SEXT (A1G); - break; - case SIM_SH_A1_REGNUM: - val = A1; - break; - case SIM_SH_M0_REGNUM: - val = M0; - break; - case SIM_SH_M1_REGNUM: - val = M1; - break; - case SIM_SH_X0_REGNUM: - val = X0; - break; - case SIM_SH_X1_REGNUM: - val = X1; - break; - case SIM_SH_Y0_REGNUM: - val = Y0; - break; - case SIM_SH_Y1_REGNUM: - val = Y1; - break; - case SIM_SH_MOD_REGNUM: - val = MOD; - break; - case SIM_SH_RS_REGNUM: - val = RS; - break; - case SIM_SH_RE_REGNUM: - val = RE; - break; - case SIM_SH_SSR_REGNUM: - val = SSR; - break; - case SIM_SH_SPC_REGNUM: - val = SPC; - break; - /* The rn_bank idiosyncracies are not due to hardware differences, but to - a weird aliasing naming scheme for sh3 / sh3e / sh4. */ - case SIM_SH_R0_BANK0_REGNUM: case SIM_SH_R1_BANK0_REGNUM: - case SIM_SH_R2_BANK0_REGNUM: case SIM_SH_R3_BANK0_REGNUM: - case SIM_SH_R4_BANK0_REGNUM: case SIM_SH_R5_BANK0_REGNUM: - case SIM_SH_R6_BANK0_REGNUM: case SIM_SH_R7_BANK0_REGNUM: - if (saved_state.asregs.bfd_mach == bfd_mach_sh2a) - { - rn -= SIM_SH_R0_BANK0_REGNUM; - val = saved_state.asregs.regstack[gdb_bank_number].regs[rn]; - } - else - val = (SR_MD && SR_RB - ? Rn_BANK (rn - SIM_SH_R0_BANK0_REGNUM) - : saved_state.asregs.regs[rn - SIM_SH_R0_BANK0_REGNUM]); - break; - case SIM_SH_R0_BANK1_REGNUM: case SIM_SH_R1_BANK1_REGNUM: - case SIM_SH_R2_BANK1_REGNUM: case SIM_SH_R3_BANK1_REGNUM: - case SIM_SH_R4_BANK1_REGNUM: case SIM_SH_R5_BANK1_REGNUM: - case SIM_SH_R6_BANK1_REGNUM: case SIM_SH_R7_BANK1_REGNUM: - if (saved_state.asregs.bfd_mach == bfd_mach_sh2a) - { - rn -= SIM_SH_R0_BANK1_REGNUM; - val = saved_state.asregs.regstack[gdb_bank_number].regs[rn + 8]; - } - else - val = (! SR_MD || ! SR_RB - ? Rn_BANK (rn - SIM_SH_R0_BANK1_REGNUM) - : saved_state.asregs.regs[rn - SIM_SH_R0_BANK1_REGNUM]); - break; - case SIM_SH_R0_BANK_REGNUM: case SIM_SH_R1_BANK_REGNUM: - case SIM_SH_R2_BANK_REGNUM: case SIM_SH_R3_BANK_REGNUM: - case SIM_SH_R4_BANK_REGNUM: case SIM_SH_R5_BANK_REGNUM: - case SIM_SH_R6_BANK_REGNUM: case SIM_SH_R7_BANK_REGNUM: - val = Rn_BANK (rn - SIM_SH_R0_BANK_REGNUM); - break; - case SIM_SH_TBR_REGNUM: - val = TBR; - break; - case SIM_SH_IBNR_REGNUM: - val = IBNR; - break; - case SIM_SH_IBCR_REGNUM: - val = IBCR; - break; - case SIM_SH_BANK_REGNUM: - /* This is a pseudo-register maintained just for gdb. - It tells us what register bank gdb would like to read/write. */ - val = gdb_bank_number; - break; - case SIM_SH_BANK_MACL_REGNUM: - val = saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_MACL]; - break; - case SIM_SH_BANK_GBR_REGNUM: - val = saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_GBR]; - break; - case SIM_SH_BANK_PR_REGNUM: - val = saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_PR]; - break; - case SIM_SH_BANK_IVN_REGNUM: - val = saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_IVN]; - break; - case SIM_SH_BANK_MACH_REGNUM: - val = saved_state.asregs.regstack[gdb_bank_number].regs[REGBANK_MACH]; - break; - default: - return 0; - } - * (int *) memory = swap (val); - return -1; -} - -int -sim_trace (sd) - SIM_DESC sd; -{ - tracing = 1; - sim_resume (sd, 0, 0); - tracing = 0; - return 1; -} - -void -sim_stop_reason (sd, reason, sigrc) - SIM_DESC sd; - enum sim_stop *reason; - int *sigrc; -{ - /* The SH simulator uses SIGQUIT to indicate that the program has - exited, so we must check for it here and translate it to exit. */ - if (saved_state.asregs.exception == SIGQUIT) - { - *reason = sim_exited; - *sigrc = saved_state.asregs.regs[5]; - } - else - { - *reason = sim_stopped; - *sigrc = saved_state.asregs.exception; - } -} - -void -sim_info (sd, verbose) - SIM_DESC sd; - int verbose; -{ - double timetaken = - (double) saved_state.asregs.ticks / (double) now_persec (); - double virttime = saved_state.asregs.cycles / 36.0e6; - - callback->printf_filtered (callback, "\n\n# instructions executed %10d\n", - saved_state.asregs.insts); - callback->printf_filtered (callback, "# cycles %10d\n", - saved_state.asregs.cycles); - callback->printf_filtered (callback, "# pipeline stalls %10d\n", - saved_state.asregs.stalls); - callback->printf_filtered (callback, "# misaligned load/store %10d\n", - saved_state.asregs.memstalls); - callback->printf_filtered (callback, "# real time taken %10.4f\n", - timetaken); - callback->printf_filtered (callback, "# virtual time taken %10.4f\n", - virttime); - callback->printf_filtered (callback, "# profiling size %10d\n", - sim_profile_size); - callback->printf_filtered (callback, "# profiling frequency %10d\n", - saved_state.asregs.profile); - callback->printf_filtered (callback, "# profile maxpc %10x\n", - (1 << sim_profile_size) << PROFILE_SHIFT); - - if (timetaken != 0) - { - callback->printf_filtered (callback, "# cycles/second %10d\n", - (int) (saved_state.asregs.cycles / timetaken)); - callback->printf_filtered (callback, "# simulation ratio %10.4f\n", - virttime / timetaken); - } -} - -void -sim_set_profile (n) - int n; -{ - saved_state.asregs.profile = n; -} - -void -sim_set_profile_size (n) - int n; -{ - sim_profile_size = n; -} - -SIM_DESC -sim_open (kind, cb, abfd, argv) - SIM_OPEN_KIND kind; - host_callback *cb; - struct bfd *abfd; - char **argv; -{ - char **p; - int endian_set = 0; - int i; - union - { - int i; - short s[2]; - char c[4]; - } - mem_word; - - sim_kind = kind; - myname = argv[0]; - callback = cb; - - for (p = argv + 1; *p != NULL; ++p) - { - if (strcmp (*p, "-E") == 0) - { - ++p; - if (*p == NULL) - { - /* FIXME: This doesn't use stderr, but then the rest of the - file doesn't either. */ - callback->printf_filtered (callback, "Missing argument to `-E'.\n"); - return 0; - } - target_little_endian = strcmp (*p, "big") != 0; - endian_set = 1; - } - else if (isdigit (**p)) - parse_and_set_memory_size (*p); - } - - if (abfd != NULL && ! endian_set) - target_little_endian = ! bfd_big_endian (abfd); - - if (abfd) - init_dsp (abfd); - - for (i = 4; (i -= 2) >= 0; ) - mem_word.s[i >> 1] = i; - global_endianw = mem_word.i >> (target_little_endian ? 0 : 16) & 0xffff; - - for (i = 4; --i >= 0; ) - mem_word.c[i] = i; - endianb = mem_word.i >> (target_little_endian ? 0 : 24) & 0xff; - - /* fudge our descriptor for now */ - return (SIM_DESC) 1; -} - -static void -parse_and_set_memory_size (str) - char *str; -{ - int n; - - n = strtol (str, NULL, 10); - if (n > 0 && n <= 24) - sim_memory_size = n; - else - callback->printf_filtered (callback, "Bad memory size %d; must be 1 to 24, inclusive\n", n); -} - -void -sim_close (sd, quitting) - SIM_DESC sd; - int quitting; -{ - /* nothing to do */ -} - -SIM_RC -sim_load (sd, prog, abfd, from_tty) - SIM_DESC sd; - char *prog; - bfd *abfd; - int from_tty; -{ - extern bfd *sim_load_file (); /* ??? Don't know where this should live. */ - bfd *prog_bfd; - - prog_bfd = sim_load_file (sd, myname, callback, prog, abfd, - sim_kind == SIM_OPEN_DEBUG, - 0, sim_write); - - /* Set the bfd machine type. */ - if (prog_bfd) - saved_state.asregs.bfd_mach = bfd_get_mach (prog_bfd); - else if (abfd) - saved_state.asregs.bfd_mach = bfd_get_mach (abfd); - else - saved_state.asregs.bfd_mach = 0; - - if (prog_bfd == NULL) - return SIM_RC_FAIL; - if (abfd == NULL) - bfd_close (prog_bfd); - return SIM_RC_OK; -} - -SIM_RC -sim_create_inferior (sd, prog_bfd, argv, env) - SIM_DESC sd; - struct bfd *prog_bfd; - char **argv; - char **env; -{ - /* Clear the registers. */ - memset (&saved_state, 0, - (char*) &saved_state.asregs.end_of_registers - (char*) &saved_state); - - /* Set the PC. */ - if (prog_bfd != NULL) - saved_state.asregs.pc = bfd_get_start_address (prog_bfd); - - /* Set the bfd machine type. */ - if (prog_bfd != NULL) - saved_state.asregs.bfd_mach = bfd_get_mach (prog_bfd); - - /* Record the program's arguments. */ - prog_argv = argv; - - return SIM_RC_OK; -} - -void -sim_do_command (sd, cmd) - SIM_DESC sd; - char *cmd; -{ - char *sms_cmd = "set-memory-size"; - int cmdsize; - - if (cmd == NULL || *cmd == '\0') - { - cmd = "help"; - } - - cmdsize = strlen (sms_cmd); - if (strncmp (cmd, sms_cmd, cmdsize) == 0 - && strchr (" \t", cmd[cmdsize]) != NULL) - { - parse_and_set_memory_size (cmd + cmdsize + 1); - } - else if (strcmp (cmd, "help") == 0) - { - (callback->printf_filtered) (callback, - "List of SH simulator commands:\n\n"); - (callback->printf_filtered) (callback, "set-memory-size -- Set the number of address bits to use\n"); - (callback->printf_filtered) (callback, "\n"); - } - else - { - (callback->printf_filtered) (callback, "Error: \"%s\" is not a valid SH simulator command.\n", cmd); - } -} - -void -sim_set_callbacks (p) - host_callback *p; -{ - callback = p; -}
interp.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: configure.ac =================================================================== --- configure.ac (revision 816) +++ configure.ac (nonexistent) @@ -1,14 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_PREREQ(2.59)dnl -AC_INIT(Makefile.in) -AC_CONFIG_HEADER(config.h:config.in) - -sinclude(../common/aclocal.m4) - -# Bugs in autoconf 2.59 break the call to SIM_AC_COMMON, hack around -# it by inlining the macro's contents. -sinclude(../common/common.m4) - -AC_CHECK_HEADERS(unistd.h) - -SIM_AC_OUTPUT
configure.ac Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: gencode.c =================================================================== --- gencode.c (revision 816) +++ gencode.c (nonexistent) @@ -1,3459 +0,0 @@ -/* Simulator/Opcode generator for the Renesas - (formerly Hitachi) / SuperH Inc. Super-H architecture. - - Written by Steve Chamberlain of Cygnus Support. - sac@cygnus.com - - This file is part of SH sim. - - - THIS SOFTWARE IS NOT COPYRIGHTED - - Cygnus offers the following for use in the public domain. Cygnus - makes no warranty with regard to the software or it's performance - and the user accepts the software "AS IS" with all faults. - - CYGNUS 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. - -*/ - -/* This program generates the opcode table for the assembler and - the simulator code. - - -t prints a pretty table for the assembler manual - -s generates the simulator code jump table - -d generates a define table - -x generates the simulator code switch statement - default used to generate the opcode tables - -*/ - -#include - -#define MAX_NR_STUFF 42 - -typedef struct -{ - char *defs; - char *refs; - char *name; - char *code; - char *stuff[MAX_NR_STUFF]; - int index; -} op; - - -op tab[] = -{ - - { "n", "", "add #,", "0111nnnni8*1....", - "R[n] += SEXT (i);", - "if (i == 0) {", - " UNDEF(n); /* see #ifdef PARANOID */", - " break;", - "}", - }, - { "n", "mn", "add ,", "0011nnnnmmmm1100", - "R[n] += R[m];", - }, - - { "n", "mn", "addc ,", "0011nnnnmmmm1110", - "ult = R[n] + T;", - "SET_SR_T (ult < R[n]);", - "R[n] = ult + R[m];", - "SET_SR_T (T || (R[n] < ult));", - }, - - { "n", "mn", "addv ,", "0011nnnnmmmm1111", - "ult = R[n] + R[m];", - "SET_SR_T ((~(R[n] ^ R[m]) & (ult ^ R[n])) >> 31);", - "R[n] = ult;", - }, - - { "0", "0", "and #,R0", "11001001i8*1....", - "R0 &= i;", - }, - { "n", "nm", "and ,", "0010nnnnmmmm1001", - "R[n] &= R[m];", - }, - { "", "0", "and.b #,@(R0,GBR)", "11001101i8*1....", - "MA (1);", - "WBAT (GBR + R0, RBAT (GBR + R0) & i);", - }, - - { "", "", "bf ", "10001011i8p1....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "if (!T) {", - " SET_NIP (PC + 4 + (SEXT (i) * 2));", - " cycles += 2;", - "}", - }, - - { "", "", "bf.s ", "10001111i8p1....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "if (!T) {", - " SET_NIP (PC + 4 + (SEXT (i) * 2));", - " cycles += 2;", - " Delay_Slot (PC + 2);", - "}", - }, - - { "", "n", "bit32 #imm3,@(disp12,)", "0011nnnni8*11001", - "/* 32-bit logical bit-manipulation instructions. */", - "int word2 = RIAT (nip);", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "i >>= 4; /* BOGUS: Using only three bits of 'i'. */", - "/* MSB of 'i' must be zero. */", - "if (i > 7)", - " RAISE_EXCEPTION (SIGILL);", - "MA (1);", - "do_blog_insn (1 << i, (word2 & 0xfff) + R[n], ", - " (word2 >> 12) & 0xf, memory, maskb);", - "SET_NIP (nip + 2); /* Consume 2 more bytes. */", - }, - { "", "", "bra ", "1010i12.........", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "SET_NIP (PC + 4 + (SEXT12 (i) * 2));", - "cycles += 2;", - "Delay_Slot (PC + 2);", - }, - - { "", "n", "braf ", "0000nnnn00100011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "SET_NIP (PC + 4 + R[n]);", - "cycles += 2;", - "Delay_Slot (PC + 2);", - }, - - { "", "", "bsr ", "1011i12.........", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "PR = PH2T (PC + 4);", - "SET_NIP (PC + 4 + (SEXT12 (i) * 2));", - "cycles += 2;", - "Delay_Slot (PC + 2);", - }, - - { "", "n", "bsrf ", "0000nnnn00000011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "PR = PH2T (PC) + 4;", - "SET_NIP (PC + 4 + R[n]);", - "cycles += 2;", - "Delay_Slot (PC + 2);", - }, - - { "", "", "bt ", "10001001i8p1....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "if (T) {", - " SET_NIP (PC + 4 + (SEXT (i) * 2));", - " cycles += 2;", - "}", - }, - - { "", "m", "bld/st #, ", "10000111mmmmi4*1", - "/* MSB of 'i' is true for load, false for store. */", - "if (i <= 7)", - " if (T)", - " R[m] |= (1 << i);", - " else", - " R[m] &= ~(1 << i);", - "else", - " SET_SR_T ((R[m] & (1 << (i - 8))) != 0);", - }, - { "m", "m", "bset/clr #, ", "10000110mmmmi4*1", - "/* MSB of 'i' is true for set, false for clear. */", - "if (i <= 7)", - " R[m] &= ~(1 << i);", - "else", - " R[m] |= (1 << (i - 8));", - }, - { "n", "n", "clips.b ", "0100nnnn10010001", - "if (R[n] < -128 || R[n] > 127) {", - " L (n);", - " SET_SR_CS (1);", - " if (R[n] > 127)", - " R[n] = 127;", - " else if (R[n] < -128)", - " R[n] = -128;", - "}", - }, - { "n", "n", "clips.w ", "0100nnnn10010101", - "if (R[n] < -32768 || R[n] > 32767) {", - " L (n);", - " SET_SR_CS (1);", - " if (R[n] > 32767)", - " R[n] = 32767;", - " else if (R[n] < -32768)", - " R[n] = -32768;", - "}", - }, - { "n", "n", "clipu.b ", "0100nnnn10000001", - "if (R[n] < -256 || R[n] > 255) {", - " L (n);", - " SET_SR_CS (1);", - " R[n] = 255;", - "}", - }, - { "n", "n", "clipu.w ", "0100nnnn10000101", - "if (R[n] < -65536 || R[n] > 65535) {", - " L (n);", - " SET_SR_CS (1);", - " R[n] = 65535;", - "}", - }, - { "n", "0n", "divs R0,", "0100nnnn10010100", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "if (R0 == 0)", - " R[n] = 0x7fffffff;", - "else if (R0 == -1 && R[n] == 0x80000000)", - " R[n] = 0x7fffffff;", - "else R[n] /= R0;", - "L (n);", - }, - { "n", "0n", "divu R0,", "0100nnnn10000100", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "if (R0 == 0)", - " R[n] = 0xffffffff;", - "/* FIXME: The result may be implementation-defined if it is outside */", - "/* the range of signed int (i.e. if R[n] was negative and R0 == 1). */", - "else R[n] = R[n] / (unsigned int) R0;", - "L (n);", - }, - { "n", "0n", "mulr R0,", "0100nnnn10000000", - "R[n] = (R[n] * R0) & 0xffffffff;", - "L (n);", - }, - { "0", "n", "ldbank @,R0", "0100nnnn11100101", - "int regn = (R[n] >> 2) & 0x1f;", - "int bankn = (R[n] >> 7) & 0x1ff;", - "if (regn > 19)", - " regn = 19; /* FIXME what should happen? */", - "R0 = saved_state.asregs.regstack[bankn].regs[regn];", - "L (0);", - }, - { "", "0n", "stbank R0,@", "0100nnnn11100001", - "int regn = (R[n] >> 2) & 0x1f;", - "int bankn = (R[n] >> 7) & 0x1ff;", - "if (regn > 19)", - " regn = 19; /* FIXME what should happen? */", - "saved_state.asregs.regstack[bankn].regs[regn] = R0;", - }, - { "", "", "resbank", "0000000001011011", - "int i;", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - /* FIXME: cdef all */ - "if (BO) { /* Bank Overflow */", - /* FIXME: how do we know when to reset BO? */ - " for (i = 0; i <= 14; i++) {", - " R[i] = RLAT (R[15]);", - " MA (1);", - " R[15] += 4;", - " }", - " PR = RLAT (R[15]);", - " R[15] += 4;", - " MA (1);", - " GBR = RLAT (R[15]);", - " R[15] += 4;", - " MA (1);", - " MACH = RLAT (R[15]);", - " R[15] += 4;", - " MA (1);", - " MACL = RLAT (R[15]);", - " R[15] += 4;", - " MA (1);", - "}", - "else if (BANKN == 0) /* Bank Underflow */", - " RAISE_EXCEPTION (SIGILL);", /* FIXME: what exception? */ - "else {", - " SET_BANKN (BANKN - 1);", - " for (i = 0; i <= 14; i++)", - " R[i] = saved_state.asregs.regstack[BANKN].regs[i];", - " MACH = saved_state.asregs.regstack[BANKN].regs[15];", - " PR = saved_state.asregs.regstack[BANKN].regs[17];", - " GBR = saved_state.asregs.regstack[BANKN].regs[18];", - " MACL = saved_state.asregs.regstack[BANKN].regs[19];", - "}", - }, - { "f", "f-", "movml.l ,@-R15", "0100nnnn11110001", - "/* Push Rn...R0 (if n==15, push pr and R14...R0). */", - "do {", - " MA (1);", - " R[15] -= 4;", - " if (n == 15)", - " WLAT (R[15], PR);", - " else", - " WLAT (R[15], R[n]);", - "} while (n-- > 0);", - }, - { "f", "f+", "movml.l @R15+,", "0100nnnn11110101", - "/* Pop R0...Rn (if n==15, pop R0...R14 and pr). */", - "int i = 0;\n", - "do {", - " MA (1);", - " if (i == 15)", - " PR = RLAT (R[15]);", - " else", - " R[i] = RLAT (R[15]);", - " R[15] += 4;", - "} while (i++ < n);", - }, - { "f", "f-", "movmu.l ,@-R15", "0100nnnn11110000", - "/* Push pr, R14...Rn (if n==15, push pr). */", /* FIXME */ - "int i = 15;\n", - "do {", - " MA (1);", - " R[15] -= 4;", - " if (i == 15)", - " WLAT (R[15], PR);", - " else", - " WLAT (R[15], R[i]);", - "} while (i-- > n);", - }, - { "f", "f+", "movmu.l @R15+,", "0100nnnn11110100", - "/* Pop Rn...R14, pr (if n==15, pop pr). */", /* FIXME */ - "do {", - " MA (1);", - " if (n == 15)", - " PR = RLAT (R[15]);", - " else", - " R[n] = RLAT (R[15]);", - " R[15] += 4;", - "} while (n++ < 15);", - }, - { "", "", "nott", "0000000001101000", - "SET_SR_T (T == 0);", - }, - - { "", "", "bt.s ", "10001101i8p1....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "if (T) {", - " SET_NIP (PC + 4 + (SEXT (i) * 2));", - " cycles += 2;", - " Delay_Slot (PC + 2);", - "}", - }, - - { "", "", "clrmac", "0000000000101000", - "MACH = 0;", - "MACL = 0;", - }, - - { "", "", "clrs", "0000000001001000", - "SET_SR_S (0);", - }, - - { "", "", "clrt", "0000000000001000", - "SET_SR_T (0);", - }, - - /* sh4a */ - { "", "", "clrdmxy", "0000000010001000", - "saved_state.asregs.cregs.named.sr &= ~(SR_MASK_DMX | SR_MASK_DMY);" - }, - - { "", "0", "cmp/eq #,R0", "10001000i8*1....", - "SET_SR_T (R0 == SEXT (i));", - }, - { "", "mn", "cmp/eq ,", "0011nnnnmmmm0000", - "SET_SR_T (R[n] == R[m]);", - }, - { "", "mn", "cmp/ge ,", "0011nnnnmmmm0011", - "SET_SR_T (R[n] >= R[m]);", - }, - { "", "mn", "cmp/gt ,", "0011nnnnmmmm0111", - "SET_SR_T (R[n] > R[m]);", - }, - { "", "mn", "cmp/hi ,", "0011nnnnmmmm0110", - "SET_SR_T (UR[n] > UR[m]);", - }, - { "", "mn", "cmp/hs ,", "0011nnnnmmmm0010", - "SET_SR_T (UR[n] >= UR[m]);", - }, - { "", "n", "cmp/pl ", "0100nnnn00010101", - "SET_SR_T (R[n] > 0);", - }, - { "", "n", "cmp/pz ", "0100nnnn00010001", - "SET_SR_T (R[n] >= 0);", - }, - { "", "mn", "cmp/str ,", "0010nnnnmmmm1100", - "ult = R[n] ^ R[m];", - "SET_SR_T (((ult & 0xff000000) == 0)", - " | ((ult & 0xff0000) == 0)", - " | ((ult & 0xff00) == 0)", - " | ((ult & 0xff) == 0));", - }, - - { "", "mn", "div0s ,", "0010nnnnmmmm0111", - "SET_SR_Q ((R[n] & sbit) != 0);", - "SET_SR_M ((R[m] & sbit) != 0);", - "SET_SR_T (M != Q);", - }, - - { "", "", "div0u", "0000000000011001", - "SET_SR_M (0);", - "SET_SR_Q (0);", - "SET_SR_T (0);", - }, - - { "n", "nm", "div1 ,", "0011nnnnmmmm0100", - "div1 (&R0, m, n/*, T*/);", - }, - - { "", "nm", "dmuls.l ,", "0011nnnnmmmm1101", - "dmul (1/*signed*/, R[n], R[m]);", - }, - - { "", "nm", "dmulu.l ,", "0011nnnnmmmm0101", - "dmul (0/*unsigned*/, R[n], R[m]);", - }, - - { "n", "n", "dt ", "0100nnnn00010000", - "R[n]--;", - "SET_SR_T (R[n] == 0);", - }, - - { "n", "m", "exts.b ,", "0110nnnnmmmm1110", - "R[n] = SEXT (R[m]);", - }, - { "n", "m", "exts.w ,", "0110nnnnmmmm1111", - "R[n] = SEXTW (R[m]);", - }, - - { "n", "m", "extu.b ,", "0110nnnnmmmm1100", - "R[n] = (R[m] & 0xff);", - }, - { "n", "m", "extu.w ,", "0110nnnnmmmm1101", - "R[n] = (R[m] & 0xffff);", - }, - - /* sh2e */ - { "", "", "fabs ", "1111nnnn01011101", - "FP_UNARY (n, fabs);", - "/* FIXME: FR (n) &= 0x7fffffff; */", - }, - - /* sh2e */ - { "", "", "fadd ,", "1111nnnnmmmm0000", - "FP_OP (n, +, m);", - }, - - /* sh2e */ - { "", "", "fcmp/eq ,", "1111nnnnmmmm0100", - "FP_CMP (n, ==, m);", - }, - /* sh2e */ - { "", "", "fcmp/gt ,", "1111nnnnmmmm0101", - "FP_CMP (n, >, m);", - }, - - /* sh4 */ - { "", "", "fcnvds ,FPUL", "1111nnnn10111101", - "if (! FPSCR_PR || n & 1)", - " RAISE_EXCEPTION (SIGILL);", - "else", - "{", - " union", - " {", - " int i;", - " float f;", - " } u;", - " u.f = DR (n);", - " FPUL = u.i;", - "}", - }, - - /* sh4 */ - { "", "", "fcnvsd FPUL,", "1111nnnn10101101", - "if (! FPSCR_PR || n & 1)", - " RAISE_EXCEPTION (SIGILL);", - "else", - "{", - " union", - " {", - " int i;", - " float f;", - " } u;", - " u.i = FPUL;", - " SET_DR (n, u.f);", - "}", - }, - - /* sh2e */ - { "", "", "fdiv ,", "1111nnnnmmmm0011", - "FP_OP (n, /, m);", - "/* FIXME: check for DP and (n & 1) == 0? */", - }, - - /* sh4 */ - { "", "", "fipr ,", "1111vvVV11101101", - "if (FPSCR_PR)", - " RAISE_EXCEPTION (SIGILL);", - "else", - "{", - " double fsum = 0;", - " if (saved_state.asregs.bfd_mach == bfd_mach_sh2a)", - " RAISE_EXCEPTION (SIGILL);", - " /* FIXME: check for nans and infinities. */", - " fsum += FR (v1+0) * FR (v2+0);", - " fsum += FR (v1+1) * FR (v2+1);", - " fsum += FR (v1+2) * FR (v2+2);", - " fsum += FR (v1+3) * FR (v2+3);", - " SET_FR (v1+3, fsum);", - "}", - }, - - /* sh2e */ - { "", "", "fldi0 ", "1111nnnn10001101", - "SET_FR (n, (float) 0.0);", - "/* FIXME: check for DP and (n & 1) == 0? */", - }, - - /* sh2e */ - { "", "", "fldi1 ", "1111nnnn10011101", - "SET_FR (n, (float) 1.0);", - "/* FIXME: check for DP and (n & 1) == 0? */", - }, - - /* sh2e */ - { "", "", "flds ,FPUL", "1111nnnn00011101", - " union", - " {", - " int i;", - " float f;", - " } u;", - " u.f = FR (n);", - " FPUL = u.i;", - }, - - /* sh2e */ - { "", "", "float FPUL,", "1111nnnn00101101", - /* sh4 */ - "if (FPSCR_PR)", - " SET_DR (n, (double) FPUL);", - "else", - "{", - " SET_FR (n, (float) FPUL);", - "}", - }, - - /* sh2e */ - { "", "", "fmac ,,", "1111nnnnmmmm1110", - "SET_FR (n, FR (m) * FR (0) + FR (n));", - "/* FIXME: check for DP and (n & 1) == 0? */", - }, - - /* sh2e */ - { "", "", "fmov ,", "1111nnnnmmmm1100", - /* sh4 */ - "if (FPSCR_SZ) {", - " int ni = XD_TO_XF (n);", - " int mi = XD_TO_XF (m);", - " SET_XF (ni + 0, XF (mi + 0));", - " SET_XF (ni + 1, XF (mi + 1));", - "}", - "else", - "{", - " SET_FR (n, FR (m));", - "}", - }, - /* sh2e */ - { "", "n", "fmov.s ,@", "1111nnnnmmmm1010", - /* sh4 */ - "if (FPSCR_SZ) {", - " MA (2);", - " WDAT (R[n], m);", - "}", - "else", - "{", - " MA (1);", - " WLAT (R[n], FI (m));", - "}", - }, - /* sh2e */ - { "", "m", "fmov.s @,", "1111nnnnmmmm1000", - /* sh4 */ - "if (FPSCR_SZ) {", - " MA (2);", - " RDAT (R[m], n);", - "}", - "else", - "{", - " MA (1);", - " SET_FI (n, RLAT (R[m]));", - "}", - }, - /* sh2a */ - { "", "n", "fmov.s @(disp12,), ", "0011nnnnmmmm0001", - "/* and fmov.s , @(disp12,)", - " and mov.bwl , @(disp12,)", - " and mov.bwl @(disp12,),", - " and movu.bw @(disp12,),. */", - "int word2 = RIAT (nip);", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "SET_NIP (nip + 2); /* Consume 2 more bytes. */", - "MA (1);", - "do_long_move_insn (word2 & 0xf000, word2 & 0x0fff, m, n, &thislock);", - }, - /* sh2e */ - { "m", "m", "fmov.s @+,", "1111nnnnmmmm1001", - /* sh4 */ - "if (FPSCR_SZ) {", - " MA (2);", - " RDAT (R[m], n);", - " R[m] += 8;", - "}", - "else", - "{", - " MA (1);", - " SET_FI (n, RLAT (R[m]));", - " R[m] += 4;", - "}", - }, - /* sh2e */ - { "n", "n", "fmov.s ,@-", "1111nnnnmmmm1011", - /* sh4 */ - "if (FPSCR_SZ) {", - " MA (2);", - " R[n] -= 8;", - " WDAT (R[n], m);", - "}", - "else", - "{", - " MA (1);", - " R[n] -= 4;", - " WLAT (R[n], FI (m));", - "}", - }, - /* sh2e */ - { "", "0m", "fmov.s @(R0,),", "1111nnnnmmmm0110", - /* sh4 */ - "if (FPSCR_SZ) {", - " MA (2);", - " RDAT (R[0]+R[m], n);", - "}", - "else", - "{", - " MA (1);", - " SET_FI (n, RLAT (R[0] + R[m]));", - "}", - }, - /* sh2e */ - { "", "0n", "fmov.s ,@(R0,)", "1111nnnnmmmm0111", - /* sh4 */ - "if (FPSCR_SZ) {", - " MA (2);", - " WDAT (R[0]+R[n], m);", - "}", - "else", - "{", - " MA (1);", - " WLAT ((R[0]+R[n]), FI (m));", - "}", - }, - - /* sh4: - See fmov instructions above for move to/from extended fp registers. */ - - /* sh2e */ - { "", "", "fmul ,", "1111nnnnmmmm0010", - "FP_OP (n, *, m);", - }, - - /* sh2e */ - { "", "", "fneg ", "1111nnnn01001101", - "FP_UNARY (n, -);", - }, - - /* sh4a */ - { "", "", "fpchg", "1111011111111101", - "SET_FPSCR (GET_FPSCR () ^ FPSCR_MASK_PR);", - }, - - /* sh4 */ - { "", "", "frchg", "1111101111111101", - "if (FPSCR_PR)", - " RAISE_EXCEPTION (SIGILL);", - "else if (saved_state.asregs.bfd_mach == bfd_mach_sh2a)", - " RAISE_EXCEPTION (SIGILL);", - "else", - " SET_FPSCR (GET_FPSCR () ^ FPSCR_MASK_FR);", - }, - - /* sh4 */ - { "", "", "fsca", "1111eeee11111101", - "if (FPSCR_PR)", - " RAISE_EXCEPTION (SIGILL);", - "else if (saved_state.asregs.bfd_mach == bfd_mach_sh2a)", - " RAISE_EXCEPTION (SIGILL);", - "else", - " {", - " SET_FR (n, fsca_s (FPUL, &sin));", - " SET_FR (n+1, fsca_s (FPUL, &cos));", - " }", - }, - - /* sh4 */ - { "", "", "fschg", "1111001111111101", - "SET_FPSCR (GET_FPSCR () ^ FPSCR_MASK_SZ);", - }, - - /* sh3e */ - { "", "", "fsqrt ", "1111nnnn01101101", - "FP_UNARY (n, sqrt);", - }, - - /* sh4 */ - { "", "", "fsrra ", "1111nnnn01111101", - "if (FPSCR_PR)", - " RAISE_EXCEPTION (SIGILL);", - "else if (saved_state.asregs.bfd_mach == bfd_mach_sh2a)", - " RAISE_EXCEPTION (SIGILL);", - "else", - " SET_FR (n, fsrra_s (FR (n)));", - }, - - /* sh2e */ - { "", "", "fsub ,", "1111nnnnmmmm0001", - "FP_OP (n, -, m);", - }, - - /* sh2e */ - { "", "", "ftrc , FPUL", "1111nnnn00111101", - /* sh4 */ - "if (FPSCR_PR) {", - " if (DR (n) != DR (n)) /* NaN */", - " FPUL = 0x80000000;", - " else", - " FPUL = (int) DR (n);", - "}", - "else", - "if (FR (n) != FR (n)) /* NaN */", - " FPUL = 0x80000000;", - "else", - " FPUL = (int) FR (n);", - }, - - /* sh4 */ - { "", "", "ftrv ", "1111vv0111111101", - "if (FPSCR_PR)", - " RAISE_EXCEPTION (SIGILL);", - "else", - "{", - " if (saved_state.asregs.bfd_mach == bfd_mach_sh2a)", - " RAISE_EXCEPTION (SIGILL);", - " /* FIXME not implemented. */", - " printf (\"ftrv xmtrx, FV%d\\n\", v1);", - "}", - }, - - /* sh2e */ - { "", "", "fsts FPUL,", "1111nnnn00001101", - " union", - " {", - " int i;", - " float f;", - " } u;", - " u.i = FPUL;", - " SET_FR (n, u.f);", - }, - - { "", "n", "jmp @", "0100nnnn00101011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "SET_NIP (PT2H (R[n]));", - "cycles += 2;", - "Delay_Slot (PC + 2);", - }, - - { "", "n", "jsr @", "0100nnnn00001011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "PR = PH2T (PC + 4);", - "if (~doprofile)", - " gotcall (PR, R[n]);", - "SET_NIP (PT2H (R[n]));", - "cycles += 2;", - "Delay_Slot (PC + 2);", - }, - { "", "n", "jsr/n @", "0100nnnn01001011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "PR = PH2T (PC + 2);", - "if (~doprofile)", - " gotcall (PR, R[n]);", - "SET_NIP (PT2H (R[n]));", - }, - { "", "", "jsr/n @@(,TBR)", "10000011i8p4....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "PR = PH2T (PC + 2);", - "if (~doprofile)", - " gotcall (PR, i + TBR);", - "SET_NIP (PT2H (i + TBR));", - }, - - { "", "n", "ldc ,", "0100nnnnmmmm1110", - "CREG (m) = R[n];", - "/* FIXME: user mode */", - }, - { "", "n", "ldc ,SR", "0100nnnn00001110", - "SET_SR (R[n]);", - "/* FIXME: user mode */", - }, - { "", "n", "ldc ,MOD", "0100nnnn01011110", - "SET_MOD (R[n]);", - }, - { "", "n", "ldc ,DBR", "0100nnnn11111010", - "if (SR_MD)", - " DBR = R[n]; /* priv mode */", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "", "n", "ldc ,SGR", "0100nnnn00111010", - "if (SR_MD)", - " SGR = R[n]; /* priv mode */", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "", "n", "ldc ,TBR", "0100nnnn01001010", - "if (SR_MD)", /* FIXME? */ - " TBR = R[n]; /* priv mode */", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "n", "n", "ldc.l @+,", "0100nnnnmmmm0111", - "MA (1);", - "CREG (m) = RLAT (R[n]);", - "R[n] += 4;", - "/* FIXME: user mode */", - }, - { "n", "n", "ldc.l @+,SR", "0100nnnn00000111", - "MA (1);", - "SET_SR (RLAT (R[n]));", - "R[n] += 4;", - "/* FIXME: user mode */", - }, - { "n", "n", "ldc.l @+,MOD", "0100nnnn01010111", - "MA (1);", - "SET_MOD (RLAT (R[n]));", - "R[n] += 4;", - }, - { "n", "n", "ldc.l @+,DBR", "0100nnnn11110110", - "if (SR_MD)", - "{ /* priv mode */", - " MA (1);", - " DBR = RLAT (R[n]);", - " R[n] += 4;", - "}", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "n", "n", "ldc.l @+,SGR", "0100nnnn00110110", - "if (SR_MD)", - "{ /* priv mode */", - " MA (1);", - " SGR = RLAT (R[n]);", - " R[n] += 4;", - "}", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - - /* sh-dsp */ - { "", "", "ldre @(,PC)", "10001110i8p1....", - "RE = SEXT (i) * 2 + 4 + PH2T (PC);", - }, - { "", "", "ldrs @(,PC)", "10001100i8p1....", - "RS = SEXT (i) * 2 + 4 + PH2T (PC);", - }, - - /* sh4a */ - { "", "n", "ldrc ", "0100nnnn00110100", - "SET_RC (R[n]);", - "loop = get_loop_bounds_ext (RS, RE, memory, mem_end, maskw, endianw);", - "CHECK_INSN_PTR (insn_ptr);", - "RE |= 1;", - }, - { "", "", "ldrc #", "10001010i8*1....", - "SET_RC (i);", - "loop = get_loop_bounds_ext (RS, RE, memory, mem_end, maskw, endianw);", - "CHECK_INSN_PTR (insn_ptr);", - "RE |= 1;", - }, - - { "", "n", "lds ,", "0100nnnnssss1010", - "SREG (m) = R[n];", - }, - { "n", "n", "lds.l @+,", "0100nnnnssss0110", - "MA (1);", - "SREG (m) = RLAT (R[n]);", - "R[n] += 4;", - }, - /* sh2e / sh-dsp (lds ,DSR) */ - { "", "n", "lds ,FPSCR", "0100nnnn01101010", - "SET_FPSCR (R[n]);", - }, - /* sh2e / sh-dsp (lds.l @+,DSR) */ - { "n", "n", "lds.l @+,FPSCR", "0100nnnn01100110", - "MA (1);", - "SET_FPSCR (RLAT (R[n]));", - "R[n] += 4;", - }, - - { "", "", "ldtlb", "0000000000111000", - "/* We don't implement cache or tlb, so this is a noop. */", - }, - - { "nm", "nm", "mac.l @+,@+", "0000nnnnmmmm1111", - "macl (&R0, memory, n, m);", - }, - - { "nm", "nm", "mac.w @+,@+", "0100nnnnmmmm1111", - "macw (&R0, memory, n, m, endianw);", - }, - - { "n", "", "mov #,", "1110nnnni8*1....", - "R[n] = SEXT (i);", - }, - { "n", "", "movi20 #,", "0000nnnni8*10000", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "R[n] = ((i << 24) >> 12) | RIAT (nip);", - "SET_NIP (nip + 2); /* Consume 2 more bytes. */", - }, - { "n", "", "movi20s #,", "0000nnnni8*10001", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "R[n] = ((((i & 0xf0) << 24) >> 12) | RIAT (nip)) << 8;", - "SET_NIP (nip + 2); /* Consume 2 more bytes. */", - }, - { "n", "m", "mov ,", "0110nnnnmmmm0011", - "R[n] = R[m];", - }, - - { "0", "", "mov.b @(,GBR),R0", "11000100i8*1....", - "MA (1);", - "R0 = RSBAT (i + GBR);", - "L (0);", - }, - { "0", "m", "mov.b @(,),R0", "10000100mmmmi4*1", - "MA (1);", - "R0 = RSBAT (i + R[m]);", - "L (0);", - }, - { "n", "0m", "mov.b @(R0,),", "0000nnnnmmmm1100", - "MA (1);", - "R[n] = RSBAT (R0 + R[m]);", - "L (n);", - }, - { "nm", "m", "mov.b @+,", "0110nnnnmmmm0100", - "MA (1);", - "R[n] = RSBAT (R[m]);", - "R[m] += 1;", - "L (n);", - }, - { "0n", "n", "mov.b @-,R0", "0100nnnn11001011", - "MA (1);", - "R[n] -= 1;", - "R0 = RSBAT (R[n]);", - "L (0);", - }, - { "", "mn", "mov.b ,@", "0010nnnnmmmm0000", - "MA (1);", - "WBAT (R[n], R[m]);", - }, - { "", "0", "mov.b R0,@(,GBR)", "11000000i8*1....", - "MA (1);", - "WBAT (i + GBR, R0);", - }, - { "", "m0", "mov.b R0,@(,)", "10000000mmmmi4*1", - "MA (1);", - "WBAT (i + R[m], R0);", - }, - { "", "mn0", "mov.b ,@(R0,)", "0000nnnnmmmm0100", - "MA (1);", - "WBAT (R[n] + R0, R[m]);", - }, - { "n", "nm", "mov.b ,@-", "0010nnnnmmmm0100", - /* Allow for the case where m == n. */ - "int t = R[m];", - "MA (1);", - "R[n] -= 1;", - "WBAT (R[n], t);", - }, - { "n", "n0", "mov.b R0,@+", "0100nnnn10001011", - "MA (1);", - "WBAT (R[n], R0);", - "R[n] += 1;", - }, - { "n", "m", "mov.b @,", "0110nnnnmmmm0000", - "MA (1);", - "R[n] = RSBAT (R[m]);", - "L (n);", - }, - - { "0", "", "mov.l @(,GBR),R0", "11000110i8*4....", - "MA (1);", - "R0 = RLAT (i + GBR);", - "L (0);", - }, - { "n", "", "mov.l @(,PC),", "1101nnnni8p4....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "MA (1);", - "R[n] = RLAT ((PH2T (PC) & ~3) + 4 + i);", - "L (n);", - }, - { "n", "m", "mov.l @(,),", "0101nnnnmmmmi4*4", - "MA (1);", - "R[n] = RLAT (i + R[m]);", - "L (n);", - }, - { "n", "m0", "mov.l @(R0,),", "0000nnnnmmmm1110", - "MA (1);", - "R[n] = RLAT (R0 + R[m]);", - "L (n);", - }, - { "nm", "m", "mov.l @+,", "0110nnnnmmmm0110", - "MA (1);", - "R[n] = RLAT (R[m]);", - "R[m] += 4;", - "L (n);", - }, - { "0n", "n", "mov.l @-,R0", "0100nnnn11101011", - "MA (1);", - "R[n] -= 4;", - "R0 = RLAT (R[n]);", - "L (0);", - }, - { "n", "m", "mov.l @,", "0110nnnnmmmm0010", - "MA (1);", - "R[n] = RLAT (R[m]);", - "L (n);", - }, - { "", "0", "mov.l R0,@(,GBR)", "11000010i8*4....", - "MA (1);", - "WLAT (i + GBR, R0);", - }, - { "", "nm", "mov.l ,@(,)", "0001nnnnmmmmi4*4", - "MA (1);", - "WLAT (i + R[n], R[m]);", - }, - { "", "nm0", "mov.l ,@(R0,)", "0000nnnnmmmm0110", - "MA (1);", - "WLAT (R0 + R[n], R[m]);", - }, - { "n", "nm", "mov.l ,@-", "0010nnnnmmmm0110", - /* Allow for the case where m == n. */ - "int t = R[m];", - "MA (1) ;", - "R[n] -= 4;", - "WLAT (R[n], t);", - }, - { "n", "n0", "mov.l R0,@+", "0100nnnn10101011", - "MA (1) ;", - "WLAT (R[n], R0);", - "R[n] += 4;", - }, - { "", "nm", "mov.l ,@", "0010nnnnmmmm0010", - "MA (1);", - "WLAT (R[n], R[m]);", - }, - - { "0", "", "mov.w @(,GBR),R0", "11000101i8*2....", - "MA (1);", - "R0 = RSWAT (i + GBR);", - "L (0);", - }, - { "n", "", "mov.w @(,PC),", "1001nnnni8p2....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "MA (1);", - "R[n] = RSWAT (PH2T (PC + 4 + i));", - "L (n);", - }, - { "0", "m", "mov.w @(,),R0", "10000101mmmmi4*2", - "MA (1);", - "R0 = RSWAT (i + R[m]);", - "L (0);", - }, - { "n", "m0", "mov.w @(R0,),", "0000nnnnmmmm1101", - "MA (1);", - "R[n] = RSWAT (R0 + R[m]);", - "L (n);", - }, - { "nm", "n", "mov.w @+,", "0110nnnnmmmm0101", - "MA (1);", - "R[n] = RSWAT (R[m]);", - "R[m] += 2;", - "L (n);", - }, - { "0n", "n", "mov.w @-,R0", "0100nnnn11011011", - "MA (1);", - "R[n] -= 2;", - "R0 = RSWAT (R[n]);", - "L (0);", - }, - { "n", "m", "mov.w @,", "0110nnnnmmmm0001", - "MA (1);", - "R[n] = RSWAT (R[m]);", - "L (n);", - }, - { "", "0", "mov.w R0,@(,GBR)", "11000001i8*2....", - "MA (1);", - "WWAT (i + GBR, R0);", - }, - { "", "0m", "mov.w R0,@(,)", "10000001mmmmi4*2", - "MA (1);", - "WWAT (i + R[m], R0);", - }, - { "", "m0n", "mov.w ,@(R0,)", "0000nnnnmmmm0101", - "MA (1);", - "WWAT (R0 + R[n], R[m]);", - }, - { "n", "mn", "mov.w ,@-", "0010nnnnmmmm0101", - /* Allow for the case where m == n. */ - "int t = R[m];", - "MA (1);", - "R[n] -= 2;", - "WWAT (R[n], t);", - }, - { "n", "0n", "mov.w R0,@+", "0100nnnn10011011", - "MA (1);", - "WWAT (R[n], R0);", - "R[n] += 2;", - }, - { "", "nm", "mov.w ,@", "0010nnnnmmmm0001", - "MA (1);", - "WWAT (R[n], R[m]);", - }, - - { "0", "", "mova @(,PC),R0", "11000111i8p4....", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "R0 = ((i + 4 + PH2T (PC)) & ~0x3);", - }, - - { "", "n0", "movca.l R0, @", "0000nnnn11000011", - "/* We don't simulate cache, so this insn is identical to mov. */", - "MA (1);", - "WLAT (R[n], R[0]);", - }, - - { "", "n0", "movco.l R0, @", "0000nnnn01110011", - "/* LDST -> T */", - "SET_SR_T (LDST);", - "/* if (T) R0 -> (Rn) */", - "if (T)", - " WLAT (R[n], R[0]);", - "/* 0 -> LDST */", - "SET_LDST (0);", - }, - - { "0", "n", "movli.l @, R0", "0000nnnn01100011", - "/* 1 -> LDST */", - "SET_LDST (1);", - "/* (Rn) -> R0 */", - "R[0] = RLAT (R[n]);", - "/* if (interrupt/exception) 0 -> LDST */", - "/* (we don't simulate asynchronous interrupts/exceptions) */", - }, - - { "n", "", "movt ", "0000nnnn00101001", - "R[n] = T;", - }, - { "", "", "movrt ", "0000nnnn00111001", - "R[n] = (T == 0);", - }, - { "0", "n", "movua.l @,R0", "0100nnnn10101001", - "int regn = R[n];", - "int e = target_little_endian ? 3 : 0;", - "MA (1);", - "R[0] = (RBAT (regn + (0^e)) << 24) + (RBAT (regn + (1^e)) << 16) + ", - " (RBAT (regn + (2^e)) << 8) + RBAT (regn + (3^e));", - "L (0);", - }, - { "0n", "n", "movua.l @+,R0", "0100nnnn11101001", - "int regn = R[n];", - "int e = target_little_endian ? 3 : 0;", - "MA (1);", - "R[0] = (RBAT (regn + (0^e)) << 24) + (RBAT (regn + (1^e)) << 16) + ", - " (RBAT (regn + (2^e)) << 8) + RBAT (regn + (3^e));", - "R[n] += 4;", - "L (0);", - }, - { "", "mn", "mul.l ,", "0000nnnnmmmm0111", - "MACL = ((int) R[n]) * ((int) R[m]);", - }, -#if 0 /* FIXME: The above cast to int is not really portable. - It should be replaced by a SEXT32 macro. */ - { "", "nm", "mul.l ,", "0000nnnnmmmm0111", - "MACL = R[n] * R[m];", - }, -#endif - - /* muls.w - see muls */ - { "", "mn", "muls ,", "0010nnnnmmmm1111", - "MACL = ((int) (short) R[n]) * ((int) (short) R[m]);", - }, - - /* mulu.w - see mulu */ - { "", "mn", "mulu ,", "0010nnnnmmmm1110", - "MACL = (((unsigned int) (unsigned short) R[n])", - " * ((unsigned int) (unsigned short) R[m]));", - }, - - { "n", "m", "neg ,", "0110nnnnmmmm1011", - "R[n] = - R[m];", - }, - - { "n", "m", "negc ,", "0110nnnnmmmm1010", - "ult = -T;", - "SET_SR_T (ult > 0);", - "R[n] = ult - R[m];", - "SET_SR_T (T || (R[n] > ult));", - }, - - { "", "", "nop", "0000000000001001", - "/* nop */", - }, - - { "n", "m", "not ,", "0110nnnnmmmm0111", - "R[n] = ~R[m];", - }, - - /* sh4a */ - { "", "n", "icbi @", "0000nnnn11100011", - "/* Except for the effect on the cache - which is not simulated -", - " this is like a nop. */", - }, - - { "", "n", "ocbi @", "0000nnnn10010011", - "RSBAT (R[n]); /* Take exceptions like byte load, otherwise noop. */", - "/* FIXME: Cache not implemented */", - }, - - { "", "n", "ocbp @", "0000nnnn10100011", - "RSBAT (R[n]); /* Take exceptions like byte load, otherwise noop. */", - "/* FIXME: Cache not implemented */", - }, - - { "", "n", "ocbwb @", "0000nnnn10110011", - "RSBAT (R[n]); /* Take exceptions like byte load, otherwise noop. */", - "/* FIXME: Cache not implemented */", - }, - - { "0", "", "or #,R0", "11001011i8*1....", - "R0 |= i;", - }, - { "n", "m", "or ,", "0010nnnnmmmm1011", - "R[n] |= R[m];", - }, - { "", "0", "or.b #,@(R0,GBR)", "11001111i8*1....", - "MA (1);", - "WBAT (R0 + GBR, (RBAT (R0 + GBR) | i));", - }, - - { "", "n", "pref @", "0000nnnn10000011", - "/* Except for the effect on the cache - which is not simulated -", - " this is like a nop. */", - }, - - /* sh4a */ - { "", "n", "prefi @", "0000nnnn11010011", - "/* Except for the effect on the cache - which is not simulated -", - " this is like a nop. */", - }, - - /* sh4a */ - { "", "", "synco", "0000000010101011", - "/* Except for the effect on the pipeline - which is not simulated -", - " this is like a nop. */", - }, - - { "n", "n", "rotcl ", "0100nnnn00100100", - "ult = R[n] < 0;", - "R[n] = (R[n] << 1) | T;", - "SET_SR_T (ult);", - }, - - { "n", "n", "rotcr ", "0100nnnn00100101", - "ult = R[n] & 1;", - "R[n] = (UR[n] >> 1) | (T << 31);", - "SET_SR_T (ult);", - }, - - { "n", "n", "rotl ", "0100nnnn00000100", - "SET_SR_T (R[n] < 0);", - "R[n] <<= 1;", - "R[n] |= T;", - }, - - { "n", "n", "rotr ", "0100nnnn00000101", - "SET_SR_T (R[n] & 1);", - "R[n] = UR[n] >> 1;", - "R[n] |= (T << 31);", - }, - - { "", "", "rte", "0000000000101011", -#if 0 - /* SH-[12] */ - "int tmp = PC;", - "SET_NIP (PT2H (RLAT (R[15]) + 2));", - "R[15] += 4;", - "SET_SR (RLAT (R[15]) & 0x3f3);", - "R[15] += 4;", - "Delay_Slot (PC + 2);", -#else - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "SET_SR (SSR);", - "SET_NIP (PT2H (SPC));", - "cycles += 2;", - "Delay_Slot (PC + 2);", -#endif - }, - - { "", "", "rts", "0000000000001011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "SET_NIP (PT2H (PR));", - "cycles += 2;", - "Delay_Slot (PC + 2);", - }, - { "", "", "rts/n", "0000000001101011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "SET_NIP (PT2H (PR));", - }, - { "0", "n", "rtv/n ", "0000nnnn01111011", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "R0 = R[n];", - "L (0);", - "SET_NIP (PT2H (PR));", - }, - - /* sh4a */ - { "", "", "setdmx", "0000000010011000", - "saved_state.asregs.cregs.named.sr |= SR_MASK_DMX;" - "saved_state.asregs.cregs.named.sr &= ~SR_MASK_DMY;" - }, - - /* sh4a */ - { "", "", "setdmy", "0000000011001000", - "saved_state.asregs.cregs.named.sr |= SR_MASK_DMY;" - "saved_state.asregs.cregs.named.sr &= ~SR_MASK_DMX;" - }, - - /* sh-dsp */ - { "", "n", "setrc ", "0100nnnn00010100", - "SET_RC (R[n]);", - }, - { "", "", "setrc #", "10000010i8*1....", - /* It would be more realistic to let loop_start point to some static - memory that contains an illegal opcode and then give a bus error when - the loop is eventually encountered, but it seems not only simpler, - but also more debugging-friendly to just catch the failure here. */ - "if (BUSERROR (RS | RE, maskw))", - " RAISE_EXCEPTION (SIGILL);", - "else {", - " SET_RC (i);", - " loop = get_loop_bounds (RS, RE, memory, mem_end, maskw, endianw);", - " CHECK_INSN_PTR (insn_ptr);", - "}", - }, - - { "", "", "sets", "0000000001011000", - "SET_SR_S (1);", - }, - - { "", "", "sett", "0000000000011000", - "SET_SR_T (1);", - }, - - { "n", "mn", "shad ,", "0100nnnnmmmm1100", - "R[n] = (R[m] < 0) ? (R[m]&0x1f ? R[n] >> ((-R[m])&0x1f) : R[n] >> 31) : (R[n] << (R[m] & 0x1f));", - }, - - { "n", "n", "shal ", "0100nnnn00100000", - "SET_SR_T (R[n] < 0);", - "R[n] <<= 1;", - }, - - { "n", "n", "shar ", "0100nnnn00100001", - "SET_SR_T (R[n] & 1);", - "R[n] = R[n] >> 1;", - }, - - { "n", "mn", "shld ,", "0100nnnnmmmm1101", - "R[n] = (R[m] < 0) ? (R[m]&0x1f ? UR[n] >> ((-R[m])&0x1f) : 0): (R[n] << (R[m] & 0x1f));", - }, - - { "n", "n", "shll ", "0100nnnn00000000", - "SET_SR_T (R[n] < 0);", - "R[n] <<= 1;", - }, - - { "n", "n", "shll2 ", "0100nnnn00001000", - "R[n] <<= 2;", - }, - { "n", "n", "shll8 ", "0100nnnn00011000", - "R[n] <<= 8;", - }, - { "n", "n", "shll16 ", "0100nnnn00101000", - "R[n] <<= 16;", - }, - - { "n", "n", "shlr ", "0100nnnn00000001", - "SET_SR_T (R[n] & 1);", - "R[n] = UR[n] >> 1;", - }, - - { "n", "n", "shlr2 ", "0100nnnn00001001", - "R[n] = UR[n] >> 2;", - }, - { "n", "n", "shlr8 ", "0100nnnn00011001", - "R[n] = UR[n] >> 8;", - }, - { "n", "n", "shlr16 ", "0100nnnn00101001", - "R[n] = UR[n] >> 16;", - }, - - { "", "", "sleep", "0000000000011011", - "nip += trap (0xc3, &R0, PC, memory, maskl, maskw, endianw);", - }, - - { "n", "", "stc ,", "0000nnnnmmmm0010", - "R[n] = CREG (m);", - }, - - { "n", "", "stc SGR,", "0000nnnn00111010", - "if (SR_MD)", - " R[n] = SGR; /* priv mode */", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "n", "", "stc DBR,", "0000nnnn11111010", - "if (SR_MD)", - " R[n] = DBR; /* priv mode */", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "n", "", "stc TBR,", "0000nnnn01001010", - "if (SR_MD)", /* FIXME? */ - " R[n] = TBR; /* priv mode */", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "n", "n", "stc.l ,@-", "0100nnnnmmmm0011", - "MA (1);", - "R[n] -= 4;", - "WLAT (R[n], CREG (m));", - }, - { "n", "n", "stc.l SGR,@-", "0100nnnn00110010", - "if (SR_MD)", - "{ /* priv mode */", - " MA (1);", - " R[n] -= 4;", - " WLAT (R[n], SGR);", - "}", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - { "n", "n", "stc.l DBR,@-", "0100nnnn11110010", - "if (SR_MD)", - "{ /* priv mode */", - " MA (1);", - " R[n] -= 4;", - " WLAT (R[n], DBR);", - "}", - "else", - " RAISE_EXCEPTION (SIGILL); /* user mode */", - }, - - { "n", "", "sts ,", "0000nnnnssss1010", - "R[n] = SREG (m);", - }, - { "n", "n", "sts.l ,@-", "0100nnnnssss0010", - "MA (1);", - "R[n] -= 4;", - "WLAT (R[n], SREG (m));", - }, - - { "n", "nm", "sub ,", "0011nnnnmmmm1000", - "R[n] -= R[m];", - }, - - { "n", "nm", "subc ,", "0011nnnnmmmm1010", - "ult = R[n] - T;", - "SET_SR_T (ult > R[n]);", - "R[n] = ult - R[m];", - "SET_SR_T (T || (R[n] > ult));", - }, - - { "n", "nm", "subv ,", "0011nnnnmmmm1011", - "ult = R[n] - R[m];", - "SET_SR_T (((R[n] ^ R[m]) & (ult ^ R[n])) >> 31);", - "R[n] = ult;", - }, - - { "n", "nm", "swap.b ,", "0110nnnnmmmm1000", - "R[n] = ((R[m] & 0xffff0000)", - " | ((R[m] << 8) & 0xff00)", - " | ((R[m] >> 8) & 0x00ff));", - }, - { "n", "nm", "swap.w ,", "0110nnnnmmmm1001", - "R[n] = (((R[m] << 16) & 0xffff0000)", - " | ((R[m] >> 16) & 0x00ffff));", - }, - - { "", "n", "tas.b @", "0100nnnn00011011", - "MA (1);", - "ult = RBAT (R[n]);", - "SET_SR_T (ult == 0);", - "WBAT (R[n],ult|0x80);", - }, - - { "0", "", "trapa #", "11000011i8*1....", - "long imm = 0xff & i;", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "if (i < 20 || i == 33 || i == 34 || i == 0xc3)", - " nip += trap (i, &R0, PC, memory, maskl, maskw, endianw);", -#if 0 - "else {", - /* SH-[12] */ - " R[15] -= 4;", - " WLAT (R[15], GET_SR ());", - " R[15] -= 4;", - " WLAT (R[15], PH2T (PC + 2));", -#else - "else if (!SR_BL) {", - " SSR = GET_SR ();", - " SPC = PH2T (PC + 2);", - " SET_SR (GET_SR () | SR_MASK_MD | SR_MASK_BL | SR_MASK_RB);", - " /* FIXME: EXPEVT = 0x00000160; */", -#endif - " SET_NIP (PT2H (RLAT (VBR + (imm<<2))));", - "}", - }, - - { "", "mn", "tst ,", "0010nnnnmmmm1000", - "SET_SR_T ((R[n] & R[m]) == 0);", - }, - { "", "0", "tst #,R0", "11001000i8*1....", - "SET_SR_T ((R0 & i) == 0);", - }, - { "", "0", "tst.b #,@(R0,GBR)", "11001100i8*1....", - "MA (1);", - "SET_SR_T ((RBAT (GBR+R0) & i) == 0);", - }, - - { "", "0", "xor #,R0", "11001010i8*1....", - "R0 ^= i;", - }, - { "n", "mn", "xor ,", "0010nnnnmmmm1010", - "R[n] ^= R[m];", - }, - { "", "0", "xor.b #,@(R0,GBR)", "11001110i8*1....", - "MA (1);", - "ult = RBAT (GBR+R0);", - "ult ^= i;", - "WBAT (GBR + R0, ult);", - }, - - { "n", "nm", "xtrct ,", "0010nnnnmmmm1101", - "R[n] = (((R[n] >> 16) & 0xffff)", - " | ((R[m] << 16) & 0xffff0000));", - }, - -#if 0 - { "divs.l ,", "0100nnnnmmmm1110", - "divl (0, R[n], R[m]);", - }, - { "divu.l ,", "0100nnnnmmmm1101", - "divl (0, R[n], R[m]);", - }, -#endif - - {0, 0}}; - -op movsxy_tab[] = -{ -/* If this is disabled, the simulator speeds up by about 12% on a - 450 MHz PIII - 9% with ACE_FAST. - Maybe we should have separate simulator loops? */ -#if 1 - { "n", "n", "movs.w @-,", "111101NNMMMM0000", - "MA (1);", - "R[n] -= 2;", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - }, - { "", "n", "movs.w @,", "111101NNMMMM0100", - "MA (1);", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - }, - { "n", "n", "movs.w @+,", "111101NNMMMM1000", - "MA (1);", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - "R[n] += 2;", - }, - { "n", "n8","movs.w @+REG_8,", "111101NNMMMM1100", - "MA (1);", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - "R[n] += R[8];", - }, - { "n", "n", "movs.w @-,", "111101NNGGGG0000", - "MA (1);", - "R[n] -= 2;", - "DSP_R (m) = RSWAT (R[n]);", - }, - { "", "n", "movs.w @,", "111101NNGGGG0100", - "MA (1);", - "DSP_R (m) = RSWAT (R[n]);", - }, - { "n", "n", "movs.w @+,", "111101NNGGGG1000", - "MA (1);", - "DSP_R (m) = RSWAT (R[n]);", - "R[n] += 2;", - }, - { "n", "n8","movs.w @+REG_8,", "111101NNGGGG1100", - "MA (1);", - "DSP_R (m) = RSWAT (R[n]);", - "R[n] += R[8];", - }, - { "n", "n", "movs.w ,@-", "111101NNMMMM0001", - "MA (1);", - "R[n] -= 2;", - "WWAT (R[n], DSP_R (m) >> 16);", - }, - { "", "n", "movs.w ,@", "111101NNMMMM0101", - "MA (1);", - "WWAT (R[n], DSP_R (m) >> 16);", - }, - { "n", "n", "movs.w ,@+", "111101NNMMMM1001", - "MA (1);", - "WWAT (R[n], DSP_R (m) >> 16);", - "R[n] += 2;", - }, - { "n", "n8","movs.w ,@+REG_8", "111101NNMMMM1101", - "MA (1);", - "WWAT (R[n], DSP_R (m) >> 16);", - "R[n] += R[8];", - }, - { "n", "n", "movs.w ,@-", "111101NNGGGG0001", - "MA (1);", - "R[n] -= 2;", - "WWAT (R[n], SEXT (DSP_R (m)));", - }, - { "", "n", "movs.w ,@", "111101NNGGGG0101", - "MA (1);", - "WWAT (R[n], SEXT (DSP_R (m)));", - }, - { "n", "n", "movs.w ,@+", "111101NNGGGG1001", - "MA (1);", - "WWAT (R[n], SEXT (DSP_R (m)));", - "R[n] += 2;", - }, - { "n", "n8","movs.w ,@+REG_8", "111101NNGGGG1101", - "MA (1);", - "WWAT (R[n], SEXT (DSP_R (m)));", - "R[n] += R[8];", - }, - { "n", "n", "movs.l @-,", "111101NNMMMM0010", - "MA (1);", - "R[n] -= 4;", - "DSP_R (m) = RLAT (R[n]);", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - }, - { "", "n", "movs.l @,", "111101NNMMMM0110", - "MA (1);", - "DSP_R (m) = RLAT (R[n]);", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - }, - { "n", "n", "movs.l @+,", "111101NNMMMM1010", - "MA (1);", - "DSP_R (m) = RLAT (R[n]);", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - "R[n] += 4;", - }, - { "n", "n8","movs.l @+REG_8,", "111101NNMMMM1110", - "MA (1);", - "DSP_R (m) = RLAT (R[n]);", - "DSP_GRD (m) = SIGN32 (DSP_R (m));", - "R[n] += R[8];", - }, - { "n", "n", "movs.l ,@-", "111101NNMMMM0011", - "MA (1);", - "R[n] -= 4;", - "WLAT (R[n], DSP_R (m));", - }, - { "", "n", "movs.l ,@", "111101NNMMMM0111", - "MA (1);", - "WLAT (R[n], DSP_R (m));", - }, - { "n", "n", "movs.l ,@+", "111101NNMMMM1011", - "MA (1);", - "WLAT (R[n], DSP_R (m));", - "R[n] += 4;", - }, - { "n", "n8","movs.l ,@+REG_8", "111101NNMMMM1111", - "MA (1);", - "WLAT (R[n], DSP_R (m));", - "R[n] += R[8];", - }, - { "n", "n", "movs.l ,@-", "111101NNGGGG0011", - "MA (1);", - "R[n] -= 4;", - "WLAT (R[n], SEXT (DSP_R (m)));", - }, - { "", "n", "movs.l ,@", "111101NNGGGG0111", - "MA (1);", - "WLAT (R[n], SEXT (DSP_R (m)));", - }, - { "n", "n", "movs.l ,@+", "111101NNGGGG1011", - "MA (1);", - "WLAT (R[n], SEXT (DSP_R (m)));", - "R[n] += 4;", - }, - { "n", "n8","movs.l ,@+REG_8", "111101NNGGGG1111", - "MA (1);", - "WLAT (R[n], SEXT (DSP_R (m)));", - "R[n] += R[8];", - }, - { "", "n", "movx.w @,", "111100xyXY0001??", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "if (iword & 3)", - " {", - " iword &= 0xfd53; goto top;", - " }", - }, - { "", "n", "movx.l @,", "111100xyXY010100", - "DSP_R (m) = RLAT (R[n]);", - }, - { "n", "n", "movx.w @+,", "111100xyXY0010??", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;", - "if (iword & 3)", - " {", - " iword &= 0xfd53; goto top;", - " }", - }, - { "n", "n", "movx.l @+,", "111100xyXY011000", - "DSP_R (m) = RLAT (R[n]);", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 4;", - }, - { "n", "n8","movx.w @+REG_8,", "111100xyXY0011??", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];", - "if (iword & 3)", - " {", - " iword &= 0xfd53; goto top;", - " }", - }, - { "n", "n8","movx.l @+REG_8,", "111100xyXY011100", - "DSP_R (m) = RLAT (R[n]);", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];", - }, - { "", "n", "movx.w ,@", "111100xyax1001??", - "WWAT (R[n], DSP_R (m) >> 16);", - "if (iword & 3)", - " {", - " iword &= 0xfd53; goto top;", - " }", - }, - { "", "n", "movx.l ,@", "111100xyax110100", - "WLAT (R[n], DSP_R (m));", - }, - { "n", "n", "movx.w ,@+", "111100xyax1010??", - "WWAT (R[n], DSP_R (m) >> 16);", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;", - "if (iword & 3)", - " {", - " iword &= 0xfd53; goto top;", - " }", - }, - { "n", "n", "movx.l ,@+", "111100xyax111000", - "WLAT (R[n], DSP_R (m));", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 4;", - }, - { "n", "n8","movx.w ,@+REG_8","111100xyax1011??", - "WWAT (R[n], DSP_R (m) >> 16);", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];", - "if (iword & 3)", - " {", - " iword &= 0xfd53; goto top;", - " }", - }, - { "n", "n8","movx.l ,@+REG_8","111100xyax111100", - "WLAT (R[n], DSP_R (m));", - "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];", - }, - { "", "n", "movy.w @,", "111100yxYX000001", - "DSP_R (m) = RSWAT (R[n]) << 16;", - }, - { "n", "n", "movy.w @+,", "111100yxYX000010", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;", - }, - { "n", "n9","movy.w @+REG_9,", "111100yxYX000011", - "DSP_R (m) = RSWAT (R[n]) << 16;", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];", - }, - { "", "n", "movy.w ,@", "111100yxAY010001", - "WWAT (R[n], DSP_R (m) >> 16);", - }, - { "n", "n", "movy.w ,@+", "111100yxAY010010", - "WWAT (R[n], DSP_R (m) >> 16);", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;", - }, - { "n", "n9", "movy.w ,@+REG_9", "111100yxAY010011", - "WWAT (R[n], DSP_R (m) >> 16);", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];", - }, - { "", "n", "movy.l @,", "111100yxYX100001", - "DSP_R (m) = RLAT (R[n]);", - }, - { "n", "n", "movy.l @+,", "111100yxYX100010", - "DSP_R (m) = RLAT (R[n]);", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 4;", - }, - { "n", "n9","movy.l @+REG_9,", "111100yxYX100011", - "DSP_R (m) = RLAT (R[n]);", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];", - }, - { "", "n", "movy.l ,@", "111100yxAY110001", - "WLAT (R[n], DSP_R (m));", - }, - { "n", "n", "movy.l ,@+", "111100yxAY110010", - "WLAT (R[n], DSP_R (m));", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 4;", - }, - { "n", "n9", "movy.l ,@+REG_9", "111100yxAY110011", - "WLAT (R[n], DSP_R (m));", - "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];", - }, - { "", "", "nopx nopy", "1111000000000000", - "/* nop */", - }, - { "", "", "ppi", "1111100000000000", - "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();", - "ppi_insn (RIAT (nip));", - "SET_NIP (nip + 2);", - "iword &= 0xf7ff; goto top;", - }, -#endif - {0, 0}}; - -op ppi_tab[] = -{ - { "","", "pshl #,dz", "00000iiim16.zzzz", - "int Sz = DSP_R (z) & 0xffff0000;", - "", - "if (i <= 16)", - " res = Sz << i;", - "else if (i >= 128 - 16)", - " res = (unsigned) Sz >> 128 - i; /* no sign extension */", - "else", - " {", - " RAISE_EXCEPTION (SIGILL);", - " return;", - " }", - "res &= 0xffff0000;", - "res_grd = 0;", - "goto logical;", - }, - { "","", "psha #,dz", "00010iiim32.zzzz", - "int Sz = DSP_R (z);", - "int Sz_grd = GET_DSP_GRD (z);", - "", - "if (i <= 32)", - " {", - " if (i == 32)", - " {", - " res = 0;", - " res_grd = Sz;", - " }", - " else", - " {", - " res = Sz << i;", - " res_grd = Sz_grd << i | (unsigned) Sz >> 32 - i;", - " }", - " res_grd = SEXT (res_grd);", - " carry = res_grd & 1;", - " }", - "else if (i >= 96)", - " {", - " i = 128 - i;", - " if (i == 32)", - " {", - " res_grd = SIGN32 (Sz_grd);", - " res = Sz_grd;", - " }", - " else", - " {", - " res = Sz >> i | Sz_grd << 32 - i;", - " res_grd = Sz_grd >> i;", - " }", - " carry = Sz >> (i - 1) & 1;", - " }", - "else", - " {", - " RAISE_EXCEPTION (SIGILL);", - " return;", - " }", - "COMPUTE_OVERFLOW;", - "greater_equal = 0;", - }, - { "","", "pmuls Se,Sf,Dg", "0100eeffxxyygguu", - "res = (DSP_R (e) >> 16) * (DSP_R (f) >> 16) * 2;", - "if (res == 0x80000000)", - " res = 0x7fffffff;", - "DSP_R (g) = res;", - "DSP_GRD (g) = SIGN32 (res);", - "return;", - }, - { "","", "psub Sx,Sy,Du pmuls Se,Sf,Dg", "0110eeffxxyygguu", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = (DSP_R (e) >> 16) * (DSP_R (f) >> 16) * 2;", - "if (res == 0x80000000)", - " res = 0x7fffffff;", - "DSP_R (g) = res;", - "DSP_GRD (g) = SIGN32 (res);", - "", - "z = u;", - "res = Sx - Sy;", - "carry = (unsigned) res > (unsigned) Sx;", - "res_grd = Sx_grd - Sy_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "padd Sx,Sy,Du pmuls Se,Sf,Dg", "0111eeffxxyygguu", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = (DSP_R (e) >> 16) * (DSP_R (f) >> 16) * 2;", - "if (res == 0x80000000)", - " res = 0x7fffffff;", - "DSP_R (g) = res;", - "DSP_GRD (g) = SIGN32 (res);", - "", - "z = u;", - "res = Sx + Sy;", - "carry = (unsigned) res < (unsigned) Sx;", - "res_grd = Sx_grd + Sy_grd + carry;", - "COMPUTE_OVERFLOW;", - }, - { "","", "psubc Sx,Sy,Dz", "10100000xxyyzzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = Sx - Sy - (DSR & 1);", - "carry = (unsigned) res > (unsigned) Sx || (res == Sx && Sy);", - "res_grd = Sx_grd + Sy_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - "DSR &= ~0xf1;\n", - "if (res || res_grd)\n", - " DSR |= greater_equal | res_grd >> 2 & DSR_MASK_N | overflow;\n", - "else\n", - " DSR |= DSR_MASK_Z | overflow;\n", - "DSR |= carry;\n", - "goto assign_z;\n", - }, - { "","", "paddc Sx,Sy,Dz", "10110000xxyyzzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = Sx + Sy + (DSR & 1);", - "carry = (unsigned) res < (unsigned) Sx || (res == Sx && Sy);", - "res_grd = Sx_grd + Sy_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - "DSR &= ~0xf1;\n", - "if (res || res_grd)\n", - " DSR |= greater_equal | res_grd >> 2 & DSR_MASK_N | overflow;\n", - "else\n", - " DSR |= DSR_MASK_Z | overflow;\n", - "DSR |= carry;\n", - "goto assign_z;\n", - }, - { "","", "pcmp Sx,Sy", "10000100xxyyzzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "z = 17; /* Ignore result. */", - "res = Sx - Sy;", - "carry = (unsigned) res > (unsigned) Sx;", - "res_grd = Sx_grd - Sy_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "pwsb Sx,Sy,Dz", "10100100xxyyzzzz", - }, - { "","", "pwad Sx,Sy,Dz", "10110100xxyyzzzz", - }, - { "","", "(if cc) pabs Sx,Dz", "100010ccxx01zzzz", - "/* FIXME: duplicate code pabs. */", - "res = DSP_R (x);", - "res_grd = GET_DSP_GRD (x);", - "if (res >= 0)", - " carry = 0;", - "else", - " {", - " res = -res;", - " carry = (res != 0); /* The manual has a bug here. */", - " res_grd = -res_grd - carry;", - " }", - "COMPUTE_OVERFLOW;", - "/* ??? The re-computing of overflow after", - " saturation processing is specific to pabs. */", - "overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0;", - "ADD_SUB_GE;", - }, - { "","", "pabs Sx,Dz", "10001000xx..zzzz", - "res = DSP_R (x);", - "res_grd = GET_DSP_GRD (x);", - "if (res >= 0)", - " carry = 0;", - "else", - " {", - " res = -res;", - " carry = (res != 0); /* The manual has a bug here. */", - " res_grd = -res_grd - carry;", - " }", - "COMPUTE_OVERFLOW;", - "/* ??? The re-computing of overflow after", - " saturation processing is specific to pabs. */", - "overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0;", - "ADD_SUB_GE;", - }, - - { "","", "(if cc) prnd Sx,Dz", "100110ccxx01zzzz", - "/* FIXME: duplicate code prnd. */", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "", - "res = (Sx + 0x8000) & 0xffff0000;", - "carry = (unsigned) res < (unsigned) Sx;", - "res_grd = Sx_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "prnd Sx,Dz", "10011000xx..zzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "", - "res = (Sx + 0x8000) & 0xffff0000;", - "carry = (unsigned) res < (unsigned) Sx;", - "res_grd = Sx_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - - { "","", "(if cc) pabs Sy,Dz", "101010cc01yyzzzz", - "/* FIXME: duplicate code pabs. */", - "res = DSP_R (y);", - "res_grd = 0;", - "overflow = 0;", - "greater_equal = DSR_MASK_G;", - "if (res >= 0)", - " carry = 0;", - "else", - " {", - " res = -res;", - " carry = 1;", - " if (res < 0)", - " {", - " if (S)", - " res = 0x7fffffff;", - " else", - " {", - " overflow = DSR_MASK_V;", - " greater_equal = 0;", - " }", - " }", - " }", - }, - { "","", "pabs Sy,Dz", "10101000..yyzzzz", - "res = DSP_R (y);", - "res_grd = 0;", - "overflow = 0;", - "greater_equal = DSR_MASK_G;", - "if (res >= 0)", - " carry = 0;", - "else", - " {", - " res = -res;", - " carry = 1;", - " if (res < 0)", - " {", - " if (S)", - " res = 0x7fffffff;", - " else", - " {", - " overflow = DSR_MASK_V;", - " greater_equal = 0;", - " }", - " }", - " }", - }, - { "","", "(if cc) prnd Sy,Dz", "101110cc01yyzzzz", - "/* FIXME: duplicate code prnd. */", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = (Sy + 0x8000) & 0xffff0000;", - "carry = (unsigned) res < (unsigned) Sy;", - "res_grd = Sy_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "prnd Sy,Dz", "10111000..yyzzzz", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = (Sy + 0x8000) & 0xffff0000;", - "carry = (unsigned) res < (unsigned) Sy;", - "res_grd = Sy_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) pshl Sx,Sy,Dz", "100000ccxxyyzzzz", - "int Sx = DSP_R (x) & 0xffff0000;", - "int Sy = DSP_R (y) >> 16 & 0x7f;", - "", - "if (Sy <= 16)", - " res = Sx << Sy;", - "else if (Sy >= 128 - 16)", - " res = (unsigned) Sx >> 128 - Sy; /* no sign extension */", - "else", - " {", - " RAISE_EXCEPTION (SIGILL);", - " return;", - " }", - "goto cond_logical;", - }, - { "","", "(if cc) psha Sx,Sy,Dz", "100100ccxxyyzzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y) >> 16 & 0x7f;", - "", - "if (Sy <= 32)", - " {", - " if (Sy == 32)", - " {", - " res = 0;", - " res_grd = Sx;", - " }", - " else", - " {", - " res = Sx << Sy;", - " res_grd = Sx_grd << Sy | (unsigned) Sx >> 32 - Sy;", - " }", - " res_grd = SEXT (res_grd);", - " carry = res_grd & 1;", - " }", - "else if (Sy >= 96)", - " {", - " Sy = 128 - Sy;", - " if (Sy == 32)", - " {", - " res_grd = SIGN32 (Sx_grd);", - " res = Sx_grd;", - " }", - " else", - " {", - " res = Sx >> Sy | Sx_grd << 32 - Sy;", - " res_grd = Sx_grd >> Sy;", - " }", - " carry = Sx >> (Sy - 1) & 1;", - " }", - "else", - " {", - " RAISE_EXCEPTION (SIGILL);", - " return;", - " }", - "COMPUTE_OVERFLOW;", - "greater_equal = 0;", - }, - { "","", "(if cc) psub Sx,Sy,Dz", "101000ccxxyyzzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = Sx - Sy;", - "carry = (unsigned) res > (unsigned) Sx;", - "res_grd = Sx_grd - Sy_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) psub Sy,Sx,Dz", "100001ccxxyyzzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = Sy - Sx;", - "carry = (unsigned) res > (unsigned) Sy;", - "res_grd = Sy_grd - Sx_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) padd Sx,Sy,Dz", "101100ccxxyyzzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = Sx + Sy;", - "carry = (unsigned) res < (unsigned) Sx;", - "res_grd = Sx_grd + Sy_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) pand Sx,Sy,Dz", "100101ccxxyyzzzz", - "res = DSP_R (x) & DSP_R (y);", - "cond_logical:", - "res &= 0xffff0000;", - "res_grd = 0;", - "if (iword & 0x200)\n", - " goto assign_z;\n", - "logical:", - "carry = 0;", - "overflow = 0;", - "greater_equal = 0;", - "DSR &= ~0xf1;\n", - "if (res)\n", - " DSR |= res >> 26 & DSR_MASK_N;\n", - "else\n", - " DSR |= DSR_MASK_Z;\n", - "goto assign_dc;\n", - }, - { "","", "(if cc) pxor Sx,Sy,Dz", "101001ccxxyyzzzz", - "res = DSP_R (x) ^ DSP_R (y);", - "goto cond_logical;", - }, - { "","", "(if cc) por Sx,Sy,Dz", "101101ccxxyyzzzz", - "res = DSP_R (x) | DSP_R (y);", - "goto cond_logical;", - }, - { "","", "(if cc) pdec Sx,Dz", "100010ccxx..zzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "", - "res = Sx - 0x10000;", - "carry = res > Sx;", - "res_grd = Sx_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - "res &= 0xffff0000;", - }, - { "","", "(if cc) pinc Sx,Dz", "100110ccxx..zzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "", - "res = Sx + 0x10000;", - "carry = res < Sx;", - "res_grd = Sx_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - "res &= 0xffff0000;", - }, - { "","", "(if cc) pdec Sy,Dz", "101010cc..yyzzzz", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = Sy - 0x10000;", - "carry = res > Sy;", - "res_grd = Sy_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - "res &= 0xffff0000;", - }, - { "","", "(if cc) pinc Sy,Dz", "101110cc..yyzzzz", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = Sy + 0x10000;", - "carry = res < Sy;", - "res_grd = Sy_grd + carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - "res &= 0xffff0000;", - }, - { "","", "(if cc) pclr Dz", "100011cc....zzzz", - "res = 0;", - "res_grd = 0;", - "carry = 0;", - "overflow = 0;", - "greater_equal = 1;", - }, - { "","", "pclr Du pmuls Se,Sf,Dg", "0100eeff0001gguu", - "/* Do multiply. */", - "res = (DSP_R (e) >> 16) * (DSP_R (f) >> 16) * 2;", - "if (res == 0x80000000)", - " res = 0x7fffffff;", - "DSP_R (g) = res;", - "DSP_GRD (g) = SIGN32 (res);", - "/* FIXME: update DSR based on results of multiply! */", - "", - "/* Do clr. */", - "z = u;", - "res = 0;", - "res_grd = 0;", - "goto assign_z;", - }, - { "","", "(if cc) pdmsb Sx,Dz", "100111ccxx..zzzz", - "unsigned Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "int i = 16;", - "", - "if (Sx_grd < 0)", - " {", - " Sx_grd = ~Sx_grd;", - " Sx = ~Sx;", - " }", - "if (Sx_grd)", - " {", - " Sx = Sx_grd;", - " res = -2;", - " }", - "else if (Sx)", - " res = 30;", - "else", - " res = 31;", - "do", - " {", - " if (Sx & ~0 << i)", - " {", - " res -= i;", - " Sx >>= i;", - " }", - " }", - "while (i >>= 1);", - "res <<= 16;", - "res_grd = SIGN32 (res);", - "carry = 0;", - "overflow = 0;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) pdmsb Sy,Dz", "101111cc..yyzzzz", - "unsigned Sy = DSP_R (y);", - "int i;", - "", - "if (Sy < 0)", - " Sy = ~Sy;", - "Sy <<= 1;", - "res = 31;", - "do", - " {", - " if (Sy & ~0 << i)", - " {", - " res -= i;", - " Sy >>= i;", - " }", - " }", - "while (i >>= 1);", - "res <<= 16;", - "res_grd = SIGN32 (res);", - "carry = 0;", - "overflow = 0;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) pneg Sx,Dz", "110010ccxx..zzzz", - "int Sx = DSP_R (x);", - "int Sx_grd = GET_DSP_GRD (x);", - "", - "res = 0 - Sx;", - "carry = res != 0;", - "res_grd = 0 - Sx_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) pcopy Sx,Dz", "110110ccxx..zzzz", - "res = DSP_R (x);", - "res_grd = GET_DSP_GRD (x);", - "carry = 0;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) pneg Sy,Dz", "111010cc..yyzzzz", - "int Sy = DSP_R (y);", - "int Sy_grd = SIGN32 (Sy);", - "", - "res = 0 - Sy;", - "carry = res != 0;", - "res_grd = 0 - Sy_grd - carry;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) pcopy Sy,Dz", "111110cc..yyzzzz", - "res = DSP_R (y);", - "res_grd = SIGN32 (res);", - "carry = 0;", - "COMPUTE_OVERFLOW;", - "ADD_SUB_GE;", - }, - { "","", "(if cc) psts MACH,Dz", "110011cc....zzzz", - "res = MACH;", - "res_grd = SIGN32 (res);", - "goto assign_z;", - }, - { "","", "(if cc) psts MACL,Dz", "110111cc....zzzz", - "res = MACL;", - "res_grd = SIGN32 (res);", - "goto assign_z;", - }, - { "","", "(if cc) plds Dz,MACH", "111011cc....zzzz", - "if (0xa05f >> z & 1)", - " RAISE_EXCEPTION (SIGILL);", - "else", - " MACH = DSP_R (z);", - "return;", - }, - { "","", "(if cc) plds Dz,MACL", "111111cc....zzzz", - "if (0xa05f >> z & 1)", - " RAISE_EXCEPTION (SIGILL);", - "else", - " MACL = DSP_R (z) = res;", - "return;", - }, - /* sh4a */ - { "","", "(if cc) pswap Sx,Dz", "100111ccxx01zzzz", - "int Sx = DSP_R (x);", - "", - "res = ((Sx & 0xffff) * 65536) + ((Sx >> 16) & 0xffff);", - "res_grd = GET_DSP_GRD (x);", - "carry = 0;", - "overflow = 0;", - "greater_equal = res & 0x80000000 ? 0 : DSR_MASK_G;", - }, - /* sh4a */ - { "","", "(if cc) pswap Sy,Dz", "101111cc01yyzzzz", - "int Sy = DSP_R (y);", - "", - "res = ((Sy & 0xffff) * 65536) + ((Sy >> 16) & 0xffff);", - "res_grd = SIGN32 (Sy);", - "carry = 0;", - "overflow = 0;", - "greater_equal = res & 0x80000000 ? 0 : DSR_MASK_G;", - }, - - {0, 0} -}; - -/* Tables of things to put into enums for sh-opc.h */ -static char *nibble_type_list[] = -{ - "HEX_0", - "HEX_1", - "HEX_2", - "HEX_3", - "HEX_4", - "HEX_5", - "HEX_6", - "HEX_7", - "HEX_8", - "HEX_9", - "HEX_A", - "HEX_B", - "HEX_C", - "HEX_D", - "HEX_E", - "HEX_F", - "REG_N", - "REG_M", - "BRANCH_12", - "BRANCH_8", - "DISP_8", - "DISP_4", - "IMM_4", - "IMM_4BY2", - "IMM_4BY4", - "PCRELIMM_8BY2", - "PCRELIMM_8BY4", - "IMM_8", - "IMM_8BY2", - "IMM_8BY4", - 0 -}; -static -char *arg_type_list[] = -{ - "A_END", - "A_BDISP12", - "A_BDISP8", - "A_DEC_M", - "A_DEC_N", - "A_DISP_GBR", - "A_DISP_PC", - "A_DISP_REG_M", - "A_DISP_REG_N", - "A_GBR", - "A_IMM", - "A_INC_M", - "A_INC_N", - "A_IND_M", - "A_IND_N", - "A_IND_R0_REG_M", - "A_IND_R0_REG_N", - "A_MACH", - "A_MACL", - "A_PR", - "A_R0", - "A_R0_GBR", - "A_REG_M", - "A_REG_N", - "A_SR", - "A_VBR", - "A_SSR", - "A_SPC", - 0, -}; - -static void -make_enum_list (name, s) - char *name; - char **s; -{ - int i = 1; - printf ("typedef enum {\n"); - while (*s) - { - printf ("\t%s,\n", *s); - s++; - i++; - } - printf ("} %s;\n", name); -} - -static int -qfunc (a, b) - op *a; - op *b; -{ - char bufa[9]; - char bufb[9]; - int diff; - - memcpy (bufa, a->code, 4); - memcpy (bufa + 4, a->code + 12, 4); - bufa[8] = 0; - - memcpy (bufb, b->code, 4); - memcpy (bufb + 4, b->code + 12, 4); - bufb[8] = 0; - diff = strcmp (bufa, bufb); - /* Stabilize the sort, so that later entries can override more general - preceding entries. */ - return diff ? diff : a - b; -} - -static void -sorttab () -{ - op *p = tab; - int len = 0; - - while (p->name) - { - p++; - len++; - } - qsort (tab, len, sizeof (*p), qfunc); -} - -static void -gengastab () -{ - op *p; - sorttab (); - for (p = tab; p->name; p++) - { - printf ("%s %-30s\n", p->code, p->name); - } -} - -static unsigned short table[1 << 16]; - -static int warn_conflicts = 0; - -static void -conflict_warn (val, i) - int val; - int i; -{ - int ix, key; - int j = table[val]; - - fprintf (stderr, "Warning: opcode table conflict: 0x%04x (idx %d && %d)\n", - val, i, table[val]); - - for (ix = sizeof (tab) / sizeof (tab[0]); ix >= 0; ix--) - if (tab[ix].index == i || tab[ix].index == j) - { - key = ((tab[ix].code[0] - '0') << 3) + - ((tab[ix].code[1] - '0') << 2) + - ((tab[ix].code[2] - '0') << 1) + - ((tab[ix].code[3] - '0')); - - if (val >> 12 == key) - fprintf (stderr, " %s -- %s\n", tab[ix].code, tab[ix].name); - } - - for (ix = sizeof (movsxy_tab) / sizeof (movsxy_tab[0]); ix >= 0; ix--) - if (movsxy_tab[ix].index == i || movsxy_tab[ix].index == j) - { - key = ((movsxy_tab[ix].code[0] - '0') << 3) + - ((movsxy_tab[ix].code[1] - '0') << 2) + - ((movsxy_tab[ix].code[2] - '0') << 1) + - ((movsxy_tab[ix].code[3] - '0')); - - if (val >> 12 == key) - fprintf (stderr, " %s -- %s\n", - movsxy_tab[ix].code, movsxy_tab[ix].name); - } - - for (ix = sizeof (ppi_tab) / sizeof (ppi_tab[0]); ix >= 0; ix--) - if (ppi_tab[ix].index == i || ppi_tab[ix].index == j) - { - key = ((ppi_tab[ix].code[0] - '0') << 3) + - ((ppi_tab[ix].code[1] - '0') << 2) + - ((ppi_tab[ix].code[2] - '0') << 1) + - ((ppi_tab[ix].code[3] - '0')); - - if (val >> 12 == key) - fprintf (stderr, " %s -- %s\n", - ppi_tab[ix].code, ppi_tab[ix].name); - } -} - -/* Take an opcode, expand all varying fields in it out and fill all the - right entries in 'table' with the opcode index. */ - -static void -expand_opcode (val, i, s) - int val; - int i; - char *s; -{ - if (*s == 0) - { - if (warn_conflicts && table[val] != 0) - conflict_warn (val, i); - table[val] = i; - } - else - { - int j = 0, m = 0; - - switch (s[0]) - { - default: - fprintf (stderr, "expand_opcode: illegal char '%c'\n", s[0]); - exit (1); - case '0': - case '1': - /* Consume an arbitrary number of ones and zeros. */ - do { - j = (j << 1) + (s[m++] - '0'); - } while (s[m] == '0' || s[m] == '1'); - expand_opcode ((val << m) | j, i, s + m); - break; - case 'N': /* NN -- four-way fork */ - for (j = 0; j < 4; j++) - expand_opcode ((val << 2) | j, i, s + 2); - break; - case 'x': /* xx or xy -- two-way or four-way fork */ - for (j = 0; j < 4; j += (s[1] == 'x' ? 2 : 1)) - expand_opcode ((val << 2) | j, i, s + 2); - break; - case 'y': /* yy or yx -- two-way or four-way fork */ - for (j = 0; j < (s[1] == 'x' ? 4 : 2); j++) - expand_opcode ((val << 2) | j, i, s + 2); - break; - case '?': /* Seven-way "wildcard" fork for movxy */ - expand_opcode ((val << 2), i, s + 2); - for (j = 1; j < 4; j++) - { - expand_opcode ((val << 2) | j, i, s + 2); - expand_opcode ((val << 2) | (j + 16), i, s + 2); - } - break; - case 'i': /* eg. "i8*1" */ - case '.': /* "...." is a wildcard */ - case 'n': - case 'm': - /* nnnn, mmmm, i#*#, .... -- 16-way fork. */ - for (j = 0; j < 16; j++) - expand_opcode ((val << 4) | j, i, s + 4); - break; - case 'e': - /* eeee -- even numbered register: - 8 way fork. */ - for (j = 0; j < 15; j += 2) - expand_opcode ((val << 4) | j, i, s + 4); - break; - case 'M': - /* A0, A1, X0, X1, Y0, Y1, M0, M1, A0G, A1G: - MMMM -- 10-way fork */ - expand_opcode ((val << 4) | 5, i, s + 4); - for (j = 7; j < 16; j++) - expand_opcode ((val << 4) | j, i, s + 4); - break; - case 'G': - /* A1G, A0G: - GGGG -- two-way fork */ - for (j = 13; j <= 15; j +=2) - expand_opcode ((val << 4) | j, i, s + 4); - break; - case 's': - /* ssss -- 10-way fork */ - /* System registers mach, macl, pr: */ - for (j = 0; j < 3; j++) - expand_opcode ((val << 4) | j, i, s + 4); - /* System registers fpul, fpscr/dsr, a0, x0, x1, y0, y1: */ - for (j = 5; j < 12; j++) - expand_opcode ((val << 4) | j, i, s + 4); - break; - case 'X': - /* XX/XY -- 2/4 way fork. */ - for (j = 0; j < 4; j += (s[1] == 'X' ? 2 : 1)) - expand_opcode ((val << 2) | j, i, s + 2); - break; - case 'a': - /* aa/ax -- 2/4 way fork. */ - for (j = 0; j < 4; j += (s[1] == 'a' ? 2 : 1)) - expand_opcode ((val << 2) | j, i, s + 2); - break; - case 'Y': - /* YY/YX -- 2/4 way fork. */ - for (j = 0; j < (s[1] == 'Y' ? 2 : 4); j += 1) - expand_opcode ((val << 2) | j, i, s + 2); - break; - case 'A': - /* AA/AY: 2/4 way fork. */ - for (j = 0; j < (s[1] == 'A' ? 2 : 4); j += 1) - expand_opcode ((val << 2) | j, i, s + 2); - break; - case 'v': - /* vv(VV) -- 4(16) way fork. */ - /* Vector register fv0/4/8/12. */ - if (s[2] == 'V') - { - /* 2 vector registers. */ - for (j = 0; j < 15; j++) - expand_opcode ((val << 4) | j, i, s + 4); - } - else - { - /* 1 vector register. */ - for (j = 0; j < 4; j += 1) - expand_opcode ((val << 2) | j, i, s + 2); - } - break; - } - } -} - -/* Print the jump table used to index an opcode into a switch - statement entry. */ - -static void -dumptable (name, size, start) - char *name; - int size; - int start; -{ - int lump = 256; - int online = 16; - - int i = start; - - printf ("unsigned short %s[%d]={\n", name, size); - while (i < start + size) - { - int j = 0; - - printf ("/* 0x%x */\n", i); - - while (j < lump) - { - int k = 0; - while (k < online) - { - printf ("%2d", table[i + j + k]); - if (j + k < lump) - printf (","); - - k++; - } - j += k; - printf ("\n"); - } - i += j; - } - printf ("};\n"); -} - - -static void -filltable (p) - op *p; -{ - static int index = 1; - - sorttab (); - for (; p->name; p++) - { - p->index = index++; - expand_opcode (0, p->index, p->code); - } -} - -/* Table already contains all the switch case tags for 16-bit opcode double - data transfer (ddt) insns, and the switch case tag for processing parallel - processing insns (ppi) for code 0xf800 (ppi nopx nopy). Copy the - latter tag to represent all combinations of ppi with ddt. */ -static void -expand_ppi_movxy () -{ - int i; - - for (i = 0xf000; i < 0xf400; i++) - if (table[i]) - table[i + 0x800] = table[0xf800]; -} - -static void -gensim_caselist (p) - op *p; -{ - for (; p->name; p++) - { - int j; - int sextbit = -1; - int needm = 0; - int needn = 0; - - char *s = p->code; - - printf (" /* %s %s */\n", p->name, p->code); - printf (" case %d: \n", p->index); - - printf (" {\n"); - while (*s) - { - switch (*s) - { - default: - fprintf (stderr, "gencode/gensim_caselist: illegal char '%c'\n", - *s); - exit (1); - break; - case '?': - /* Wildcard expansion, nothing to do here. */ - s += 2; - break; - case 'v': - printf (" int v1 = ((iword >> 10) & 3) * 4;\n"); - s += 2; - break; - case 'V': - printf (" int v2 = ((iword >> 8) & 3) * 4;\n"); - s += 2; - break; - case '0': - case '1': - s += 2; - break; - case '.': - s += 4; - break; - case 'n': - case 'e': - printf (" int n = (iword >> 8) & 0xf;\n"); - needn = 1; - s += 4; - break; - case 'N': - printf (" int n = (((iword >> 8) - 2) & 0x3) + 2;\n"); - s += 2; - break; - case 'x': - if (s[1] == 'y') /* xy */ - { - printf (" int n = (iword & 3) ? \n"); - printf (" ((iword >> 9) & 1) + 4 : \n"); - printf (" REG_xy ((iword >> 8) & 3);\n"); - } - else - printf (" int n = ((iword >> 9) & 1) + 4;\n"); - needn = 1; - s += 2; - break; - case 'y': - if (s[1] == 'x') /* yx */ - { - printf (" int n = (iword & 0xc) ? \n"); - printf (" ((iword >> 8) & 1) + 6 : \n"); - printf (" REG_yx ((iword >> 8) & 3);\n"); - } - else - printf (" int n = ((iword >> 8) & 1) + 6;\n"); - needn = 1; - s += 2; - break; - case 'm': - needm = 1; - case 's': - case 'M': - case 'G': - printf (" int m = (iword >> 4) & 0xf;\n"); - s += 4; - break; - case 'X': - if (s[1] == 'Y') /* XY */ - { - printf (" int m = (iword & 3) ? \n"); - printf (" ((iword >> 7) & 1) + 8 : \n"); - printf (" DSP_xy ((iword >> 6) & 3);\n"); - } - else - printf (" int m = ((iword >> 7) & 1) + 8;\n"); - s += 2; - break; - case 'a': - if (s[1] == 'x') /* ax */ - { - printf (" int m = (iword & 3) ? \n"); - printf (" 7 - ((iword >> 6) & 2) : \n"); - printf (" DSP_ax ((iword >> 6) & 3);\n"); - } - else - printf (" int m = 7 - ((iword >> 6) & 2);\n"); - s += 2; - break; - case 'Y': - if (s[1] == 'X') /* YX */ - { - printf (" int m = (iword & 0xc) ? \n"); - printf (" ((iword >> 6) & 1) + 10 : \n"); - printf (" DSP_yx ((iword >> 6) & 3);\n"); - } - else - printf (" int m = ((iword >> 6) & 1) + 10;\n"); - s += 2; - break; - case 'A': - if (s[1] == 'Y') /* AY */ - { - printf (" int m = (iword & 0xc) ? \n"); - printf (" 7 - ((iword >> 5) & 2) : \n"); - printf (" DSP_ay ((iword >> 6) & 3);\n"); - } - else - printf (" int m = 7 - ((iword >> 5) & 2);\n"); - s += 2; - break; - - case 'i': - printf (" int i = (iword & 0x"); - - switch (s[1]) - { - default: - fprintf (stderr, - "gensim_caselist: Unknown char '%c' in %s\n", - s[1], s); - exit (1); - break; - case '4': - printf ("f"); - break; - case '8': - printf ("ff"); - break; - case '1': - sextbit = 12; - printf ("fff"); - break; - } - printf (")"); - - switch (s[3]) - { - default: - fprintf (stderr, - "gensim_caselist: Unknown char '%c' in %s\n", - s[3], s); - exit (1); - break; - case '.': /* eg. "i12." */ - break; - case '1': - break; - case '2': - printf (" << 1"); - break; - case '4': - printf (" << 2"); - break; - } - printf (";\n"); - s += 4; - } - } - if (sextbit > 0) - { - printf (" i = (i ^ (1 << %d)) - (1 << %d);\n", - sextbit - 1, sextbit - 1); - } - - if (needm && needn) - printf (" TB (m,n);\n"); - else if (needm) - printf (" TL (m);\n"); - else if (needn) - printf (" TL (n);\n"); - - { - /* Do the refs. */ - char *r; - for (r = p->refs; *r; r++) - { - if (*r == 'f') printf (" CREF (15);\n"); - if (*r == '-') - { - printf (" {\n"); - printf (" int i = n;\n"); - printf (" do {\n"); - printf (" CREF (i);\n"); - printf (" } while (i-- > 0);\n"); - printf (" }\n"); - } - if (*r == '+') - { - printf (" {\n"); - printf (" int i = n;\n"); - printf (" do {\n"); - printf (" CREF (i);\n"); - printf (" } while (i++ < 14);\n"); - printf (" }\n"); - } - if (*r == '0') printf (" CREF (0);\n"); - if (*r == '8') printf (" CREF (8);\n"); - if (*r == '9') printf (" CREF (9);\n"); - if (*r == 'n') printf (" CREF (n);\n"); - if (*r == 'm') printf (" CREF (m);\n"); - } - } - - printf (" {\n"); - for (j = 0; j < MAX_NR_STUFF; j++) - { - if (p->stuff[j]) - { - printf (" %s\n", p->stuff[j]); - } - } - printf (" }\n"); - - { - /* Do the defs. */ - char *r; - for (r = p->defs; *r; r++) - { - if (*r == 'f') printf (" CDEF (15);\n"); - if (*r == '-') - { - printf (" {\n"); - printf (" int i = n;\n"); - printf (" do {\n"); - printf (" CDEF (i);\n"); - printf (" } while (i-- > 0);\n"); - printf (" }\n"); - } - if (*r == '+') - { - printf (" {\n"); - printf (" int i = n;\n"); - printf (" do {\n"); - printf (" CDEF (i);\n"); - printf (" } while (i++ < 14);\n"); - printf (" }\n"); - } - if (*r == '0') printf (" CDEF (0);\n"); - if (*r == 'n') printf (" CDEF (n);\n"); - if (*r == 'm') printf (" CDEF (m);\n"); - } - } - - printf (" break;\n"); - printf (" }\n"); - } -} - -static void -gensim () -{ - printf ("{\n"); - printf ("/* REG_xy = [r4, r5, r0, r1]. */\n"); - printf ("#define REG_xy(R) ((R)==0 ? 4 : (R)==2 ? 5 : (R)==1 ? 0 : 1)\n"); - printf ("/* REG_yx = [r6, r7, r2, r3]. */\n"); - printf ("#define REG_yx(R) ((R)==0 ? 6 : (R)==1 ? 7 : (R)==2 ? 2 : 3)\n"); - printf ("/* DSP_ax = [a0, a1, x0, x1]. */\n"); - printf ("#define DSP_ax(R) ((R)==0 ? 7 : (R)==2 ? 5 : (R)==1 ? 8 : 9)\n"); - printf ("/* DSP_ay = [a0, a1, y0, y1]. */\n"); - printf ("#define DSP_ay(R) ((R)==0 ? 7 : (R)==1 ? 5 : (R)==2 ? 10 : 11)\n"); - printf ("/* DSP_xy = [x0, x1, y0, y1]. */\n"); - printf ("#define DSP_xy(R) ((R)==0 ? 8 : (R)==2 ? 9 : (R)==1 ? 10 : 11)\n"); - printf ("/* DSP_yx = [y0, y1, x0, x1]. */\n"); - printf ("#define DSP_yx(R) ((R)==0 ? 10 : (R)==1 ? 11 : (R)==2 ? 8 : 9)\n"); - printf (" switch (jump_table[iword]) {\n"); - - gensim_caselist (tab); - gensim_caselist (movsxy_tab); - - printf (" default:\n"); - printf (" {\n"); - printf (" RAISE_EXCEPTION (SIGILL);\n"); - printf (" }\n"); - printf (" }\n"); - printf ("}\n"); -} - -static void -gendefines () -{ - op *p; - filltable (tab); - for (p = tab; p->name; p++) - { - char *s = p->name; - printf ("#define OPC_"); - while (*s) { - if (isupper (*s)) - *s = tolower (*s); - if (isalpha (*s)) - printf ("%c", *s); - if (*s == ' ') - printf ("_"); - if (*s == '@') - printf ("ind_"); - if (*s == ',') - printf ("_"); - s++; - } - printf (" %d\n",p->index); - } -} - -static int ppi_index; - -/* Take a ppi code, expand all varying fields in it and fill all the - right entries in 'table' with the opcode index. - NOTE: tail recursion optimization removed for simplicity. */ - -static void -expand_ppi_code (val, i, s) - int val; - int i; - char *s; -{ - int j; - - switch (s[0]) - { - default: - fprintf (stderr, "gencode/expand_ppi_code: Illegal char '%c'\n", s[0]); - exit (2); - break; - case 'g': - case 'z': - if (warn_conflicts && table[val] != 0) - conflict_warn (val, i); - - /* The last four bits are disregarded for the switch table. */ - table[val] = i; - return; - case 'm': - /* Four-bit expansion. */ - for (j = 0; j < 16; j++) - expand_ppi_code ((val << 4) + j, i, s + 4); - break; - case '.': - case '0': - expand_ppi_code ((val << 1), i, s + 1); - break; - case '1': - expand_ppi_code ((val << 1) + 1, i, s + 1); - break; - case 'i': - case 'e': case 'f': - case 'x': case 'y': - expand_ppi_code ((val << 1), i, s + 1); - expand_ppi_code ((val << 1) + 1, i, s + 1); - break; - case 'c': - expand_ppi_code ((val << 2) + 1, ppi_index++, s + 2); - expand_ppi_code ((val << 2) + 2, i, s + 2); - expand_ppi_code ((val << 2) + 3, i, s + 2); - break; - } -} - -static void -ppi_filltable () -{ - op *p; - ppi_index = 1; - - for (p = ppi_tab; p->name; p++) - { - p->index = ppi_index++; - expand_ppi_code (0, p->index, p->code); - } -} - -static void -ppi_gensim () -{ - op *p = ppi_tab; - - printf ("#define DSR_MASK_G 0x80\n"); - printf ("#define DSR_MASK_Z 0x40\n"); - printf ("#define DSR_MASK_N 0x20\n"); - printf ("#define DSR_MASK_V 0x10\n"); - printf ("\n"); - printf ("#define COMPUTE_OVERFLOW do {\\\n"); - printf (" overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0; \\\n"); - printf (" if (overflow && S) \\\n"); - printf (" { \\\n"); - printf (" if (res_grd & 0x80) \\\n"); - printf (" { \\\n"); - printf (" res = 0x80000000; \\\n"); - printf (" res_grd |= 0xff; \\\n"); - printf (" } \\\n"); - printf (" else \\\n"); - printf (" { \\\n"); - printf (" res = 0x7fffffff; \\\n"); - printf (" res_grd &= ~0xff; \\\n"); - printf (" } \\\n"); - printf (" overflow = 0; \\\n"); - printf (" } \\\n"); - printf ("} while (0)\n"); - printf ("\n"); - printf ("#define ADD_SUB_GE \\\n"); - printf (" (greater_equal = ~(overflow << 3 & res_grd) & DSR_MASK_G)\n"); - printf ("\n"); - printf ("static void\n"); - printf ("ppi_insn (iword)\n"); - printf (" int iword;\n"); - printf ("{\n"); - printf (" /* 'ee' = [x0, x1, y0, a1] */\n"); - printf (" static char e_tab[] = { 8, 9, 10, 5};\n"); - printf (" /* 'ff' = [y0, y1, x0, a1] */\n"); - printf (" static char f_tab[] = {10, 11, 8, 5};\n"); - printf (" /* 'xx' = [x0, x1, a0, a1] */\n"); - printf (" static char x_tab[] = { 8, 9, 7, 5};\n"); - printf (" /* 'yy' = [y0, y1, m0, m1] */\n"); - printf (" static char y_tab[] = {10, 11, 12, 14};\n"); - printf (" /* 'gg' = [m0, m1, a0, a1] */\n"); - printf (" static char g_tab[] = {12, 14, 7, 5};\n"); - printf (" /* 'uu' = [x0, y0, a0, a1] */\n"); - printf (" static char u_tab[] = { 8, 10, 7, 5};\n"); - printf ("\n"); - printf (" int z;\n"); - printf (" int res, res_grd;\n"); - printf (" int carry, overflow, greater_equal;\n"); - printf ("\n"); - printf (" switch (ppi_table[iword >> 4]) {\n"); - - for (; p->name; p++) - { - int shift, j; - int cond = 0; - int havedecl = 0; - - char *s = p->code; - - printf (" /* %s %s */\n", p->name, p->code); - printf (" case %d: \n", p->index); - - printf (" {\n"); - for (shift = 16; *s; ) - { - switch (*s) - { - case 'i': - printf (" int i = (iword >> 4) & 0x7f;\n"); - s += 6; - break; - case 'e': - case 'f': - case 'x': - case 'y': - case 'g': - case 'u': - shift -= 2; - printf (" int %c = %c_tab[(iword >> %d) & 3];\n", - *s, *s, shift); - havedecl = 1; - s += 2; - break; - case 'c': - printf (" if ((((iword >> 8) ^ DSR) & 1) == 0)\n"); - printf ("\treturn;\n"); - printf (" }\n"); - printf (" case %d: \n", p->index + 1); - printf (" {\n"); - cond = 1; - case '0': - case '1': - case '.': - shift -= 2; - s += 2; - break; - case 'z': - if (havedecl) - printf ("\n"); - printf (" z = iword & 0xf;\n"); - havedecl = 2; - s += 4; - break; - } - } - if (havedecl == 1) - printf ("\n"); - else if (havedecl == 2) - printf (" {\n"); - for (j = 0; j < MAX_NR_STUFF; j++) - { - if (p->stuff[j]) - { - printf (" %s%s\n", - (havedecl == 2 ? " " : ""), - p->stuff[j]); - } - } - if (havedecl == 2) - printf (" }\n"); - if (cond) - { - printf (" if (iword & 0x200)\n"); - printf (" goto assign_z;\n"); - } - printf (" break;\n"); - printf (" }\n"); - } - - printf (" default:\n"); - printf (" {\n"); - printf (" RAISE_EXCEPTION (SIGILL);\n"); - printf (" return;\n"); - printf (" }\n"); - printf (" }\n"); - printf (" DSR &= ~0xf1;\n"); - printf (" if (res || res_grd)\n"); - printf (" DSR |= greater_equal | res_grd >> 2 & DSR_MASK_N | overflow;\n"); - printf (" else\n"); - printf (" DSR |= DSR_MASK_Z | overflow;\n"); - printf (" assign_dc:\n"); - printf (" switch (DSR >> 1 & 7)\n"); - printf (" {\n"); - printf (" case 0: /* Carry Mode */\n"); - printf (" DSR |= carry;\n"); - printf (" case 1: /* Negative Value Mode */\n"); - printf (" DSR |= res_grd >> 7 & 1;\n"); - printf (" case 2: /* Zero Value Mode */\n"); - printf (" DSR |= DSR >> 6 & 1;\n"); - printf (" case 3: /* Overflow mode\n"); - printf (" DSR |= overflow >> 4;\n"); - printf (" case 4: /* Signed Greater Than Mode */\n"); - printf (" DSR |= DSR >> 7 & 1;\n"); - printf (" case 4: /* Signed Greater Than Or Equal Mode */\n"); - printf (" DSR |= greater_equal >> 7;\n"); - printf (" }\n"); - printf (" assign_z:\n"); - printf (" if (0xa05f >> z & 1)\n"); - printf (" {\n"); - printf (" RAISE_EXCEPTION (SIGILL);\n"); - printf (" return;\n"); - printf (" }\n"); - printf (" DSP_R (z) = res;\n"); - printf (" DSP_GRD (z) = res_grd;\n"); - printf ("}\n"); -} - -int -main (ac, av) - int ac; - char **av; -{ - /* Verify the table before anything else. */ - { - op *p; - for (p = tab; p->name; p++) - { - /* Check that the code field contains 16 bits. */ - if (strlen (p->code) != 16) - { - fprintf (stderr, "Code `%s' length wrong (%d) for `%s'\n", - p->code, strlen (p->code), p->name); - abort (); - } - } - } - - /* Now generate the requested data. */ - if (ac > 1) - { - if (ac > 2 && strcmp (av[2], "-w") == 0) - { - warn_conflicts = 1; - } - if (strcmp (av[1], "-t") == 0) - { - gengastab (); - } - else if (strcmp (av[1], "-d") == 0) - { - gendefines (); - } - else if (strcmp (av[1], "-s") == 0) - { - filltable (tab); - dumptable ("sh_jump_table", 1 << 16, 0); - - memset (table, 0, sizeof table); - filltable (movsxy_tab); - expand_ppi_movxy (); - dumptable ("sh_dsp_table", 1 << 12, 0xf000); - - memset (table, 0, sizeof table); - ppi_filltable (); - dumptable ("ppi_table", 1 << 12, 0); - } - else if (strcmp (av[1], "-x") == 0) - { - filltable (tab); - filltable (movsxy_tab); - gensim (); - } - else if (strcmp (av[1], "-p") == 0) - { - ppi_filltable (); - ppi_gensim (); - } - } - else - fprintf (stderr, "Opcode table generation no longer supported.\n"); - return 0; -}
gencode.c Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: ChangeLog =================================================================== --- ChangeLog (revision 816) +++ ChangeLog (nonexistent) @@ -1,1288 +0,0 @@ -2010-01-12 Masaki Muranaka - - * interp.c: Don't include sysdep.h. - Include stdio.h and errno.h. - Include string.h strings.h stdlib.h sys/stat.h if present. - -2010-01-09 Ralf Wildenhues - - * configure: Regenerate. - -2009-08-22 Ralf Wildenhues - - * config.in: Regenerate. - * configure: Likewise. - - * configure: Regenerate. - -2008-07-11 Hans-Peter Nilsson - - * configure: Regenerate to track ../common/common.m4 changes. - * config.in: Ditto. - -2008-06-06 Vladimir Prus - Daniel Jacobowitz - Joseph Myers - - * configure: Regenerate. - -2008-02-04 Antony King - - * interp.c (macl): Fix non-portable implementation. - -2007-10-08 Andrew Stubbs - - * gencode.c (tab): Add RAISE_EXCEPTION_IF_IN_DELAY_SLOT to the - definition of PC relative 'mov.l'/'mov.w' and also 'mova'. - -2007-03-02 Andrew Stubbs - - * gencode.c (tab): Correct pre-decrement instructions when m == n. - -2006-12-21 Hans-Peter Nilsson - - * acconfig.h: Remove. - * config.in: Regenerate. - -2006-06-13 Richard Earnshaw - - * configure: Regenerated. - -2006-06-05 Daniel Jacobowitz - - * configure: Regenerated. - -2006-05-31 Daniel Jacobowitz - - * configure: Regenerated. - -2005-11-10 Andrew Stubbs - - * interp.c (sim_memory_size): Use same amount of memory on Windows as - elsewhere. - -2005-09-19 J"orn Rennecke - - * interp.c (): Include. - (mcalloc): New function / macro. - (mfree): New macro. - (sim_size): Use mcalloc and mfree. - -2005-08-02 J"orn Rennecke - - * interp.c (strswaplen): Add one for '\0' delimiter. - -2005-06-16 Daniel Jacobowitz - - * gencode.c (tab): Avoid lvalue casts. Suggested by - Ralf Corsepius . - -2005-04-12 Jonathan Larmour - - * gencode.c (tab): Avoid inserting code before variables all declared. - -2005-03-23 Mark Kettenis - - * configure: Regenerate. - -2005-01-14 Andrew Cagney - - * configure.ac: Sinclude aclocal.m4 before common.m4. Add - explicit call to AC_CONFIG_HEADER. - * configure: Regenerate. - -2005-01-12 Andrew Cagney - - * configure.ac: Update to use ../common/common.m4. - * configure: Re-generate. - -2005-01-11 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -2005-01-07 Andrew Cagney - - * configure.ac: Rename configure.in, require autoconf 2.59. - * configure: Re-generate. - -2004-12-08 Hans-Peter Nilsson - - * configure: Regenerate for ../common/aclocal.m4 update. - -2004-09-08 DJ Delorie - - Commited by Corinna Vinschen - * gencode.c (movua.l): Compensate for endianness. - -2004-09-08 Corinna Vinschen - - * interp.c (RAISE_EXCEPTION_IF_IN_DELAY_SLOT): New macro. - (in_delay_slot): New flag variable. - (Delay_Slot): Set in_delay_slot. - (sim_resume): Reset in_delay_slot after leaving code switch. - * gencode.c (op tab): Call RAISE_EXCEPTION_IF_IN_DELAY_SLOT for all - instructions not allowed in delay slots. - -2004-09-08 Michael Snyder - - Commited by Corinna Vinschen - Introduce SH2a support. - * interp.c: Change type of jump table to short. Add various macros. - (sim_load): Save the bfd machine code. - (sim_create_inferior): Ditto. - (union saved_state_type): Add tbr, ibnr and ibcr registers. - Move bfd_mach to end of struct. Add regstack pointer. - (init_dsp): Don't swap contents of sh_dsp_table any more. Instead - use it directly in its own switch statement. Allocate space for 512 - register banks. - (do_long_move_insn): New function. - (do_blog_insn): Ditto. - (trap): Use trap #13 and trap #14 to set ibnr and ibcr. - * gencode.c: Move movx/movy insns into separate switch statement. - (op tab): Add sh2a insns. Reject instructions that are disabled - on that chip. - (gensim_caselist): Generate default case here instead of in caller. - (gensim): Generate two separate switch statements. Call - gensim_caselist once for each (for movsxy_tab and for tab). - Add tokens for r15 and multiple regs. - (conflict_warn, warn_conflicts): Add for debugging. - -2004-08-18 J"orn Rennecke - - * gencode.c (tab): For shad snd shld, fix result for - (op1 < 0 && shift_amount == 0). - -2004-02-02 Michael Snyder - - * gencode.c (movua.l): Set thislock to 0, not n. - -2004-02-12 Michael Snyder - - * gencode.c (table): Change from char to short. - (dumptable): Change generated table from char to short. - * interp.c (sh_jump_table, sh_dsp_table, ppi_table): char to short. - (init_dsp): Compute size of sh_dsp_table. - (sim_resume): Change jump_table from char to short. - -2004-01-27 Michael Snyder - - * gencode.c: (op tab): Some refs and defs fixes. - "fsrra" -> "fsrra ". - "sleep": replace array ref with array addr. - "trapa": ditto. - Comment and whitespace clean-ups. - -2004-01-07 Michael Snyder - - * gencode.c: Whitespace cleanup. - * interp.c: Ditto. - - * gencode.c: Replace 'Hitachi' with 'Renesas'. - (op tab): Add new instructions for sh4a, DBR, SBR. - (expand_opcode): Add handling for new movxy combinations. - (gensym_caselist): Ditto. - (expand_ppi_movxy): Remove movx/movy expansions, - now handled in expand_opcode. - (gensym): Add some helpful macros. - (expand_ppi_code): Flatten loop for simplicity, tweak for 12-bit - instead of 8-bit table (some insns are ambiguous to 8 bits). - (ppi_gensim, main): Generate 12-bit instead of 8-bit ppi table. - - * interp.c: Replace 'Hitachi' with 'Renesas'. - (union saved_state_type): Add dbr, sgr, ldst. - (get_loop_bounds_ext): New function. - (init_dsp): Add bfd_mach_sh4al_dsp. - (sim_resume): Handle extended loop bounds. - -2003-12-18 Michael Snyder - - * gencode.c (expand_opcode): Simplify and reorganize. - Eliminate "shift" parameter. Eliminate "4 bits at a time" - assumption. Flatten switch statement to a single level. - Add "eeee" token for even-numbered registers. - (bton): Delete. - (fsca): Use "eeee" token. - (ppi_moves): Rename to "expand_ppi_movxy". Do the ddt - [movx/movy] expansion here, as well as the ppi expansion. - (gensim_caselist): Accept 'eeee' along with 'nnnn'. - -2003-11-03 J"orn Rennecke - - * interp.c (fsca_s, fsrra_s): New functions. - * gencode.c (tab): Add entries for fsca and fsrra. - (expand_opcode): Allow variable length n / m fields. - -2003-10-15 J"orn Rennecke - - * syscall.h (SYS_truncate, SYS_ftruncate): Define. - * interp.c (trap): Add support for SYS_ftruncate and SYS_truncate. - -2003-08-11 Shrinivas Atre - * sim/sh/gencode.c ( tab[] ): Addition of MAC.L handler and - correction for MAC.W handler - * sim/sh/interp.c ( macl ): New Function. Implementation of - MAC.L handler. - -2003-08-07 Michael Snyder - - * gencode.c (expand_ppi_code): Comment spelling fix. - -2003-07-25 Michael Snyder - - * gencode.c (pshl): Change < to <= (shift by 16 is allowed). - Cast argument of >> to unsigned to prevent sign extension. - (psha): Change < to <= (shift by 32 is allowed). - -2003-07-24 Michael Snyder - - * gencode.c: Fix typo in comment. - -2003-07-23 Michael Snyder - - * gencode.c: A few more fix-ups of refs and defs. - (frchg): Raise SIGILL if in double-precision mode. - (ldtlb): We don't simulate cache, so this is a no-op. - (movsxy_tab): Correct a few bit pattern errors. - -2003-07-09 Michael Snyder - - * gencode.c (prnd): Clear LSW of result to zeros. - * gencode.c (pmuls): Expression is mis-parenthesized. - * gencode.c (ppi_gensim): For a conditional ppi insn, if the - condition is false, we want to return (not break). A break - will take us to the end of the function where registers will - be updated, whereas the desired outcome is for nothing to change. - -2003-07-03 Michael Snyder - - * gencode.c (movs): Fix a couple of text transpositions. - -2003-06-27 Michael Snyder - - * gencode.c (op tab): Some fix-ups of refs and defs. - (ocbi, ocbp): Cache not simulated, but may cause memory fault. - (gensym_caselist): Add default case to switch statement. - (expand_ppi_code): Add default case to switch statement. - * gencode.c (op tab): Implement movca.l. - * gencode.c (op movsxy_tab): Fix an error in the bit pattern. - * gencode.c (gensim_caselist): The movy instructions use - registers R6 and R7 (not R4 and R5 like the movx insns). - -2003-06-27 Michael Snyder - - * gencode.c (op movsxy_tab): Fix up some copy/paste errors - in name: s/REG_x/REG_y/. - - * gencode.c (op tab): Move misplaced semicolon. - -2003-02-27 Andrew Cagney - - * interp.c (init_dsp, sim_open, sim_create_inferior): Rename _bfd - to bfd. - -Fri Oct 11 16:22:28 2002 J"orn Rennecke - - * interp.c (trap): Return int. Take extra parameter for address - of the trap instruction. Changed all callers. - Add case 33 for profiling. - * gencode.c (trapa): Handle trap 33 using the trap function. - Add read of vector for generic traps. - -Wed Jul 17 19:36:38 2002 J"orn Rennecke - - * Makefile.in (interp.o): Depend on $(srcroot)/include/gdb/sim-sh.h. - * interp.c: Include "gdb/sim-sh.h". - (sim_store_register, sim_fetch_register): Use constants defined there. - -Tue Jun 18 16:53:11 2002 J"orn Rennecke - - * interp.c (sim_resume): Fix setting of bus error for - instruction fetch. - -2002-06-16 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -2002-06-08 Andrew Cagney - - * interp.c: Include "gdb/callback.h" and "gdb/remote-sim.h". - -2001-01-30 Ben Elliston - - * interp.c (sim_create_inferior): Record program arguments for - later inspection by the trap handler. - (count_argc): New function. - (prog_argv): Declare static. - (sim_write): Declare. - (trap): Implement argc, argnlen and argn system calls. Do not - abort on unknown system calls--simply return -1. - * syscall.h (SYS_argc, SYS_argnlen, SYS_argn): Define. - -2001-01-24 Alexandre Oliva - - * interp.c (trap): Implement time. - -2000-10-24 Ben Elliston - - * gencode.c (tab): Delimit strings with commas where applicable. - -Tue May 23 21:39:23 2000 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Mon May 15 22:04:51 2000 J"orn Rennecke - -sh-dsp support, simulator speedup by using host byte order: - - * Makefile.in (interp.o): Depends on ppi.c . - (ppi.c): New rule. - * gencode.c (printonmatch, think, genopc): Deleted. - (MAX_NR_STUFF): Now 42. - (tab): Add SH-DSP CPU instructions. - Amalgamate ldc / stc / lds / sts instructions with similar - bit patterns. Fix opcodes of stc Rm_BANK,@-. - Fix semantics of lds.l @+,MACH (no sign extend). - (movsxy_tab): New array. - For movs, change MMMM field to GGGG, and mmmm field to MMMM. - Added entries for movx, movy and parallel processing insns. - (ppi_tab): New array. - (qfunc): Stabilize sort. - (expand_opcode): Handle [01][01]NN, [01][01]xx and [01][01]yy. - Handle 'M', 'G' 's' 'X', 'a', 'Y' and 'A'. - (dumptable): Now takes three arguments. Changed all callers. - Emit just one contigous jump table. - (filltable): Now takes an argument. Changed all callers. - Make index static. - (ppi_moves, expand_ppi_code, ppi_filltable, ppi_gensim): New functions. - (gensim_caselist): New function, broken out of gensim. - Handle opcode fields 'x', 'y', 's', 'M', 'G', 'X', 'a', and 'Y'. - Handle ref '9'. - (gensim): Handle 'N' in code field and '8' in refs field. - Call gensim_caselist - twice. - (ppi_index): New static variable. - (main): Unsupport default action. - Add dsp support for -x / -s option. Add -p option. - * interp.c (sh_jump_table, sh_dsp_table, ppi_table): Declare. - (saved_state_type): Rearrange to allow amalgamated ldc / stc / - lds / sts to work efficiently. - (target_dsp): New static variable. - (GBR, VBR, SSR, SPC, MACH, MACL): Reflect saved_state_type change. - (FPUL, Rn_BANK, SET_Rn_BANK, M, Q, S, T, SR_BL, SR_RB): Likewise. - (SR_MD, SR_RC, SET_SR_BIT, GET_SR, SET_RC, GET_FPSCR): Likewise. - (RS, RE, MOD, MOD_ME, DSP_R): Likewise. - (set_fpscr1): Likewise. Use target_dsp to check for dsp. - (MOD_MSi, SIG_BUS_FETCH): Deleted. - (CREG, SREG, PR, SR_MASK_DMY, SR_MASK_DMX, SR_DMY): New macros. - (SR_DMX, DSR, MOD_DELTA, GET_DSP_GRD): Likewise. - (SET_MOD): Reflect saved_state_type change. Set MOD_DELTA instead - of MOD_MS, and encode SR_DMY / SR_DMX into high word of MOD_ME. - (set_sr): Reflect saved_state_type change. Fix SR_RB handling. - Use SET_MOD. - (MA, L, TL, TB): Now controlled by ACE_FAST. - (SEXT32): Just cast to int. - (SIGN32): Fixed to only shift by 31. - (CHECK_INSN_PTR): SIGBUS at insn fetch now represented by insn_end 0. - (ppi_insn): Declare. - (ppi.c): Include. - (init_dsp): Set target_dsp. When it changes, switch end of - sh_jump_table with sh_dsp_table. - (sim_resume) Don't declare sh_jump_table0. Use sh_jump_table instead. - Don't Declare PR if it's #defined. - Fix single-stepping (Was broken in Mar 6 16:59:10 patch). - (sim_store_register, sim_read_register): Translate accesses to - reflect saved_state_type change. - - * interp.c (set_sr): Set sr. - (SET_RC, MOD, MOD_MS, MOD_ME, SET_MOD, MOD_MS, MOD_ME): New macros. - (set_fpscr1): Don't bank-switch fpu registers when simulating sh-dsp. - (DSP_R): Fix definition. - (sim_resume): Remove outdated SET_SR use. - - * interp.c (saved_state): New members for struct member asregs: - rs, re, insn_end, xram_start, yram_start. - (struct loop_bounds): New struct. - (SKIP_INSN): New macro. - (get_loop_bounds): New function. - (endianw): Renamed to global_endianw. - (maskw): negated bits. - (PC): Now insn_ptr. - (SR_MASK_RC, SR_RC_INCREMENT, SR_RC, RAISE_EXCEPTION): New macros. - (RS, RE, DSP_R, DSP_GRD, A1, A0, X0, X1, Y0, Y1, M0, A1G): Likewise. - (M1, A0G, RIAT, PT2H, PH2T, SET_NIP, CHECK_INSN_PTR): Likewise. - (SIG_BUS_FETCH): Likewise - (raise_exception, riat_fast): New functions. - (raise_buserror, sim_stop): Use raise_exception. - (PROCESS_SPECIAL_ADDRESS): Use xram_start / yram_start. - (BUSERROR, WRITE_BUSERROR, READ_BUSERROR): - Reverse sense of mask argument. - (FP_OP, set_dr): Use RAISE_EXCEPTION. - (wlat_fast, wwat_fast, wbat_fast, rlat_fast, rwat_fast, rbat_fast): - Declare. Remove redundant masking. - (wwat_fast, rwat_fast): Add argument endianw. Changed callers. - (MA): Updated for change pc -> PC. - (Delay_Slot): Use RIAT. - (empty): Deleted. - (trap): Remove argument little_endian. Add argument endianw. - Changed all callers. Use raise_exception. - (macw): Add argument endainw. Changed all callers. - (init_dsp): New function, extended after broken out of init_pointers. - (sim_resume): Replace pc with insn_ptr. Replace little_endian with - endianw. Replace nia with nip. Reverse sense of maskb / maskw / - maskl. Implement logic for zero-overhead loops. Don't try to - interpret garbage when getting a SIGBUS at insn fetch. - (sim_open): Call init_dsp. - * gencode.c (tab): Use SET_NIP instead of nia = . Use PH2T / PT2H / - RAISE_EXCEPTION where appropriate. - Add extra cycles for brai, braf , bsr, bsrf, jmp, jsr. - - * interp.c (sim_store_register, sim_fetch_register): - Do proper endianness switch. - - * interp.c (saved_state_type): New members for struct member asregs: - xymem_select, xmem, ymem, xmem_offset, ymem_offset. - (special_address): Delete. - (BUSERROR): Now a two-argument predicate. - (PROCESS_SPECIAL_ADDRESS, WRITE_BUSERROR, READ_BUSERROR): New macros. - (wlat_little, wwat_little, wbat_any, wlat_big, wwat_big): Delete. - (process_wlat_addr, process_wwat_addr): New functions. - (process_wbat_addr, process_rlat_addr, process_rwat_addr): Likewise. - (process_rbat_addr): Likewise. - (wlat_fast, wwat_fast, wbat_fast): Use WRITE_BUSERROR. - (rlat_little, rwat_little, rbat_any, rlat_big, rwat_big): Delete. - (rlat_fast, rwat_fast, rbat_fast): Use READ_BUSERROR. - (RWAT, RLAT, RBAT, WWAT, WLAT, WBAT): Delete SLOW versions. - (do_rdat, trap): Delete SLOW code. - (SEXT32, SIGN32): New macros. - (swap, swap16): Now integer in - integer out. Changed all callers. - (strswaplen, strnswap): Delete SLOW versions. - (init_pointers): Initialize dsp memory selection (preliminary). - (sim_store_register, sim_fetch_register): Use swap instead of - big / little endian read / write functions. - - * interp.c (maskl): Deleted. - (endianw, endianb): New variables. - (special_address): Now inline. - (bp_holder): Put raising of buserror there, rename to: - (raise_buserror). - (BUSERROR): Now yields a value. Changed all users. - (wbat_big): Delete. - (wlat_fast, wwat_fast, wbat_fast): New functions. - (rlat_fast, rwat_fast, rbat_fast): Likewise. - (RWAT, RLAT, RBAT, WWAT, WLAT, WBAT): Use new functions. - (do_rdat, do_wdat): Likewise. Take maskl argument instead of - little_endian one. Changed caller macros. - (swap, swap16): Use w[rw]lat_big / w[rw]lat_little directly. - (strswaplen, strnswap): New functions. - (trap): Use them to fix up endian mismatches; - disable SYS_execve and SYS_execv; fix double address translation for - SYS_pipe and SYS_stat. - (sym_write, sym_read): Add endianness translation. - (sym_store_register, sym_fetch_register): Add maskl local variable. - (sim_open): Set endianw and endianb. - -Thu Sep 2 18:15:53 1999 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Aug 25 07:55:23 1999 Brendan Kehoe - - * gencode.c (fcnvds ,FPUL): Rewrite to use a local anonymous - union type, instead of casting to an int* then a float*. - (fcnvsd FPUL,): Likewise. - (flds ,FPUL): Likewise. - (fsts FPUL,): Likewise. - -1999-05-08 Felix Lee - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -1999-04-02 Keith Seitz - - * interp.c (POLL_QUIT_INTERVAL): Define. Used to tweak the - frequency at which the poll_quit callback is called. - (sim_resume): Use POLL_QUIT_INTERVAL instead of a - hard-coded value. - -Thu Sep 10 02:16:39 1997 J"orn Rennecke - - * interp.c (saved_state.asregs): Add new member pad_dummy. - (sim_store_register, sim_fetch_regsiter): Add 1 to rn for use - as index into saved_state.asints. - -Mon Jun 29 19:35:24 1998 Jason Molenda (crash@bugshack.cygnus.com) - - * interp.c (sim_open): set endianness based on the ABFD if a -E - option is not present and we have an ABFD. - -Tue Apr 28 18:33:31 1998 Geoffrey Noer - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Sun Apr 26 15:31:55 1998 Tom Tromey - - * configure: Regenerated to track ../common/aclocal.m4 changes. - * config.in: Ditto. - -Sun Apr 26 15:19:48 1998 Tom Tromey - - * acconfig.h: New file. - * configure.in: Reverted change of Apr 24; use sinclude again. - -Fri Apr 24 14:16:40 1998 Tom Tromey - - * configure: Regenerated to track ../common/aclocal.m4 changes. - * config.in: Ditto. - -Fri Apr 24 11:18:35 1998 Tom Tromey - - * configure.in: Don't call sinclude. - -Sat Apr 4 20:36:25 1998 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Fri Mar 27 16:15:52 1998 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Mar 25 12:35:29 1998 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Mar 18 12:38:12 1998 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Tue Feb 17 12:49:44 1998 Andrew Cagney - - * interp.c (sim_fetch_register, sim_store_register): Pass in - length parameter. Return -1. - -Sun Feb 1 16:47:51 1998 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Sat Jan 31 18:15:41 1998 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Mon Jan 19 22:26:29 1998 Doug Evans - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Mon Dec 15 23:17:11 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - * config.in: Ditto. - -Thu Dec 4 09:21:05 1997 Doug Evans - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Oct 22 14:43:00 1997 Andrew Cagney - - * interp.c (sim_load): Pass lma_p and sim_write args to - sim_load_file. - -Fri Oct 3 09:28:00 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Sep 24 17:38:57 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Tue Sep 23 11:04:38 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Mon Sep 22 11:46:20 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Fri Sep 19 17:45:25 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Mon Sep 15 17:36:15 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Tue Sep 9 20:52:21 1997 Felix Lee - - * interp.c (sim_resume): poll_quit() at least once per call; - otherwise gdb can loop sim_resume() uninterruptably. - -Thu Sep 4 17:21:23 1997 Doug Evans - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Tue Sep 2 13:15:27 1997 Andrew Cagney - - * gencode.c (tab): Order instructions according to SH3 document. - -Wed Aug 27 18:13:22 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - * config.in: Ditto. - -Tue Aug 26 10:41:55 1997 Andrew Cagney - - * interp.c (sim_kill): Delete. - (sim_create_inferior): Add ABFD argument. - (sim_load): Move setting of PC from here. - (sim_create_inferior): To here. - -Mon Aug 25 17:50:22 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - * config.in: Ditto. - -Mon Aug 25 16:17:51 1997 Andrew Cagney - - * interp.c (sim_open): Add ABFD argument. - -Mon Jun 23 15:49:14 1997 Andrew Cagney - - * interp.c (get_dr): Avoid SIGFPE by moving integers instead of - FP's around. - (set_dr): Ditto. - -Mon Jun 23 15:02:40 1997 Andrew Cagney - - * interp.c (XD, SET_XD): Delete. - (XF, SET_XF, XD_TO_XF): Define, move around registers in either - FP bank. - - * gencode.c (fmov): Update. - -Sun Jun 22 19:33:33 1997 Andrew Cagney - - * interp.c (set_fpscr1): From J"orn Rennecke - , Fix typo. Ditto for comment. - -Tue Aug 12 00:19:11 1997 J"orn Rennecke - - * interp.c (special_address): New function. - (BUSERROR): Call it. Added parameters bits_written and data. - Changed all callers. - * gencode.c (tab): Fixed ocbwb and pref. - -Fri Jun 20 22:03:18 1997 J"orn Rennecke - - * interp.c (do_wdat, do_wdat): Fix bug in register number calculation. - -Thu Jun 19 00:28:08 1997 Andrew Cagney - - * interp.c (sim_create_inferior): Clear registers each time an - inferior is started. - -Mon Jun 16 14:01:55 1997 Andrew Cagney - - * interp.c (*FP, FP_OP, FP_CMP, FP_UNARY): Provide a hook for - when a host doesn't support IEEE FP. - (*DP): Provide alternative definition that supports 64bit floating - point. - (target_little_endian): Combine little_endian and little_endian_p. - (saved_state_type): Make fpscr and sr simple integers. - (SET_FPSCR, GET_FPSCR): Use macros to update fpscr register. - (set_fpscr1): New function. Handle swapping when PR / FR bits - changed. Call via *_FPSCR macro. - (SET_SR*, GET_SR*): Use macro's to access the SR bits - avoids - endian problems. - - * gencode.c (tab): Update. - -Sun Jun 15 15:22:52 1997 Andrew Cagney - - * gencode.c (main): Perform basic checks on tab entries. - - * Makefile.in (gencode): Always compile with -g. - -Sat Jun 14 13:45:09 1997 Andrew Cagney - - * gencode.c (gensim): Move ref checking code to before `stuff'. - For branches with delay slots refs were not being checked. - - * interp.c (sim_resume): Use nia to specify the next instruction - address instead of overloading pc. - (C): Delete definiton - refer to cycles directly. - (SEXT12): New macro - sign extend a 12 bit quantity. - (Delay_Slot): Rename from SL. - - * gencode.c (tab): Update/simplify. - - * gencode.c (gensim): Better formatting of output code. - (gensim): Replace 10 with constant MAX_NR_STUFF- define as 15. - (tab): Sort alphabetically. Break `stuff' into multiple lines. - -Fri Jun 13 22:10:13 1997 J"orn Rennecke - - * gencode.c (braf, bsrf): Fix branch destination calculation to - be in accordance with the documentation. - -Fri Jun 13 15:33:53 1997 J"orn Rennecke - - * interp.c (init_pointers): Fix little endian test. - -Thu Jun 5 12:56:08 1997 J"orn Rennecke - - * interp.c (init_pointers): SH4 hardware is always WORDS_BIT_ENDIAN. - * gencode (fmov from/to memory): take endian_mismatch into account - for 32 bit moves too. - -Wed May 28 23:42:35 1997 J"orn Rennecke - - * gencode.c (swap.b): Fix treatment of high word. - -Wed May 28 23:42:35 1997 J"orn Rennecke - - * sh/gencode.c, - * interp.c: experimental SH4 support. - DFmode moves are probaly broken for target little endian. - -Tue May 20 10:23:28 1997 Andrew Cagney - - * interp.c (sim_open): Add callback argument. - (sim_set_callbacks): Delete SIM_DESC argument. - -Wed Apr 30 11:38:08 1997 Doug Evans - - * Makefile.in (SIM_EXTRA_CLEAN): Define. - (clean targets): Delete. - (sh-clean): New target. - -Thu Apr 24 00:39:51 1997 Doug Evans - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Apr 23 17:55:22 1997 Doug Evans - - * tconfig.in: New file. - * interp.c (sim_open): Handle missing arg to -E. - -Tue Apr 22 08:55:35 1997 Stu Grossman (grossman@critters.cygnus.com) - - * Makefile.in: Add clean targets. - -Fri Apr 18 18:57:04 1997 Stu Grossman (grossman@critters.cygnus.com) - - * interp.c: Include float.h and define SIGTRAP if _WIN32. - WIN32 -> _WIN32. - * (trap): Do do SYS_chown for _WIN32. - -Fri Apr 18 13:33:09 1997 Doug Evans - - * interp.c (sim_resume): Fix argument to poll_quit. - -Fri Apr 18 14:14:49 1997 Andrew Cagney - - * interp.c (sim_stop): New function. - (sim_resume): Use poll_quit for polling. - -Thu Apr 17 03:32:04 1997 Doug Evans - - * Makefile.in (SIM_OBJS): Add sim-load.o. - * interp.c (target_byte_order): Delete. - (sim_kind, myname, little_endian_p): New static locals. - (init_pointers): Use little_endian_p instead of target_byte_order. - (sim_resume): Likewise. - (sim_open): Set sim_kind, myname. Set little_endian_p from -E arg. - (sim_load): Return SIM_RC. New arg abfd. Call sim_load_file to - load file into simulator. Set start address from bfd. - (sim_create_inferior): Return SIM_RC. Delete arg start_address. - -Mon Apr 7 15:45:02 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - * config.in: Ditto. - -Wed Apr 2 15:06:28 1997 Doug Evans - - * interp.c (sim_open): New arg `kind'. - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Apr 2 14:34:19 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Wed Mar 19 09:34:36 1997 Fred Fish - - * interp.c (sim_do_command): Check for NULL command or empty - string and handle it the same as a "help" command. Use callback - to print error message for unrecognized commands. Replace - hardcoded tab in literal string with a \t. Other minor code - cleanup. - -Wed Mar 19 01:14:00 1997 Andrew Cagney - - * configure: Regenerated to track ../common/aclocal.m4 changes. - -Mon Mar 17 15:10:07 1997 Andrew Cagney - - * configure: Re-generate. - -Fri Mar 14 10:34:11 1997 Michael Meissner - - * configure: Regenerate to track ../common/aclocal.m4 changes. - -Thu Mar 13 13:00:00 1997 Doug Evans - - * interp.c (sim_open): New SIM_DESC result. Argument is now - in argv form. - (other sim_*): New SIM_DESC argument. - -Tue Feb 4 13:33:30 1997 Doug Evans - - * Makefile.in (@COMMON_MAKEFILE_FRAG): Use - COMMON_{PRE,POST}_CONFIG_FRAG instead. - * configure.in: sinclude ../common/aclocal.m4. - * configure: Regenerated. - -Thu Jan 23 11:46:23 1997 Stu Grossman (grossman@critters.cygnus.com) - - * configure configure.in Makefile.in: Update to new configure - scheme which is more compatible with WinGDB builds. - * configure.in: Improve comment on how to run autoconf. - * configure: Re-run autoconf to get new ../common/aclocal.m4. - * Makefile.in: Use autoconf substitution to install common - makefile fragment. - -Wed Nov 20 02:04:32 1996 Doug Evans - - * Makefile.in: Delete stuff moved to ../common/Make-common.in. - (SIM_OBJS,SIM_EXTRA_LIBS): Define. - * configure.in: Simplify using macros in ../common/aclocal.m4. - Call AC_CHECK_HEADERS(unistd.h). - * configure: Regenerated. - * config.in: New file. - * interp.c: #include "config.h". #include if present. - (trap): Fetch errno value with callback->get_errno. - -Tue Nov 12 13:34:00 1996 Dawn Perchik - - * interp.c: Don't include windows polling code if inside simluator. - -Fri Sep 20 14:57:50 1996 Stan Shebs - - * interp.c: Minor formatting improvements. - (saved_state_type): Add bank registers. - (bp_holder): New function, use to break on when debugging BUSERROR. - (BUSERROR): Call it if bus error occurs. - -Wed Jun 26 12:29:22 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) - - * Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir, - INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set values. - (docdir): Removed. - * configure.in (AC_PREREQ): autoconf 2.5 or higher. - (AC_PROG_INSTALL): Added. - * configure: Rebuilt. - -Thu May 16 15:44:29 1996 Ian Lance Taylor - - * interp.c (saved_state_type): Add memstalls field. - (MA) Define macro. - (sim_resume): New local variable memstalls. Add it back in to - saved_state at the end of the function. - (sim_info): Report memstalls. - * gencode.c (tab): Add MA() to the execution string of all - instructions which access memory. - -Wed Feb 21 12:16:41 1996 Ian Lance Taylor - - * configure: Regenerate with autoconf 2.7. - -Tue Dec 5 16:38:55 1995 Stu Grossman (grossman@cygnus.com) - - * gencode.c (mac.l): Don't abort GDB if executing mac.l - instruction (which is unimplemented). Generate a SIGTRAP (in the - simulated target) instead. - -Mon Dec 4 12:22:24 1995 J.T. Conklin - - * gencode.c (tab): Added several sh3 opcodes. - (think): Added printonmatch for A_SSR and A_SPC. - * interp.c (SSR, SPC): Added definitions. - (saved_state_type): Added ssr and spc registers. - -Wed Nov 29 12:39:27 1995 Jim Wilson - - * gencode.c (tab): In shad/shld definitions, negate R[m] before - the and operation instead of after. For shad delete cast. For shld - use UR instead of R and delete cast. - -Fri Nov 17 12:48:55 1995 Jim Wilson - - * gencode.c (tab): Add explicit NaN support for ftrc instruction. - -Wed Nov 15 11:25:27 1995 Stu Grossman (grossman@cygnus.com) - - * interp.c: Make target_byte_order be extern to prevent SGI cc from - issuing warnings about the use of common symbols. - -Tue Nov 14 15:19:43 1995 Stu Grossman (grossman@cygnus.com) - - * gencode.c: jsr, bsr and bsrf actually save pc+4 in pr, and rts - actually uses pr+0. - -Sat Oct 21 13:01:18 1995 Jim Wilson - - * sh/interp.c (sim_stop_reason): Catch SIGQUIT and indicate - program exited. - (sim_get_quit_code): Delete. - - * gencode.c (gensim): Indicate SIGILL instead of calling abort for - default case. - -Mon Oct 16 18:24:03 1995 Jim Wilson - - * interp.c (saved_state_type): Move FP registers to immediately - after SR. - -Tue Oct 10 11:12:15 1995 Fred Fish - - * Makefile.in (BISON): Remove macro. - -Fri Oct 6 12:08:18 1995 Jim Wilson - - * interp.c (trap, case SYS_utime): Cast second arg of utime to - void * to avoid compiler error. - - * interp.c (callback): Remove last change. It is initialized by - a sim_set_callbacks call. - -Thu Oct 5 14:13:29 1995 steve chamberlain - - * interp.c (callback): Initialize to default callback. - -Thu Sep 28 15:26:59 1995 steve chamberlain - - * run.c: Moved to ../common. - * interp.c (trap): Use gdb's callback interface. - * Makefile.in: Updated. - -Wed Sep 20 13:35:13 1995 Ian Lance Taylor - - * Makefile.in (maintainer-clean): New synonym for realclean. - -Wed Sep 20 09:51:50 1995 steve chamberlain - - * run.c (sim_callback_write_stdout): New. - * interp.c (trap): Call sim_callback_write_stdout when needed. - -Mon Sep 18 18:42:27 1995 steve chamberlain - - * interp.c (trap): Remove useless code. - -Fri Sep 15 19:30:05 1995 steve chamberlain - - * syscall.h: Copy from newlib. - -Thu Sep 14 19:32:59 1995 Stu Grossman (grossman@cygnus.com) - - * gencode.c: Back up PC by 2 for breakpoints. - * interp.c: Move fp regs beyond pc/pr/etc to avoid confusing GDB, - which expect pc to immediatly follow regs[]. - -Fri Sep 8 14:18:13 1995 Ian Lance Taylor - - * configure.in: Define CC_FOR_BUILD. Don't call AC_PROG_INSTALL. - * configure: Rebuild. - * Makefile.in (INSTALL): Revert to using install.sh. - (INSTALL_PROGRAM, INSTALL_DATA): Set to $(INSTALL). - (INSTALL_XFORM, INSTALL_XFORM1): Restore. - (CC_FOR_BUILD): Restore. - (gencode): Build using $(CC_FOR_BUILD). - (install): Don't install in $(tooldir). - -Thu Sep 7 15:02:31 1995 J.T. Conklin - - (Try to) Update to new bfd autoconf scheme. - * run.c: Don't include sysdep.h. - * Makefile.in (INSTALL{,_PROGRAM,_DATA}): Use autoconf computed value. - (CC, CFLAGS, AR, RANLIB): Likewise. - (HDEFINES, TDEFINES): Define. - (CC_FOR_BUILD): Delete. - (host_makefile_frag): Delete. - (Makefile): Don't depend on frags. - * configure.in (sysdep.h): Don't create symlink. - (host_makefile_frag, frags): Deleted. - (CC, CFLAGS, AR, RANLIB, INSTALL): Compute values. - * configure: Regenerated. - -Thu Aug 31 12:39:07 1995 Jim Wilson - - * interp.c: Include . - -Wed Aug 30 22:05:17 1995 Jeff Law (law@snake.cs.utah.edu) - - * Makefile.in (run): Link in math library too. - * gencode.c (gensim): abort if an unknown opcode is encountered. - * interp.c (FPSCR, FPUL): Define. - (struct save_state): Add fields for floating point registers, - FPSCR and FPUL. - (sim_resume): Add 'F' for accessing floating point registers - in the save state structure. - * gencode.c: Add sh3e opcodes. - (gensym): Define a buffer for int<->fp conversions. - -Tue Aug 22 14:16:46 1995 J.T. Conklin - - * interp.c (trap): Use trap vector 34 for host system interface. - * gencode.c: Add 34 to conditional which determines which traps - will be handled by simulator. - -Fri Aug 11 17:59:15 1995 Jim Wilson - - * run.c: Include . Define SIGQUIT if not defined. - (main): New variables reason and sigrc. After simulator exits, - check to see if it exited because of a signal, and if so, then - use the signal number as the return value. - -Thu Aug 3 10:45:37 1995 Fred Fish - - * Update all FSF addresses except those in COPYING* files. - -Tue Jul 18 23:33:10 1995 Fred Fish - - * interp.c (trap): Only use SYS_execv if defined. Might be - implemented as execve(arg1,arg2,0), as with Unixware 2.0. - (sim_resume): In sbit initializer, cast shifted arg to unsigned - to avoid signed integer overflow. - -Wed Jul 5 14:32:54 1995 J.T. Conklin - - * Makefile.in (clean): Remove run, libsim.a. - (distclean, mostlyclean, realclean): Remove Makefile and - autoconf files. - - * sh.mt: Removed. - - * Makefile.in, configure.in: converted to autoconf. - * configure: New file, generated with autconf 2.4. - -Fri Jun 30 16:51:38 1995 Stan Shebs - - * interp.c (sim_open): If argument supplied, interpret as - desired memory size. - (parse_and_set_memory_size): New function. - (sim_do_command): New function. - -Thu Jun 29 10:02:28 1995 Fred Fish - - * interp.c (SYS_wait): Define as SYS_wait4 if available and - SYS_wait is not already defined (SunOS 4.1.3 for example). - (SYS_utime): Define as SYS_utimes if available and - SYS_utime is not already defined. - -Thu Jun 22 17:25:57 1995 Steve Chamberlain - - * interp.c: Don't include sys/times.h or sys/param.h - -Wed Jun 21 15:03:49 1995 Steve Chamberlain - - * interp.c (SIGBUS, SIGTERM): Define if not. - (sim_memory_size): default to 2^19 on PCs. - (sim_resume): Poll for quits on win32. - -Wed May 24 16:22:48 1995 Jim Wilson - - * gencode.c (op_tab): Add SH3 support. - -Wed May 24 14:07:11 1995 Steve Chamberlain - - * gencode.c (tab): Add bsrf and braf. - -Mon Apr 24 15:09:49 1995 Jason Molenda (crash@cygnus.com) - - * configure.in: use ../../bfd/hosts/std-host.h, not - ../bfd/hosts/std-host.h (which doesn't exist). - -Mon Mar 27 10:32:34 1995 J.T. Conklin - - * run.c: parse arguments with getopt(). - -Sun Feb 26 15:27:24 1995 Steve Chamberlain - - * configure.in: Use ../../bfd/hosts/std-host.h if specific - host unavailable. - -Mon Jan 23 16:10:58 1995 Torbjorn Granlund - - * interp.c (macw): Sign extend MACH at bit 10 for non-saturating case. - -Sun Jan 22 13:55:36 1995 Torbjorn Granlund - - * gencode.c (op_tab): Make MAC.W call macw, not abort. - * interp.c (macw): New function. - (S): New #define. - -Sat Jan 21 15:52:30 1995 Torbjorn Granlund - - * gencode.c (op_tab): New code for ADDV and SUBV. - Make MAC.L abort sicne it is not implemented. - - * interp.c (dmul): Handle the signed case by adjusting after unsigned multiply. - Get rid of __GNUC__ conditional. - -aThu Jan 19 05:50:50 1995 Torbjorn Granlund - - * gencode.c (op_tab): Also replace NEGC, and try again with SUBC. - Change ADDC for symmetry. - - * gencode.c (op_tab): Replace code for ADDC and SUBC. - -Mon Jan 9 15:43:53 1995 Stu Grossman (grossman@cygnus.com) - - * interp.c: Remove def of INLINE. This comes from bfd.h. Also, - declare IOMEM before using it. - -Wed Dec 28 21:25:31 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * interp.c (BUSERROR): New macro. - ([r|w][bwl]at[little|big]) New functions. - (sim_resume): If GO32 check for interrupt every now - and again. Decrement PC if SIGBUS seen. - * run.c (main): Return result of simulated _exit. - -Mon Dec 5 21:59:51 1994 Doug Evans - - * Makefile.in (gencode): Allow build in different directory. - -Wed Nov 30 17:47:13 1994 Jim Wilson - - * Makefile.in (gencode): Change $< to gencode.c for portability. - -Wed Nov 23 21:31:55 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * interp.c ([wr][bwl]at): New functions. - (trap): Cope with both byte modes. - -Thu Sep 8 17:35:07 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * gencode.c (tab): Simulate T bit after a negc insn right. - * interp.c (RSBAT): Sign extend the arg. - (ACE_FAST): New macro. - (sim_resume): Remove obsolete test of sim_timeout. - -Fri Aug 5 14:12:31 1994 Steve Chamberlain (sac@jonny.cygnus.com) - - * interp.c (IOMEM): New function, simulates very basic I/O area of - the SH. - (WBAT, RBAT) : Call I/O functions. - * gencode.c (tab): Special case trapa #3. - -Mon Jun 27 18:04:54 1994 Steve Chamberlain (sac@cirdan.cygnus.com) - - * run.c (main): Specify the file type again. - -Thu May 26 19:04:37 1994 Steve Chamberlain (sac@thepub.cygnus.com) - - * interp.c (trap): Fix irix incompatibility. - * run.c (main): open without specifying file type. - -Wed May 18 14:18:53 1994 Doug Evans (dje@canuck.cygnus.com) - - * interp.c (sim_*): Make result void where there isn't one. - (sim_set_pc): Delete. - (sim_info): Delete printf_fn arg, all callers changed. - Call printf_filtered instead. - (sim_close): New function. - (sim_load): New function. - (sim_create_inferior): Renamed from sim_set_args, all callers changed. - * run.c: #include , "remote-sim.h". - (printf_filtered): New function. - -Wed Apr 27 12:03:48 1994 Steve Chamberlain (sac@cygnus.com) - - * gencode.c (table): Get direction of some opcodes right. - (trapa, rte): Implement fully. - * interp.c (trap): Make stat call more portable. - -Fri Feb 11 21:59:38 1994 Steve Chamberlain (sac@sphagnum.cygnus.com) - - * gencode.c (main, gendefines): New -d option prints table of defines. - * interp.c (trap): Add a load of system calls. - (sim_memory_size): Now default to 8Mbyte. - (PARANOID): Keep vector of registers with undefined contents. - -Mon Nov 15 14:37:18 1993 Steve Chamberlain (sac@jonny.cygnus.com) - - * gencode.c: mova uses aligned addresses - * interp.c (trap): Return results in r0. - -Tue Oct 26 10:38:55 1993 Doug Evans (dje@canuck.cygnus.com) - - * Makefile.in (CSEARCH): Add -I$(srcdir)/../../gdb - * interp.c: #include "remote-sim.h". - (sim_resume): int result, new arg `siggnal'. - (sim_write): Use SIM_ADDR for type of arg `addr'. - (sim_read): Use SIM_ADDR for type of arg `addr'. - Use unsigned char * for `buffer'. - (sim_store_register): int result. - (sim_fetch_register): Ditto. - (sim_stop_reason): Renamed from sim_stop_signal. New arg `reason'. - (sim_set_pc): int result, use SIM_ADDR for type of arg `x'. - (sim_info): int result, new args `verbose', `printf_fn'. - (sim_kill): int result. - (sim_open): int result, new arg `name'. - * run.c: #include - (main): Update call to sim_info. - -Sat Oct 23 15:09:29 1993 Doug Evans (dje@canuck.cygnus.com) - - * interp.c (sim_stop_signal): Result is now enum sim_stop. - -Fri Oct 8 10:47:09 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * gencode.c (table): Becomes unsigned. - * interp.c (trap): Get right breakpoint SIGnum. (sim_write, - sim_read): Return number of bytes copied. (sim_store_register): - Value passed by reference. (sim_kill, sim_open, sim_set_args): New functions. - -Tue Sep 7 16:24:13 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * interp.c (sim_info): Fix small typo in printf string. - -Thu Aug 5 11:37:48 1993 Stan Shebs (shebs@rtl.cygnus.com) - - * interp.c (sim_resume): Set memory after pointers inited. - -Mon Aug 2 14:13:22 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * interp.c (get_now): Use time system call. - * Makefile.in: install correctly. - -Tue Jul 6 10:30:46 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * run.c (main), interp.c (sim_set_timeout): Remove timeout - functionality. - -Thu Jun 24 13:29:57 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com) - - * Makefile.in: don't run indent everytime; also add a space in the - includes - -Thu Jun 17 18:30:42 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) - - * gencode.c: Fix some opcodes. - * interp.c: Support for profiling and portability fixes. - * run.c (main): Get profiling args. - -Wed May 5 13:17:22 1993 Steve Chamberlain (sac@cygnus.com) - - * gencode.c (tab): Lint for sgi compiler - * interp.c: Lint for sgi compiler. - -Mon May 3 15:25:33 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * run.c (main): Support for resizing simulated RAM. - * Makefile.in: Support for broken makes. - * interp.c, gencode.c: Lint. - -Mon Apr 26 18:01:10 1993 Steve Chamberlain (sac@thepub.cygnus.com) - - * created -
ChangeLog Property changes : Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -Id \ No newline at end of property Index: config.in =================================================================== --- config.in (revision 816) +++ config.in (nonexistent) @@ -1,104 +0,0 @@ -/* config.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if translation of program messages to the user's native - language is requested. */ -#undef ENABLE_NLS - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_ERRNO_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FPU_CONTROL_H - -/* Define to 1 if you have the `getrusage' function. */ -#undef HAVE_GETRUSAGE - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the `nsl' library (-lnsl). */ -#undef HAVE_LIBNSL - -/* Define to 1 if you have the `socket' library (-lsocket). */ -#undef HAVE_LIBSOCKET - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `sigaction' function. */ -#undef HAVE_SIGACTION - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the `time' function. */ -#undef HAVE_TIME - -/* Define to 1 if you have the header file. */ -#undef HAVE_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_ZLIB_H - -/* Define to 1 if you have the `__setfpucw' function. */ -#undef HAVE___SETFPUCW - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Additional package description */ -#undef PKGVERSION - -/* Bug reporting address */ -#undef REPORT_BUGS_TO - -/* Define as the return type of signal handlers (`int' or `void'). */ -#undef RETSIGTYPE - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS Index: tconfig.in =================================================================== --- tconfig.in (revision 816) +++ tconfig.in (nonexistent) @@ -1,17 +0,0 @@ -/* sh target config file */ - -/* Define this if the simulator supports profiling. - See the mips simulator for an example. - This enables the `-p foo' and `-s bar' options. - The target is required to provide sim_set_profile{,_size}. */ -/* #define SIM_HAVE_PROFILE */ - -/* Define this if the simulator uses an instruction cache. - See the h8/300 simulator for an example. - This enables the `-c size' option to set the size of the cache. - The target is required to provide sim_set_simcache_size. */ -/* #define SIM_HAVE_SIMCACHE */ - -/* Define this if the target cpu is bi-endian - and the simulator supports it. */ -#define SIM_HAVE_BIENDIAN

powered by: WebSVN 2.1.0

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