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

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1k/trunk/gdb-5.3/sim/z8k
    from Rev 1181 to Rev 1765
    Reverse comparison

Rev 1181 → Rev 1765

/configure
0,0 → 1,4024
#! /bin/sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sim_inline="-DDEFAULT_INLINE=0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# This file is derived from `gettext.m4'. The difference is that the
# included macros assume Cygnus-style source and build trees.
 
# Macro to add for using GNU gettext.
# Ulrich Drepper <drepper@cygnus.com>, 1995.
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
 
# serial 3
 
 
 
 
 
# Search path for a program which passes the given test.
# Ulrich Drepper <drepper@cygnus.com>, 1996.
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
 
# serial 1
 
 
 
# Check whether LC_MESSAGES is available in <locale.h>.
# Ulrich Drepper <drepper@cygnus.com>, 1995.
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
 
# serial 1
 
 
 
 
 
 
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf version 2.13
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
 
# Defaults:
ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
--disable-nls do not use Native Language Support"
ac_help="$ac_help
--with-included-gettext use the GNU gettext library included here"
ac_help="$ac_help
--enable-maintainer-mode Enable developer functionality."
ac_help="$ac_help
--enable-sim-bswap Use Host specific BSWAP instruction."
ac_help="$ac_help
--enable-sim-cflags=opts Extra CFLAGS for use in building simulator"
ac_help="$ac_help
--enable-sim-debug=opts Enable debugging flags"
ac_help="$ac_help
--enable-sim-stdio Specify whether to use stdio for console input/output."
ac_help="$ac_help
--enable-sim-trace=opts Enable tracing flags"
ac_help="$ac_help
--enable-sim-profile=opts Enable profiling flags"
 
# Initialize some variables set by options.
# The variables have the same names as the options, with
# dashes changed to underlines.
build=NONE
cache_file=./config.cache
exec_prefix=NONE
host=NONE
no_create=
nonopt=NONE
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
sitefile=
srcdir=
target=NONE
verbose=
x_includes=NONE
x_libraries=NONE
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datadir='${prefix}/share'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
infodir='${prefix}/info'
mandir='${prefix}/man'
 
# Initialize some other variables.
subdirs=
MFLAGS= MAKEFLAGS=
SHELL=${CONFIG_SHELL-/bin/sh}
# Maximum number of lines to put in a shell here document.
ac_max_here_lines=12
 
ac_prev=
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=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) ac_optarg= ;;
esac
 
# Accept the important Cygnus configure options, so we can diagnose typos.
 
case "$ac_option" in
 
-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 ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
build="$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" ;;
 
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
| --da=*)
datadir="$ac_optarg" ;;
 
-disable-* | --disable-*)
ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
fi
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
eval "enable_${ac_feature}=no" ;;
 
-enable-* | --enable-*)
ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
fi
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
case "$ac_option" in
*=*) ;;
*) ac_optarg=yes ;;
esac
eval "enable_${ac_feature}='$ac_optarg'" ;;
 
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
| --exec | --exe | --ex)
ac_prev=exec_prefix ;;
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
exec_prefix="$ac_optarg" ;;
 
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
 
-help | --help | --hel | --he)
# 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 << EOF
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
--cache-file=FILE cache test results in FILE
--help print this message
--no-create do not create output files
--quiet, --silent do not print \`checking...' messages
--site-file=FILE use FILE as the site file
--version print the version of autoconf that created configure
Directory and file names:
--prefix=PREFIX install architecture-independent files in PREFIX
[$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[same as prefix]
--bindir=DIR user executables in DIR [EPREFIX/bin]
--sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
--libexecdir=DIR program executables in DIR [EPREFIX/libexec]
--datadir=DIR read-only architecture-independent data in DIR
[PREFIX/share]
--sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data in DIR
[PREFIX/com]
--localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
--libdir=DIR object code libraries in DIR [EPREFIX/lib]
--includedir=DIR C header files in DIR [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
--infodir=DIR info documentation in DIR [PREFIX/info]
--mandir=DIR man documentation in DIR [PREFIX/man]
--srcdir=DIR find the sources in DIR [configure dir or ..]
--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
EOF
cat << EOF
Host type:
--build=BUILD configure for building on BUILD [BUILD=HOST]
--host=HOST configure for HOST [guessed]
--target=TARGET configure for TARGET [TARGET=HOST]
Features and packages:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--x-includes=DIR X include files are in DIR
--x-libraries=DIR X library files are in DIR
EOF
if test -n "$ac_help"; then
echo "--enable and --with options recognized:$ac_help"
fi
exit 0 ;;
 
-host | --host | --hos | --ho)
ac_prev=host ;;
-host=* | --host=* | --hos=* | --ho=*)
host="$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" ;;
 
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst \
| --locals | --local | --loca | --loc | --lo)
ac_prev=localstatedir ;;
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
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)
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" ;;
 
-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" ;;
 
-site-file | --site-file | --site-fil | --site-fi | --site-f)
ac_prev=sitefile ;;
-site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*)
sitefile="$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 ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
target="$ac_optarg" ;;
 
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
 
-version | --version | --versio | --versi | --vers)
echo "configure generated by autoconf version 2.13"
exit 0 ;;
 
-with-* | --with-*)
ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
case "$ac_option" in
*=*) ;;
*) ac_optarg=yes ;;
esac
eval "with_${ac_package}='$ac_optarg'" ;;
 
-without-* | --without-*)
ac_package=`echo $ac_option|sed -e 's/-*without-//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
eval "with_${ac_package}=no" ;;
 
--x)
# Obsolete; use --with-x.
with_x=yes ;;
 
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
| --x-incl | --x-inc | --x-in | --x-i)
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
x_includes="$ac_optarg" ;;
 
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries="$ac_optarg" ;;
 
-*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
;;
 
*)
if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
echo "configure: warning: $ac_option: invalid host type" 1>&2
fi
if test "x$nonopt" != xNONE; then
{ echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
fi
nonopt="$ac_option"
;;
 
esac
done
 
if test -n "$ac_prev"; then
{ echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
fi
 
trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
 
# File descriptor usage:
# 0 standard input
# 1 file creation
# 2 errors and warnings
# 3 some systems may open it to /dev/tty
# 4 used on the Kubota Titan
# 6 checking for... messages and results
# 5 compiler messages saved in config.log
if test "$silent" = yes; then
exec 6>/dev/null
else
exec 6>&1
fi
exec 5>./config.log
 
echo "\
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
" 1>&5
 
# Strip out --no-create and --no-recursion so they do not pile up.
# Also quote any args containing shell metacharacters.
ac_configure_args=
for ac_arg
do
case "$ac_arg" in
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c) ;;
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
*" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
ac_configure_args="$ac_configure_args '$ac_arg'" ;;
*) ac_configure_args="$ac_configure_args $ac_arg" ;;
esac
done
 
# NLS nuisances.
# Only set these to C if already set. These must not be set unconditionally
# because not all systems understand e.g. LANG=C (notably SCO).
# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
# Non-C LC_CTYPE values break the ctype check.
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
 
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -rf conftest* confdefs.h
# AIX cpp loses on an empty file, so make sure it contains at least a newline.
echo > confdefs.h
 
# A filename unique to this package, relative to the directory that
# configure is in, which we can look for to find out if srcdir is correct.
ac_unique_file=Makefile.in
 
# 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 its parent.
ac_prog=$0
ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
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
if test "$ac_srcdir_defaulted" = yes; then
{ echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
else
{ echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
fi
fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
 
# Prefer explicitly selected file to automatically selected ones.
if test -z "$sitefile"; then
if test -z "$CONFIG_SITE"; then
if test "x$prefix" != xNONE; then
CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
else
CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
fi
else
CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
echo "loading site script $ac_site_file"
. "$ac_site_file"
fi
done
 
if test -r "$cache_file"; then
echo "loading cache $cache_file"
. $cache_file
else
echo "creating cache $cache_file"
> $cache_file
fi
 
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
 
ac_exeext=
ac_objext=o
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
ac_n= ac_c='
' ac_t=' '
else
ac_n=-n ac_c= ac_t=
fi
else
ac_n= ac_c='\c' ac_t=
fi
 
 
 
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# This must be in double quotes, not single quotes, because CPP may get
# substituted into the Makefile and "${CC-cc}" will confuse make.
CPP="${CC-cc} -E"
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
#line 694 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
#line 711 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
#line 728 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
CPP=/lib/cpp
fi
rm -f conftest*
fi
rm -f conftest*
fi
rm -f conftest*
ac_cv_prog_CPP="$CPP"
fi
CPP="$ac_cv_prog_CPP"
else
ac_cv_prog_CPP="$CPP"
fi
echo "$ac_t""$CPP" 1>&6
 
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftestmake <<\EOF
all:
@echo 'ac_maketemp="${MAKE}"'
EOF
# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
if test -n "$ac_maketemp"; then
eval ac_cv_prog_make_${ac_make}_set=yes
else
eval ac_cv_prog_make_${ac_make}_set=no
fi
rm -f conftestmake
fi
if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
echo "$ac_t""yes" 1>&6
SET_MAKE=
else
echo "$ac_t""no" 1>&6
SET_MAKE="MAKE=${MAKE-make}"
fi
 
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
echo "$ac_t""yes" 1>&6
ISC=yes # If later tests want to check for ISC.
cat >> confdefs.h <<\EOF
#define _POSIX_SOURCE 1
EOF
 
if test "$GCC" = yes; then
CC="$CC -posix"
else
CC="$CC -Xp"
fi
else
echo "$ac_t""no" 1>&6
ISC=
fi
 
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
ac_cv_header_stdc=yes
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_header_stdc=no
fi
rm -f conftest*
 
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "memchr" >/dev/null 2>&1; then
:
else
rm -rf conftest*
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 > conftest.$ac_ext <<EOF
#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "free" >/dev/null 2>&1; then
:
else
rm -rf conftest*
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 > conftest.$ac_ext <<EOF
#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#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)) exit(2);
exit (0); }
 
EOF
if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_header_stdc=no
fi
rm -fr conftest*
fi
 
fi
fi
 
echo "$ac_t""$ac_cv_header_stdc" 1>&6
if test $ac_cv_header_stdc = yes; then
cat >> confdefs.h <<\EOF
#define STDC_HEADERS 1
EOF
 
fi
 
echo $ac_n "checking for working const""... $ac_c" 1>&6
echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 916 "configure"
#include "confdefs.h"
 
int main() {
 
/* Ultrix mips cc rejects this. */
typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *ccp;
char **p;
/* NEC SVR4.0.2 mips cc rejects this. */
struct point {int x, y;};
static struct point const zero = {0,0};
/* AIX XL C 1.02.0.0 rejects this.
It does not let you subtract one const X* pointer from another in an arm
of an if-expression whose if-part is not a constant expression */
const char *g = "string";
ccp = &g + (g ? g-g : 0);
/* HPUX 7.0 cc rejects these. */
++ccp;
p = (char**) ccp;
ccp = (char const *const *) p;
{ /* SCO 3.2v4 cc rejects this. */
char *t;
char const *s = 0 ? (char *) 0 : (char const *) 0;
 
*t++ = 0;
}
{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
int x[] = {25, 17};
const int *foo = &x[0];
++foo;
}
{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
typedef const int *iptr;
iptr p = 0;
++p;
}
{ /* AIX XL C 1.02.0.0 rejects this saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
struct s { int j; const int *ap[3]; };
struct s *b; b->j = 5;
}
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
const int foo = 10;
}
 
; return 0; }
EOF
if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_c_const=no
fi
rm -f conftest*
fi
 
echo "$ac_t""$ac_cv_c_const" 1>&6
if test $ac_cv_c_const = no; then
cat >> confdefs.h <<\EOF
#define const
EOF
 
fi
 
echo $ac_n "checking for inline""... $ac_c" 1>&6
echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
#line 993 "configure"
#include "confdefs.h"
 
int main() {
} $ac_kw foo() {
; return 0; }
EOF
if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
fi
rm -f conftest*
done
 
fi
 
echo "$ac_t""$ac_cv_c_inline" 1>&6
case "$ac_cv_c_inline" in
inline | yes) ;;
no) cat >> confdefs.h <<\EOF
#define inline
EOF
;;
*) cat >> confdefs.h <<EOF
#define inline $ac_cv_c_inline
EOF
;;
esac
 
echo $ac_n "checking for off_t""... $ac_c" 1>&6
echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
rm -rf conftest*
ac_cv_type_off_t=yes
else
rm -rf conftest*
ac_cv_type_off_t=no
fi
rm -f conftest*
 
fi
echo "$ac_t""$ac_cv_type_off_t" 1>&6
if test $ac_cv_type_off_t = no; then
cat >> confdefs.h <<\EOF
#define off_t long
EOF
 
fi
 
echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
rm -rf conftest*
ac_cv_type_size_t=yes
else
rm -rf conftest*
ac_cv_type_size_t=no
fi
rm -f conftest*
 
fi
echo "$ac_t""$ac_cv_type_size_t" 1>&6
if test $ac_cv_type_size_t = no; then
cat >> confdefs.h <<\EOF
#define size_t unsigned
EOF
 
fi
 
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_header_alloca_h=no
fi
rm -f conftest*
fi
 
echo "$ac_t""$ac_cv_header_alloca_h" 1>&6
if test $ac_cv_header_alloca_h = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_ALLOCA_H 1
EOF
 
fi
 
echo $ac_n "checking for alloca""... $ac_c" 1>&6
echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1132 "configure"
#include "confdefs.h"
 
#ifdef __GNUC__
# define alloca __builtin_alloca
#else
# ifdef _MSC_VER
# include <malloc.h>
# define alloca _alloca
# else
# if HAVE_ALLOCA_H
# include <alloca.h>
# else
# ifdef _AIX
#pragma alloca
# else
# ifndef alloca /* predefined by HP cc +Olibcalls */
char *alloca ();
# endif
# endif
# endif
# endif
#endif
 
int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_func_alloca_works=no
fi
rm -f conftest*
fi
 
echo "$ac_t""$ac_cv_func_alloca_works" 1>&6
if test $ac_cv_func_alloca_works = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_ALLOCA 1
EOF
 
fi
 
if test $ac_cv_func_alloca_works = no; then
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
# that cause trouble. Some versions do not even contain alloca or
# contain a buggy version. If you still want to use their alloca,
# use ar to extract alloca.o from them instead of compiling alloca.c.
ALLOCA=alloca.${ac_objext}
cat >> confdefs.h <<\EOF
#define C_ALLOCA 1
EOF
 
 
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
#else
wenotbecray
#endif
 
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "webecray" >/dev/null 2>&1; then
rm -rf conftest*
ac_cv_os_cray=yes
else
rm -rf conftest*
ac_cv_os_cray=no
fi
rm -f conftest*
 
fi
 
echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func();
 
int main() {
 
/* 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_$ac_func) || defined (__stub___$ac_func)
choke me
#else
$ac_func();
#endif
 
; return 0; }
EOF
if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
fi
 
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<EOF
#define CRAY_STACKSEG_END $ac_func
EOF
 
break
else
echo "$ac_t""no" 1>&6
fi
 
done
fi
 
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
static char *addr = 0;
auto char dummy;
if (addr == 0)
{
addr = &dummy;
return find_stack_direction ();
}
else
return (&dummy > addr) ? 1 : -1;
}
main ()
{
exit (find_stack_direction() < 0);
}
EOF
if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_c_stack_direction=-1
fi
rm -fr conftest*
fi
 
fi
 
echo "$ac_t""$ac_cv_c_stack_direction" 1>&6
cat >> confdefs.h <<EOF
#define STACK_DIRECTION $ac_cv_c_stack_direction
EOF
 
fi
 
for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1329: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func();
 
int main() {
 
/* 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_$ac_func) || defined (__stub___$ac_func)
choke me
#else
$ac_func();
#endif
 
; return 0; }
EOF
if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
fi
 
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
cat >> confdefs.h <<EOF
#define $ac_tr_func 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
#line 1429 "configure"
#include "confdefs.h"
 
/* Thanks to Mike Haertel and Jim Avera for this test.
Here is a matrix of mmap possibilities:
mmap private not fixed
mmap private fixed at somewhere currently unmapped
mmap private fixed at somewhere already mapped
mmap shared not fixed
mmap shared fixed at somewhere currently unmapped
mmap shared fixed at somewhere already mapped
For private mappings, we should verify that changes cannot be read()
back from the file, nor mmap's back from the file at a different
address. (There have been systems where private was not correctly
implemented like the infamous i386 svr4.0, and systems where the
VM page cache was not coherent with the filesystem buffer cache
like early versions of FreeBSD and possibly contemporary NetBSD.)
For shared mappings, we should conversely verify that changes get
propogated back to all the places they're supposed to be.
 
Grep wants private fixed already mapped.
The main things grep needs to know about mmap are:
* does it exist and is it safe to write into the mmap'd area
* how to use it (BSD variants) */
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
 
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
 
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
# define HAVE_SYS_PARAM_H 1
# endif
 
# ifdef _SC_PAGESIZE
# define getpagesize() sysconf(_SC_PAGESIZE)
# else /* no _SC_PAGESIZE */
# ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
# ifdef EXEC_PAGESIZE
# define getpagesize() EXEC_PAGESIZE
# else /* no EXEC_PAGESIZE */
# ifdef NBPG
# define getpagesize() NBPG * CLSIZE
# ifndef CLSIZE
# define CLSIZE 1
# endif /* no CLSIZE */
# else /* no NBPG */
# ifdef NBPC
# define getpagesize() NBPC
# else /* no NBPC */
# ifdef PAGESIZE
# define getpagesize() PAGESIZE
# endif /* PAGESIZE */
# endif /* no NBPC */
# endif /* no NBPG */
# endif /* no EXEC_PAGESIZE */
# else /* no HAVE_SYS_PARAM_H */
# define getpagesize() 8192 /* punt totally */
# endif /* no HAVE_SYS_PARAM_H */
# endif /* no _SC_PAGESIZE */
 
#endif /* no HAVE_GETPAGESIZE */
 
#ifdef __cplusplus
extern "C" { void *malloc(unsigned); }
#else
char *malloc();
#endif
 
int
main()
{
char *data, *data2, *data3;
int i, pagesize;
int fd;
 
pagesize = getpagesize();
 
/*
* First, make a file with some known garbage in it.
*/
data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
*(data + i) = rand();
umask(0);
fd = creat("conftestmmap", 0600);
if (fd < 0)
exit(1);
if (write(fd, data, pagesize) != pagesize)
exit(1);
close(fd);
 
/*
* Next, try to mmap the file at a fixed address which
* already has something else allocated at it. If we can,
* also make sure that we see the same garbage.
*/
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
data2 = malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_FIXED, fd, 0L))
exit(1);
for (i = 0; i < pagesize; ++i)
if (*(data + i) != *(data2 + i))
exit(1);
 
/*
* Finally, make sure that changes to the mapped area
* do not percolate back to the file as seen by read().
* (This is a bug on some variants of i386 svr4.0.)
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
data3 = malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
exit(1);
for (i = 0; i < pagesize; ++i)
if (*(data + i) != *(data3 + i))
exit(1);
close(fd);
unlink("conftestmmap");
exit(0);
}
 
EOF
if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_func_mmap_fixed_mapped=no
fi
rm -fr conftest*
fi
 
fi
 
echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6
if test $ac_cv_func_mmap_fixed_mapped = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_MMAP 1
EOF
 
fi
 
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
echo "configure:1592: checking for Cygwin environment" >&5
if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1597 "configure"
#include "confdefs.h"
 
int main() {
 
#ifndef __CYGWIN__
#define __CYGWIN__ __CYGWIN32__
#endif
return __CYGWIN__;
; return 0; }
EOF
if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_cygwin=no
fi
rm -f conftest*
rm -f conftest*
fi
 
echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
echo "configure:1625: checking for mingw32 environment" >&5
if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1630 "configure"
#include "confdefs.h"
 
int main() {
return __MINGW32__;
; return 0; }
EOF
if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_mingw32=no
fi
rm -f conftest*
rm -f conftest*
fi
 
echo "$ac_t""$ac_cv_mingw32" 1>&6
MINGW32=
test "$ac_cv_mingw32" = yes && MINGW32=yes
 
# autoconf.info says this should be called right after AC_INIT.
 
 
ac_aux_dir=
for ac_dir in `cd $srcdir;pwd`/../.. $srcdir/`cd $srcdir;pwd`/../..; do
if test -f $ac_dir/install-sh; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
break
elif test -f $ac_dir/install.sh; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install.sh -c"
break
fi
done
if test -z "$ac_aux_dir"; then
{ echo "configure: error: can not find install-sh or install.sh in `cd $srcdir;pwd`/../.. $srcdir/`cd $srcdir;pwd`/../.." 1>&2; exit 1; }
fi
ac_config_guess=$ac_aux_dir/config.guess
ac_config_sub=$ac_aux_dir/config.sub
ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 
 
# Do some error checking and defaulting for the host and target type.
# The inputs are:
# configure --host=HOST --target=TARGET --build=BUILD NONOPT
#
# The rules are:
# 1. You are not allowed to specify --host, --target, and nonopt at the
# same time.
# 2. Host defaults to nonopt.
# 3. If nonopt is not specified, then host defaults to the current host,
# as determined by config.guess.
# 4. Target and build default to nonopt.
# 5. If nonopt is not specified, then target and build default to host.
 
# The aliases save the names the user supplied, while $host etc.
# will get canonicalized.
case $host---$target---$nonopt in
NONE---*---* | *---NONE---* | *---*---NONE) ;;
*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
esac
 
 
# Make sure we can run config.sub.
if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
 
echo $ac_n "checking host system type""... $ac_c" 1>&6
echo "configure:1704: checking host system type" >&5
 
host_alias=$host
case "$host_alias" in
NONE)
case $nonopt in
NONE)
if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
fi ;;
*) host_alias=$nonopt ;;
esac ;;
esac
 
host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
 
echo $ac_n "checking target system type""... $ac_c" 1>&6
echo "configure:1725: checking target system type" >&5
 
target_alias=$target
case "$target_alias" in
NONE)
case $nonopt in
NONE) target_alias=$host_alias ;;
*) target_alias=$nonopt ;;
esac ;;
esac
 
target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
 
echo $ac_n "checking build system type""... $ac_c" 1>&6
echo "configure:1743: checking build system type" >&5
 
build_alias=$build
case "$build_alias" in
NONE)
case $nonopt in
NONE) build_alias=$host_alias ;;
*) build_alias=$nonopt ;;
esac ;;
esac
 
build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$build" 1>&6
 
test "$host_alias" != "$target_alias" &&
test "$program_prefix$program_suffix$program_transform_name" = \
NONENONEs,x,x, &&
program_prefix=${target_alias}-
 
if test "$program_transform_name" = s,x,x,; then
program_transform_name=
else
# Double any \ or $. echo might interpret backslashes.
cat <<\EOF_SED > conftestsed
s,\\,\\\\,g; s,\$,$$,g
EOF_SED
program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
rm -f conftestsed
fi
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"
 
# sed with no file args requires a program.
test "$program_transform_name" = "" && program_transform_name="s,x,x,"
 
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_prog_CC="gcc"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
CC="$ac_cv_prog_CC"
if test -n "$CC"; then
echo "$ac_t""$CC" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_prog_rejected=no
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
break
fi
done
IFS="$ac_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 $# -gt 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
set dummy "$ac_dir/$ac_word" "$@"
shift
ac_cv_prog_CC="$@"
fi
fi
fi
fi
CC="$ac_cv_prog_CC"
if test -n "$CC"; then
echo "$ac_t""$CC" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
if test -z "$CC"; then
case "`uname -s`" in
*win32* | *WIN32*)
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_prog_CC="cl"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
CC="$ac_cv_prog_CC"
if test -n "$CC"; then
echo "$ac_t""$CC" 1>&6
else
echo "$ac_t""no" 1>&6
fi
;;
esac
fi
test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
fi
 
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
 
cat > conftest.$ac_ext << EOF
 
#line 1911 "configure"
#include "confdefs.h"
 
main(){return(0);}
EOF
if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
ac_cv_prog_cc_cross=no
else
ac_cv_prog_cc_cross=yes
fi
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_cv_prog_cc_works=no
fi
rm -fr conftest*
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
cross_compiling=$ac_cv_prog_cc_cross
 
echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
 
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.c <<EOF
#ifdef __GNUC__
yes;
#endif
EOF
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
fi
fi
 
echo "$ac_t""$ac_cv_prog_gcc" 1>&6
 
if test $ac_cv_prog_gcc = yes; then
GCC=yes
else
GCC=
fi
 
ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo 'void f(){}' > conftest.c
if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
ac_cv_prog_cc_g=yes
else
ac_cv_prog_cc_g=no
fi
rm -f conftest*
 
fi
 
echo "$ac_t""$ac_cv_prog_cc_g" 1>&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
 
# 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
# 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"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
for ac_dir in $PATH; do
# Account for people who put trailing slashes in PATH elements.
case "$ac_dir/" in
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/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
if test -f $ac_dir/$ac_prog; then
if test $ac_prog = install &&
grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
else
ac_cv_path_install="$ac_dir/$ac_prog -c"
break 2
fi
fi
done
;;
esac
done
IFS="$ac_save_IFS"
 
fi
if test "${ac_cv_path_install+set}" = set; then
INSTALL="$ac_cv_path_install"
else
# As a last resort, use the slow shell script. We don't cache a
# path for INSTALL within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the path is relative.
INSTALL="$ac_install_sh"
fi
fi
echo "$ac_t""$INSTALL" 1>&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_PROGRAM}'
 
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}
 
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2086: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_prog_RANLIB="ranlib"
break
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
fi
fi
RANLIB="$ac_cv_prog_RANLIB"
if test -n "$RANLIB"; then
echo "$ac_t""$RANLIB" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
 
ALL_LINGUAS=
for ac_hdr in argz.h limits.h locale.h nl_types.h malloc.h string.h \
unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2121: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2131: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
for ac_func in getcwd munmap putenv setenv setlocale strchr strcasecmp \
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func();
 
int main() {
 
/* 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_$ac_func) || defined (__stub___$ac_func)
choke me
#else
$ac_func();
#endif
 
; return 0; }
EOF
if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
fi
 
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
cat >> confdefs.h <<EOF
#define $ac_tr_func 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
 
if test "${ac_cv_func_stpcpy+set}" != "set"; then
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func();
 
int main() {
 
/* 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_$ac_func) || defined (__stub___$ac_func)
choke me
#else
$ac_func();
#endif
 
; return 0; }
EOF
if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
fi
 
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
cat >> confdefs.h <<EOF
#define $ac_tr_func 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
fi
if test "${ac_cv_func_stpcpy}" = "yes"; then
cat >> confdefs.h <<\EOF
#define HAVE_STPCPY 1
EOF
 
fi
 
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
am_cv_val_LC_MESSAGES=no
fi
rm -f conftest*
fi
 
echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6
if test $am_cv_val_LC_MESSAGES = yes; then
cat >> confdefs.h <<\EOF
#define HAVE_LC_MESSAGES 1
EOF
 
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
USE_NLS=$enableval
else
USE_NLS=yes
fi
 
echo "$ac_t""$USE_NLS" 1>&6
 
USE_INCLUDED_LIBINTL=no
 
if test "$USE_NLS" = "yes"; then
cat >> confdefs.h <<\EOF
#define ENABLE_NLS 1
EOF
 
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
nls_cv_force_use_gnu_gettext=$withval
else
nls_cv_force_use_gnu_gettext=no
fi
 
echo "$ac_t""$nls_cv_force_use_gnu_gettext" 1>&6
 
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
nls_cv_header_intl=
nls_cv_header_libgt=
CATOBJEXT=NONE
 
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
gt_cv_func_gettext_libc=no
fi
rm -f conftest*
fi
 
echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
 
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char bindtextdomain();
 
int main() {
bindtextdomain()
; return 0; }
EOF
if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
 
fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2447 "configure"
#include "confdefs.h"
 
int main() {
return (int) gettext ("")
; return 0; }
EOF
if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
gt_cv_func_gettext_libintl=no
fi
rm -f conftest*
fi
 
echo "$ac_t""$gt_cv_func_gettext_libintl" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
fi
 
if test "$gt_cv_func_gettext_libc" = "yes" \
|| test "$gt_cv_func_gettext_libintl" = "yes"; then
cat >> confdefs.h <<\EOF
#define HAVE_GETTEXT 1
EOF
 
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$MSGFMT" in
/*)
ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
ac_cv_path_MSGFMT="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
;;
esac
fi
MSGFMT="$ac_cv_path_MSGFMT"
if test -n "$MSGFMT"; then
echo "$ac_t""$MSGFMT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
if test "$MSGFMT" != "no"; then
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func();
 
int main() {
 
/* 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_$ac_func) || defined (__stub___$ac_func)
choke me
#else
$ac_func();
#endif
 
; return 0; }
EOF
if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
fi
 
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
cat >> confdefs.h <<EOF
#define $ac_tr_func 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$GMSGFMT" in
/*)
ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
;;
?:/*)
ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_path_GMSGFMT="$ac_dir/$ac_word"
break
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
;;
esac
fi
GMSGFMT="$ac_cv_path_GMSGFMT"
if test -n "$GMSGFMT"; then
echo "$ac_t""$GMSGFMT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$XGETTEXT" in
/*)
ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
;;
esac
fi
XGETTEXT="$ac_cv_path_XGETTEXT"
if test -n "$XGETTEXT"; then
echo "$ac_t""$XGETTEXT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
cat > conftest.$ac_ext <<EOF
#line 2639 "configure"
#include "confdefs.h"
 
int main() {
extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
CATOBJEXT=.mo
DATADIRNAME=lib
fi
rm -f conftest*
INSTOBJEXT=.mo
fi
fi
else
echo "$ac_t""no" 1>&6
fi
 
 
if test "$CATOBJEXT" = "NONE"; then
nls_cv_use_gnu_gettext=yes
fi
fi
 
if test "$nls_cv_use_gnu_gettext" = "yes"; then
INTLOBJS="\$(GETTOBJS)"
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$MSGFMT" in
/*)
ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
ac_cv_path_MSGFMT="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt"
;;
esac
fi
MSGFMT="$ac_cv_path_MSGFMT"
if test -n "$MSGFMT"; then
echo "$ac_t""$MSGFMT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$GMSGFMT" in
/*)
ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
;;
?:/*)
ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_path_GMSGFMT="$ac_dir/$ac_word"
break
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
;;
esac
fi
GMSGFMT="$ac_cv_path_GMSGFMT"
if test -n "$GMSGFMT"; then
echo "$ac_t""$GMSGFMT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
case "$XGETTEXT" in
/*)
ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
;;
esac
fi
XGETTEXT="$ac_cv_path_XGETTEXT"
if test -n "$XGETTEXT"; then
echo "$ac_t""$XGETTEXT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
 
USE_INCLUDED_LIBINTL=yes
CATOBJEXT=.gmo
INSTOBJEXT=.mo
DATADIRNAME=share
INTLDEPS='$(top_builddir)/../intl/libintl.a'
INTLLIBS=$INTLDEPS
LIBS=`echo $LIBS | sed -e 's/-lintl//'`
nls_cv_header_intl=libintl.h
nls_cv_header_libgt=libgettext.h
fi
 
if test "$XGETTEXT" != ":"; then
if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
: ;
else
echo "$ac_t""found xgettext programs is not GNU xgettext; ignore it" 1>&6
XGETTEXT=":"
fi
fi
 
# We need to process the po/ directory.
POSUB=po
else
DATADIRNAME=share
nls_cv_header_intl=libintl.h
nls_cv_header_libgt=libgettext.h
fi
 
# If this is used in GNU gettext we have to set USE_NLS to `yes'
# because some of the sources are only built for this goal.
if test "$PACKAGE" = gettext; then
USE_NLS=yes
USE_INCLUDED_LIBINTL=yes
fi
 
for lang in $ALL_LINGUAS; do
GMOFILES="$GMOFILES $lang.gmo"
POFILES="$POFILES $lang.po"
done
 
 
if test "x$CATOBJEXT" != "x"; then
if test "x$ALL_LINGUAS" = "x"; then
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
*$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
esac
done
LINGUAS=$NEW_LINGUAS
echo "$ac_t""$LINGUAS" 1>&6
fi
 
if test -n "$LINGUAS"; then
for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
fi
fi
 
if test $ac_cv_header_locale_h = yes; then
INCLUDE_LOCALE_H="#include <locale.h>"
else
INCLUDE_LOCALE_H="\
/* The system does not provide the header <locale.h>. Take care yourself. */"
fi
 
if test -f $srcdir/po2tbl.sed.in; then
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
msgformat=linux
else
echo "$ac_t""no" 1>&6
msgformat=xopen
fi
 
 
sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
fi
sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
$srcdir/po2tbl.sed.in > po2tbl.sed
fi
 
if test "$PACKAGE" = "gettext"; then
GT_NO="#NO#"
GT_YES=
else
GT_NO=
GT_YES="#YES#"
fi
 
MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
 
l=
 
if test -d $srcdir/po; then
test -d po || mkdir po
if test "x$srcdir" != "x."; then
if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
posrcprefix="$srcdir/"
else
posrcprefix="../$srcdir/"
fi
else
posrcprefix="../"
fi
rm -f po/POTFILES
sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
< $srcdir/po/POTFILES.in > po/POTFILES
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*.
for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2946: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2986: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:3026: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:3066: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3076: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char $ac_func();
 
int main() {
 
/* 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_$ac_func) || defined (__stub___$ac_func)
choke me
#else
$ac_func();
#endif
 
; return 0; }
EOF
if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_func_$ac_func=no"
fi
rm -f conftest*
fi
 
if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
cat >> confdefs.h <<EOF
#define $ac_tr_func 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
 
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char bind();
 
int main() {
bind()
; return 0; }
EOF
if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
 
fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
cat >> confdefs.h <<EOF
#define $ac_tr_lib 1
EOF
 
LIBS="-lsocket $LIBS"
 
else
echo "$ac_t""no" 1>&6
fi
 
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char gethostbyname();
 
int main() {
gethostbyname()
; return 0; }
EOF
if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
 
fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
cat >> confdefs.h <<EOF
#define $ac_tr_lib 1
EOF
 
LIBS="-lnsl $LIBS"
 
else
echo "$ac_t""no" 1>&6
fi
 
 
. ${srcdir}/../../bfd/configure.host
 
 
 
USE_MAINTAINER_MODE=no
# Check whether --enable-maintainer-mode or --disable-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="#" ;;
*) { echo "configure: error: "--enable-maintainer-mode does not take a value"" 1>&2; exit 1; }; 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 or --disable-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";;
*) { echo "configure: error: "--enable-sim-bswap does not take a value"" 1>&2; exit 1; }; 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 or --disable-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) { echo "configure: error: "Please use --enable-sim-debug instead."" 1>&2; exit 1; }; 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 or --disable-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 or --disable-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";;
*) { echo "configure: error: "Unknown value $enableval passed to --enable-sim-stdio"" 1>&2; exit 1; }; 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 or --disable-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 or --disable-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
 
 
 
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
#ifdef signal
#undef signal
#endif
#ifdef __cplusplus
extern "C" void (*signal (int, void (*)(int)))(int);
#else
void (*signal ()) ();
#endif
 
int main() {
int i;
; return 0; }
EOF
if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_type_signal=int
fi
rm -f conftest*
fi
 
echo "$ac_t""$ac_cv_type_signal" 1>&6
cat >> confdefs.h <<EOF
#define RETSIGTYPE $ac_cv_type_signal
EOF
 
 
 
 
 
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
ac_cv_exeext=.exe
else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
else
{ echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
fi
rm -f conftest*
test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
fi
fi
 
EXEEXT=""
test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
echo "$ac_t""${ac_cv_exeext}" 1>&6
ac_exeext=$EXEEXT
 
 
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_hdr in string.h strings.h stdlib.h time.h sys/times.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:3501: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3511: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
 
 
 
 
trap '' 1 2 15
cat > confcache <<\EOF
# 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. It is not useful on other systems.
# If it contains results you don't want to keep, you may remove or edit it.
#
# By default, configure uses ./config.cache as the cache file,
# creating it if it does not exist already. You can give configure
# the --cache-file=FILE option to use a different cache file; that is
# what configure does when it calls configure scripts in
# subdirectories, so they share the cache.
# Giving --cache-file=/dev/null disables caching, for debugging configure.
# config.status only pays attention to the cache file if you give it the
# --recheck option to rerun configure.
#
EOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, don't put newlines in cache variables' values.
# 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.
(set) 2>&1 |
case `(ac_space=' '; set | grep ac_space) 2>&1` in
*ac_space=\ *)
# `set' does not quote correctly, so add quotes (double-quote substitution
# turns \\\\ into \\, and sed turns \\ into \).
sed -n \
-e "s/'/'\\\\''/g" \
-e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
;;
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
;;
esac >> confcache
if cmp -s $cache_file confcache; then
:
else
if test -w $cache_file; then
echo "updating cache $cache_file"
cat confcache > $cache_file
else
echo "not updating unwritable cache $cache_file"
fi
fi
rm -f confcache
 
trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
 
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 
# Any assignment to VPATH causes Sun make to only execute
# the first set of double-colon rules, so remove it if not needed.
# If there is a colon in the path, we need to keep it.
if test "x$srcdir" = x.; then
ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
fi
 
trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
 
DEFS=-DHAVE_CONFIG_H
 
# Without the "./", some shells look in PATH for config.status.
: ${CONFIG_STATUS=./config.status}
 
echo creating $CONFIG_STATUS
rm -f $CONFIG_STATUS
cat > $CONFIG_STATUS <<EOF
#! /bin/sh
# Generated automatically by configure.
# Run this file to recreate the current configuration.
# This directory was configured as follows,
# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
#
# $0 $ac_configure_args
#
# Compiler output produced by configure, useful for debugging
# configure, is in ./config.log if it exists.
 
ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
for ac_option
do
case "\$ac_option" in
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
echo "$CONFIG_STATUS generated by autoconf version 2.13"
exit 0 ;;
-help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;;
*) echo "\$ac_cs_usage"; exit 1 ;;
esac
done
 
ac_given_srcdir=$srcdir
ac_given_INSTALL="$INSTALL"
 
trap 'rm -fr `echo "Makefile.sim:Makefile.in Make-common.sim:../common/Make-common.in .gdbinit:../common/gdbinit.in config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
 
# Protect against being on the right side of a sed subst in config.status.
sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
$ac_vpsub
$extrasub
s%@sim_environment@%$sim_environment%g
s%@sim_alignment@%$sim_alignment%g
s%@sim_assert@%$sim_assert%g
s%@sim_bitsize@%$sim_bitsize%g
s%@sim_endian@%$sim_endian%g
s%@sim_hostendian@%$sim_hostendian%g
s%@sim_float@%$sim_float%g
s%@sim_scache@%$sim_scache%g
s%@sim_default_model@%$sim_default_model%g
s%@sim_hw_cflags@%$sim_hw_cflags%g
s%@sim_hw_objs@%$sim_hw_objs%g
s%@sim_hw@%$sim_hw%g
s%@sim_inline@%$sim_inline%g
s%@sim_packages@%$sim_packages%g
s%@sim_regparm@%$sim_regparm%g
s%@sim_reserved_bits@%$sim_reserved_bits%g
s%@sim_smp@%$sim_smp%g
s%@sim_stdcall@%$sim_stdcall%g
s%@sim_xor_endian@%$sim_xor_endian%g
s%@WARN_CFLAGS@%$WARN_CFLAGS%g
s%@WERROR_CFLAGS@%$WERROR_CFLAGS%g
s%@SHELL@%$SHELL%g
s%@CFLAGS@%$CFLAGS%g
s%@CPPFLAGS@%$CPPFLAGS%g
s%@CXXFLAGS@%$CXXFLAGS%g
s%@FFLAGS@%$FFLAGS%g
s%@DEFS@%$DEFS%g
s%@LDFLAGS@%$LDFLAGS%g
s%@LIBS@%$LIBS%g
s%@exec_prefix@%$exec_prefix%g
s%@prefix@%$prefix%g
s%@program_transform_name@%$program_transform_name%g
s%@bindir@%$bindir%g
s%@sbindir@%$sbindir%g
s%@libexecdir@%$libexecdir%g
s%@datadir@%$datadir%g
s%@sysconfdir@%$sysconfdir%g
s%@sharedstatedir@%$sharedstatedir%g
s%@localstatedir@%$localstatedir%g
s%@libdir@%$libdir%g
s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
s%@host@%$host%g
s%@host_alias@%$host_alias%g
s%@host_cpu@%$host_cpu%g
s%@host_vendor@%$host_vendor%g
s%@host_os@%$host_os%g
s%@target@%$target%g
s%@target_alias@%$target_alias%g
s%@target_cpu@%$target_cpu%g
s%@target_vendor@%$target_vendor%g
s%@target_os@%$target_os%g
s%@build@%$build%g
s%@build_alias@%$build_alias%g
s%@build_cpu@%$build_cpu%g
s%@build_vendor@%$build_vendor%g
s%@build_os@%$build_os%g
s%@CC@%$CC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
s%@CC_FOR_BUILD@%$CC_FOR_BUILD%g
s%@HDEFINES@%$HDEFINES%g
s%@AR@%$AR%g
s%@RANLIB@%$RANLIB%g
s%@SET_MAKE@%$SET_MAKE%g
s%@CPP@%$CPP%g
s%@ALLOCA@%$ALLOCA%g
s%@USE_NLS@%$USE_NLS%g
s%@MSGFMT@%$MSGFMT%g
s%@GMSGFMT@%$GMSGFMT%g
s%@XGETTEXT@%$XGETTEXT%g
s%@USE_INCLUDED_LIBINTL@%$USE_INCLUDED_LIBINTL%g
s%@CATALOGS@%$CATALOGS%g
s%@CATOBJEXT@%$CATOBJEXT%g
s%@DATADIRNAME@%$DATADIRNAME%g
s%@GMOFILES@%$GMOFILES%g
s%@INSTOBJEXT@%$INSTOBJEXT%g
s%@INTLDEPS@%$INTLDEPS%g
s%@INTLLIBS@%$INTLLIBS%g
s%@INTLOBJS@%$INTLOBJS%g
s%@POFILES@%$POFILES%g
s%@POSUB@%$POSUB%g
s%@INCLUDE_LOCALE_H@%$INCLUDE_LOCALE_H%g
s%@GT_NO@%$GT_NO%g
s%@GT_YES@%$GT_YES%g
s%@MKINSTALLDIRS@%$MKINSTALLDIRS%g
s%@l@%$l%g
s%@MAINT@%$MAINT%g
s%@sim_bswap@%$sim_bswap%g
s%@sim_cflags@%$sim_cflags%g
s%@sim_debug@%$sim_debug%g
s%@sim_stdio@%$sim_stdio%g
s%@sim_trace@%$sim_trace%g
s%@sim_profile@%$sim_profile%g
s%@EXEEXT@%$EXEEXT%g
 
CEOF
EOF
 
cat >> $CONFIG_STATUS <<\EOF
 
# Split the substitutions into bite-sized pieces for seds with
# small command number limits, like on Digital OSF/1 and HP-UX.
ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
ac_file=1 # Number of current file.
ac_beg=1 # First line for current file.
ac_end=$ac_max_sed_cmds # Line after last line for current file.
ac_more_lines=:
ac_sed_cmds=""
while $ac_more_lines; do
if test $ac_beg -gt 1; then
sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
else
sed "${ac_end}q" conftest.subs > conftest.s$ac_file
fi
if test ! -s conftest.s$ac_file; then
ac_more_lines=false
rm -f conftest.s$ac_file
else
if test -z "$ac_sed_cmds"; then
ac_sed_cmds="sed -f conftest.s$ac_file"
else
ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
fi
ac_file=`expr $ac_file + 1`
ac_beg=$ac_end
ac_end=`expr $ac_end + $ac_max_sed_cmds`
fi
done
if test -z "$ac_sed_cmds"; then
ac_sed_cmds=cat
fi
EOF
 
cat >> $CONFIG_STATUS <<EOF
 
CONFIG_FILES=\${CONFIG_FILES-"Makefile.sim:Makefile.in Make-common.sim:../common/Make-common.in .gdbinit:../common/gdbinit.in"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case "$ac_file" in
*:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
*) ac_file_in="${ac_file}.in" ;;
esac
 
# Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
 
# Remove last slash and all that follows it. Not all systems have dirname.
ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
# The file is in a subdirectory.
test ! -d "$ac_dir" && mkdir "$ac_dir"
ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
# A "../" for each directory in $ac_dir_suffix.
ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
else
ac_dir_suffix= ac_dots=
fi
 
case "$ac_given_srcdir" in
.) srcdir=.
if test -z "$ac_dots"; then top_srcdir=.
else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
/*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
*) # Relative path.
srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
 
case "$ac_given_INSTALL" in
[/$]*) INSTALL="$ac_given_INSTALL" ;;
*) INSTALL="$ac_dots$ac_given_INSTALL" ;;
esac
 
echo creating "$ac_file"
rm -f "$ac_file"
configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
case "$ac_file" in
*Makefile*) ac_comsub="1i\\
# $configure_input" ;;
*) ac_comsub= ;;
esac
 
ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
sed -e "$ac_comsub
s%@configure_input@%$configure_input%g
s%@srcdir@%$srcdir%g
s%@top_srcdir@%$top_srcdir%g
s%@INSTALL@%$INSTALL%g
" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
fi; done
rm -f conftest.s*
 
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
# NAME is the cpp macro being defined and VALUE is the value it is being given.
#
# ac_d sets the value in "#define NAME VALUE" lines.
ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
ac_dC='\3'
ac_dD='%g'
# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
ac_uB='\([ ]\)%\1#\2define\3'
ac_uC=' '
ac_uD='\4%g'
# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
ac_eB='$%\1#\2define\3'
ac_eC=' '
ac_eD='%g'
 
if test "${CONFIG_HEADERS+set}" != set; then
EOF
cat >> $CONFIG_STATUS <<EOF
CONFIG_HEADERS="config.h:config.in"
EOF
cat >> $CONFIG_STATUS <<\EOF
fi
for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case "$ac_file" in
*:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
*) ac_file_in="${ac_file}.in" ;;
esac
 
echo creating $ac_file
 
rm -f conftest.frag conftest.in conftest.out
ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
cat $ac_file_inputs > conftest.in
 
EOF
 
# Transform confdefs.h into a sed script conftest.vals that substitutes
# the proper values into config.h.in to produce config.h. And first:
# Protect against being on the right side of a sed subst in config.status.
# Protect against being in an unquoted here document in config.status.
rm -f conftest.vals
cat > conftest.hdr <<\EOF
s/[\\&%]/\\&/g
s%[\\$`]%\\&%g
s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
s%ac_d%ac_u%gp
s%ac_u%ac_e%gp
EOF
sed -n -f conftest.hdr confdefs.h > conftest.vals
rm -f conftest.hdr
 
# This sed command replaces #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.
cat >> conftest.vals <<\EOF
s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
EOF
 
# Break up conftest.vals because some shells have a limit on
# the size of here documents, and old seds have small limits too.
 
rm -f conftest.tail
while :
do
ac_lines=`grep -c . conftest.vals`
# grep -c gives empty output for an empty file on some AIX systems.
if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
# Write a limited-size here document to conftest.frag.
echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
echo 'CEOF
sed -f conftest.frag conftest.in > conftest.out
rm -f conftest.in
mv conftest.out conftest.in
' >> $CONFIG_STATUS
sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
rm -f conftest.vals
mv conftest.tail conftest.vals
done
rm -f conftest.vals
 
cat >> $CONFIG_STATUS <<\EOF
rm -f conftest.frag conftest.h
echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
cat conftest.in >> conftest.h
rm -f conftest.in
if cmp -s $ac_file conftest.h 2>/dev/null; then
echo "$ac_file is unchanged"
rm -f conftest.h
else
# Remove last slash and all that follows it. Not all systems have dirname.
ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
# The file is in a subdirectory.
test ! -d "$ac_dir" && mkdir "$ac_dir"
fi
rm -f $ac_file
mv conftest.h $ac_file
fi
fi; done
 
EOF
 
cat >> $CONFIG_STATUS <<EOF
ac_sources="$sim_link_files"
ac_dests="$sim_link_links"
EOF
 
cat >> $CONFIG_STATUS <<\EOF
srcdir=$ac_given_srcdir
while test -n "$ac_sources"; do
set $ac_dests; ac_dest=$1; shift; ac_dests=$*
set $ac_sources; ac_source=$1; shift; ac_sources=$*
 
echo "linking $srcdir/$ac_source to $ac_dest"
 
if test ! -r $srcdir/$ac_source; then
{ echo "configure: error: $srcdir/$ac_source: File not found" 1>&2; exit 1; }
fi
rm -f $ac_dest
 
# Make relative symlinks.
# Remove last slash and all that follows it. Not all systems have dirname.
ac_dest_dir=`echo $ac_dest|sed 's%/[^/][^/]*$%%'`
if test "$ac_dest_dir" != "$ac_dest" && test "$ac_dest_dir" != .; then
# The dest file is in a subdirectory.
test ! -d "$ac_dest_dir" && mkdir "$ac_dest_dir"
ac_dest_dir_suffix="/`echo $ac_dest_dir|sed 's%^\./%%'`"
# A "../" for each directory in $ac_dest_dir_suffix.
ac_dots=`echo $ac_dest_dir_suffix|sed 's%/[^/]*%../%g'`
else
ac_dest_dir_suffix= ac_dots=
fi
 
case "$srcdir" in
[/$]*) ac_rel_source="$srcdir/$ac_source" ;;
*) ac_rel_source="$ac_dots$srcdir/$ac_source" ;;
esac
 
# Make a symlink if possible; otherwise try a hard link.
if ln -s $ac_rel_source $ac_dest 2>/dev/null ||
ln $srcdir/$ac_source $ac_dest; then :
else
{ echo "configure: error: can not link $ac_dest to $srcdir/$ac_source" 1>&2; exit 1; }
fi
done
EOF
cat >> $CONFIG_STATUS <<EOF
 
EOF
cat >> $CONFIG_STATUS <<\EOF
case "x$CONFIG_FILES" in
xMakefile*)
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' <Make-common.sim >Makesim1.tmp
sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >Makesim2.tmp
sed -e '/^## COMMON_PRE_/ r Makesim1.tmp' \
-e '/^## COMMON_POST_/ r Makesim2.tmp' \
<Makefile.sim >Makefile
rm -f Makefile.sim Make-common.sim Makesim1.tmp Makesim2.tmp
;;
esac
case "x$CONFIG_HEADERS" in xconfig.h:config.in) echo > stamp-h ;; esac
 
exit 0
EOF
chmod +x $CONFIG_STATUS
rm -fr confdefs* $ac_clean_files
test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
 
 
configure Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: Makefile.in =================================================================== --- Makefile.in (nonexistent) +++ Makefile.in (revision 1765) @@ -0,0 +1,63 @@ +# Makefile template for Configure for the z8k sim library. +# Copyright (C) 1993, 95, 96, 1997 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 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +## COMMON_PRE_CONFIG_FRAG + +SIM_OBJS = iface.o mem.o support.o quick.o \ + comped1.o comped2.o comped3.o compedb3.o sim-load.o +# FIXME: hack to find syscall.h. Better support for syscall.h is +# in progress. +SIM_EXTRA_CFLAGS = -I$(srcdir)/../../newlib/libc/sys/z8k +SIM_EXTRA_CLEAN = clean-extra + +CONFIG_H = config.h + +## COMMON_POST_CONFIG_FRAG + +support.o:support.c inlines.h $(CONFIG_H) +mem.o: mem.c tm.h mem.h sim.h $(CONFIG_H) + +comped1.o:comped1.c tc-gen1.h $(CONFIG_H) +comped3.o:comped3.c tc-gen3.h $(CONFIG_H) +compedb3.o:compedb3.c tc-genb3.h $(CONFIG_H) +comped2.o:comped2.c tc-gen2.h $(CONFIG_H) + +tc-gen1.h:writecode + ./writecode -1 >tc-gen1.h + +tc-gen2.h:writecode + ./writecode -2 >tc-gen2.h + +tc-gen3.h:writecode + ./writecode -3 >tc-gen3.h + +tc-genb3.h:writecode + ./writecode -b3 >tc-genb3.h + +writecode: writecode.o bquick.o + $(CC_FOR_BUILD) -o writecode writecode.o bquick.o + +writecode.o: writecode.c $(CONFIG_H) + $(CC_FOR_BUILD) -c $(CFLAGS) $(HDEFINES) $(CSEARCH) $(CSWITCHES) $(srcdir)/writecode.c + +# Two copies of quick.o are created. One for $build and one for $host. +bquick.o: quick.c + $(CC_FOR_BUILD) -c $(CFLAGS) $(HDEFINES) $(CSEARCH) $(CSWITCHES) $(srcdir)/quick.c -o bquick.o + +clean-extra: + rm -f tc-gen1.h tc-gen2.h tc-gen3.h tc-genb3.h writecode Index: configure.in =================================================================== --- configure.in (nonexistent) +++ configure.in (revision 1765) @@ -0,0 +1,10 @@ +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 + +AC_CHECK_HEADERS(string.h strings.h stdlib.h time.h sys/times.h) + +SIM_AC_OUTPUT Index: inlines.h =================================================================== --- inlines.h (nonexistent) +++ inlines.h (revision 1765) @@ -0,0 +1,486 @@ +/* inline functions for Z8KSIM + Copyright (C) 1992, 1993 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef INLINE +#define INLINE +#endif +#define UGT 0x0b +#define ULE 0x03 +#define ULT 0x07 +#define UGE 0x0f +#define SLOW 0 +#define T 0x8 +#define F 0x0 +#define LT 0x1 +#define GT 0xa +#define LE 0x2 +#define EQ 0x6 +#define NE 0xe +#define GE 0x9 + + static int is_cond_true PARAMS((sim_state_type *context, int c)); + static void makeflags PARAMS((sim_state_type *context, int mask)); + +static INLINE +long +sitoptr (si) +long si; +{ + return ((si & 0xff000000) >> 8) | (si & 0xffff); +} +static INLINE long +ptrtosi (ptr) +long ptr; +{ + return ((ptr & 0xff0000) << 8) | (ptr & 0xffff); +} + +static INLINE +void +put_long_reg (context, reg, val) + sim_state_type *context; + int reg; + int val; +{ + context->regs[reg].word = val >> 16; + context->regs[reg + 1].word = val; +} + +static INLINE +void +put_quad_reg (context, reg, val1, val2) + sim_state_type *context; + int reg; + int val1; + int val2; +{ + context->regs[reg].word = val2 >> 16; + context->regs[reg + 1].word = val2; + context->regs[reg + 2].word = val1 >> 16; + context->regs[reg + 3].word = val1; +} + +static INLINE +void +put_word_reg (context, reg, val) + sim_state_type *context; + int reg; + int val; +{ + context->regs[reg].word = val; +} + +static INLINE +SItype get_long_reg (context, reg) + sim_state_type *context; + int reg; +{ + USItype lsw = context->regs[reg + 1].word; + USItype msw = context->regs[reg].word; + + return (msw << 16) | lsw; +} + +#ifdef __GNUC__ +static INLINE +struct UDIstruct +get_quad_reg (context, reg) + sim_state_type *context; + int reg; +{ + UDItype res; + USItype lsw = get_long_reg (context, reg + 2); + USItype msw = get_long_reg (context, reg); + + res.low = lsw; + res.high = msw; + return res; +} + +#endif + +static INLINE void +put_byte_mem_da (context, addr, value) + sim_state_type *context; + int addr; + int value; +{ + ((unsigned char *) (context->memory))[addr] = value; +} + +static INLINE +void +put_byte_reg (context, reg, val) + sim_state_type *context; + int reg; + int val; +{ + int old = context->regs[reg & 0x7].word; + if (reg & 0x8) + { + old = old & 0xff00 | (val & 0xff); + } + else + { + old = old & 0x00ff | (val << 8); + } + context->regs[reg & 0x7].word = old; +} + +static INLINE +int +get_byte_reg (context, reg) + sim_state_type *context; + int reg; +{ + if (reg & 0x8) + return context->regs[reg & 0x7].word & 0xff; + else + return (context->regs[reg & 0x7].word >> 8) & 0xff; +} + +static INLINE +void +put_word_mem_da (context, addr, value) + sim_state_type *context; + int addr; + int value; +{ + if (addr & 1) + { + context->exception = SIM_BAD_ALIGN; + addr &= ~1; + } + put_byte_mem_da(context, addr, value>>8); + put_byte_mem_da(context, addr+1, value); +} + +static INLINE unsigned char +get_byte_mem_da (context, addr) + sim_state_type *context; + int addr; +{ + return ((unsigned char *) (context->memory))[addr]; +} + + +#if 0 +#define get_word_mem_da(context,addr)\ + *((unsigned short*)((char*)((context)->memory)+(addr))) + +#else +#define get_word_mem_da(context,addr) (get_byte_mem_da(context, addr) << 8) | (get_byte_mem_da(context,addr+1)) +#endif + +#define get_word_reg(context,reg) (context)->regs[reg].word + +static INLINE +SItype +get_long_mem_da (context, addr) + sim_state_type *context; + int addr; +{ + USItype lsw = get_word_mem_da(context,addr+2); + USItype msw = get_word_mem_da(context, addr); + + return (msw << 16) + lsw; +} + +static INLINE +void +put_long_mem_da (context, addr, value) + sim_state_type *context; + int addr; + int value; +{ + put_word_mem_da(context,addr, value>>16); + put_word_mem_da(context,addr+2, value); +} + +static INLINE +int +get_word_mem_ir (context, reg) + sim_state_type *context; + int reg; +{ + return get_word_mem_da (context, get_word_reg (context, reg)); +} + +static INLINE +void +put_word_mem_ir (context, reg, value) + sim_state_type *context; + int reg; + int value; +{ + + put_word_mem_da (context, get_word_reg (context, reg), value); +} + +static INLINE +int +get_byte_mem_ir (context, reg) + sim_state_type *context; + int reg; +{ + return get_byte_mem_da (context, get_word_reg (context, reg)); +} + +static INLINE +void +put_byte_mem_ir (context, reg, value) + sim_state_type *context; + int reg; + int value; +{ + put_byte_mem_da (context, get_word_reg (context, reg), value); +} + +static INLINE +int +get_long_mem_ir (context, reg) + sim_state_type *context; + int reg; +{ + return get_long_mem_da (context, get_word_reg (context, reg)); +} + +static INLINE +void +put_long_mem_ir (context, reg, value) + sim_state_type *context; + int reg; + int value; +{ + + put_long_mem_da (context, get_word_reg (context, reg), value); +} + +static INLINE +void +put_long_mem_x (context, base, reg, value) + sim_state_type *context; + int base; + int reg; + int value; +{ + put_long_mem_da (context, get_word_reg (context, reg) + base, value); +} + +static INLINE +void +put_word_mem_x (context, base, reg, value) + sim_state_type *context; + int base; + int reg; + int value; +{ + put_word_mem_da (context, get_word_reg (context, reg) + base, value); +} + +static INLINE +void +put_byte_mem_x (context, base, reg, value) + sim_state_type *context; + int base; + int reg; + int value; +{ + put_byte_mem_da (context, get_word_reg (context, reg) + base, value); +} + +static INLINE +int +get_word_mem_x (context, base, reg) + sim_state_type *context; + int base; + int reg; +{ + return get_word_mem_da (context, base + get_word_reg (context, reg)); +} + +static INLINE +int +get_byte_mem_x (context, base, reg) + sim_state_type *context; + int base; + int reg; +{ + return get_byte_mem_da (context, base + get_word_reg (context, reg)); +} + +static INLINE +int +get_long_mem_x (context, base, reg) + sim_state_type *context; + int base; + int reg; +{ + return get_long_mem_da (context, base + get_word_reg (context, reg)); +} + + +static +void +makeflags (context, mask) + sim_state_type *context; + int mask; +{ + + PSW_ZERO = (context->dst & mask) == 0; + PSW_SIGN = (context->dst >> (context->size - 1)); + + if (context->broken_flags == TST_FLAGS) + { + extern char the_parity[]; + + if (context->size == 8) + { + PSW_OVERFLOW = the_parity[context->dst & 0xff]; + } + } + else + { + /* Overflow is set if both operands have the same sign and the + result is of different sign. + + V = A==B && R!=B jumping logic + (~(A^B))&(R^B) + V = (A^B)^(R^B) boolean + */ + + PSW_OVERFLOW = + (( + (~(context->srca ^ context->srcb) + & (context->srca ^ context->dst)) + ) >> (context->size - 1) + ); + + if (context->size < 32) + { + PSW_CARRY = ((context->dst >> context->size)) & 1; + } + else + { + /* carry is set when the result is smaller than a source */ + + + PSW_CARRY = (unsigned) context->dst > (unsigned) context->srca ; + + } + } + context->broken_flags = 0; +} + + +/* There are two ways to calculate the flags. We can + either always calculate them and so the cc will always + be correct, or we can only keep the arguments around and + calc the flags when they're actually going to be used. */ + +/* Right now we always calc the flags - I think it may be faster*/ + + +#define NORMAL_FLAGS(c,s,d,sa,sb,sub) \ + if (s == 8) \ + normal_flags_8(c,d,sa,sb,sub); \ + else if (s == 16) \ + normal_flags_16(c,d,sa,sb,sub); \ + else if (s == 32) \ + normal_flags_32(c,d,sa,sb,sub); + +static INLINE +void +normal_flags (context, size, dst, srca, srcb) + sim_state_type *context; + int size; + int dst; + int srca; + int srcb; +{ + context->srca = srca; + context->srcb = srcb; + context->dst = dst; + context->size = size; + context->broken_flags = CMP_FLAGS; +} + +static INLINE +void +TEST_NORMAL_FLAGS (context, size, dst) + sim_state_type *context; + int size; + int dst; +{ + context->dst = dst; + context->size = size; + context->broken_flags = TST_FLAGS; +} + +static INLINE +void +put_ptr_long_reg (context, reg, val) + sim_state_type *context; + int reg; + int val; +{ + context->regs[reg].word = (val >> 8) & 0x7f00; + context->regs[reg + 1].word = val; +} + +static INLINE +long +get_ptr_long_reg (context, reg) + sim_state_type *context; + int reg; +{ + int val; + + val = (context->regs[reg].word << 8) | context->regs[reg + 1].word; + return val; +} + +static INLINE +long +get_ptr_long_mem_ir (context, reg) +sim_state_type *context; +int reg; +{ + return sitoptr (get_long_mem_da (context, get_ptr_long_reg (context, reg))); +} + +static INLINE +long +get_ptr_long_mem_da (context, addr) +sim_state_type *context; +long addr; +{ + return sitoptr (get_long_mem_da (context, addr)); +} + +static INLINE +void +put_ptr_long_mem_da (context, addr, ptr) +sim_state_type *context; +long addr; +long ptr; +{ + put_long_mem_da (context, addr, ptrtosi (ptr)); + +} Index: ChangeLog =================================================================== --- ChangeLog (nonexistent) +++ ChangeLog (revision 1765) @@ -0,0 +1,510 @@ +2002-06-16 Andrew Cagney + + * configure: Regenerated to track ../common/aclocal.m4 changes. + +2002-06-09 Andrew Cagney + + * iface.c: Include "gdb/callback.h" and "gdb/remote-sim.h". + * support.c: Ditto. + +2002-06-06 Andrew Cagney + + * writecode.c (lookup_inst): Generate inverse table on-the-fly. + (z8k_inv_list): Delete global. + (DIRTY_HACK): Delete macro. + (makelist): Delete global. + (main): Delete code making a list. Delete dirty hack code. Use + lookup_inst instead of z8k_inv_list. + * list.c: Delete file. + * Makefile.in (writecode): Do not link in list.o. + (list.o): Delete target. + +2002-04-29 Nick Clifton + + * writecode.c (lookup_inst): Ignore CLASS_IGNORE. + (info_args): Treat CLASS_IGNORE like CLASS_BIT. + Handle ARG_NIM4. + (info_len_in_words): Handle CLASS_IGNORE and ARG_NIM4. + +Tue May 23 21:39:23 2000 Andrew Cagney + + * configure: Regenerated to track ../common/aclocal.m4 changes. + +Thu Sep 2 18:15:53 1999 Andrew Cagney + + * configure: Regenerated to track ../common/aclocal.m4 changes. + +1999-05-08 Felix Lee + + * configure: Regenerated to track ../common/aclocal.m4 changes. + +Wed Nov 25 18:22:10 1998 Andrew Cagney + + * support.c: Include + +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:18:45 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:17:28 1998 Tom Tromey + + * configure.in: Don't use 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:54:05 1998 Andrew Cagney + + * iface.c (sim_store_register, sim_fetch_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 + + * iface.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. + +Wed Sep 17 13:23:45 1997 Andrew Cagney + + * Makefile.in (CONFIG_H): Use config.h from local directory. + +Mon Sep 15 17:36:15 1997 Andrew Cagney + + * configure: Regenerated to track ../common/aclocal.m4 changes. + +Thu Sep 4 17:21:23 1997 Doug Evans + + * configure: Regenerated to track ../common/aclocal.m4 changes. + +Wed Aug 27 18:13:22 1997 Andrew Cagney + + * configure: Regenerated to track ../common/aclocal.m4 changes. + * config.in: Ditto. + +Tue Aug 26 10:43:33 1997 Andrew Cagney + + * iface.c (sim_kill): Delete. + (sim_create_inferior): Add ABFD argument. + (sim_load): Move setting of PC from here. + (sim_create_inferior): To here. + (sim_open, sim_load): Add FIXME about need to move arch test to + sim_open. + +Mon Aug 25 17:50:22 1997 Andrew Cagney + + * configure: Regenerated to track ../common/aclocal.m4 changes. + * config.in: Ditto. + +Mon Aug 25 16:36:10 1997 Andrew Cagney + + * iface.c (sim_open): Add ABFD argument. Change ARGV to PARGV. + +Tue May 20 10:28:07 1997 Andrew Cagney + + * iface.c (sim_set_callbacs): Delete SIM_DESC argument. + (sim_open): Add callback argument. + +Wed Apr 30 10:28:34 1997 Doug Evans + + * iface.c (sim_load): Set sim_z8001_mode if bfd_mach_z8001. + * tconfig.in (SIM_PRE_LOAD): Delete, no longer used. + +Thu Apr 24 00:39:51 1997 Doug Evans + + * configure: Regenerated to track ../common/aclocal.m4 changes. + +Fri Apr 18 14:18:06 1997 Andrew Cagney + + * mem.h (Z8k_PAGE_SIZE): Rename from PAGE_SIZE. Is it used? + + * iface.c (sim_stop): New function. + (NULL): Define if not already. + +Thu Apr 17 03:54:23 1997 Doug Evans + + * Makefile.in (SIM_OBJS): Add sim-load.o. + * iface.c: #include bfd.h. + (z8k_callback): New global. + (sim_kind, myname): New static locals. + (sim_open): Set sim_kind, myname. + (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. + (sim_set_callbacks): Set z8k_callback. + +Thu Apr 17 11:36:04 1997 Andrew Cagney + + * tm.h (sim_trace) : Remove prototype - now in remote-sim.h + * support.c (sim_trace): Update. + +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 + + * iface.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 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:02:08 1997 Doug Evans + + * iface.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:28:21 1996 Doug Evans + + * Makefile.in: Delete stuff moved to ../common/Make-common.in. + (SIM_OBJS,SIM_EXTRA_CFLAGS,SIM_EXTRA_CLEAN): Define. + * configure.in: Simplify using macros in ../common/aclocal.m4. + * configure: Regenerated. + * iface.c (sim_size): New function. + (sim_stop_reason): Properly set sim_exited return code. + * support.c: #include "callback.h". + * run.c: Deleted, using one in ../common now. + * tconfig.in: New file. + +Thu Oct 3 16:19:07 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) + + * Makefile.in (mostlyclean): Don't remove config.log here. + +Wed Jun 26 12:32:29 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. + +Wed Feb 21 12:17:27 1996 Ian Lance Taylor + + * configure: Regenerate with autoconf 2.7. + +Thu Jan 11 16:59:07 1996 Jim Wilson + + * writecode.c (info_args, case CLASS_DISP8): Sign extend using + shifts instead of char cast. + (shift): Likewise. + +Fri Jan 5 15:36:26 1996 Jim Wilson + + * mem.c (get_page_and_offset): Allocate 16MB not 8MB. + +Fri Oct 13 15:02:45 1995 steve chamberlain + + * iface.c (sim_set_callbacks): New. + +Tue Oct 10 11:13:55 1995 Fred Fish + + * Makefile.in (BISON): Remove macro. + +Wed Sep 20 13:35:35 1995 Ian Lance Taylor + + * Makefile.in (maintainer-clean): New synonym for realclean. + +Fri Sep 8 13:16:10 1995 Ian Lance Taylor + + * Makefile.in (install): Don't install in $(tooldir). + + * configure.in: Call AC_CONFIG_HEADER. Don't try to use + bfd/hosts/*.h file or bfd/config/*.mh file. Call AC_PROG_CC and + AC_PROG_RANLIB. Substitute in values for CFLAGS, HDEFINES, AR, + and CC_FOR_BUILD. Call AC_CHECK_HEADERS for various header files. + Touch stamp.h if creating config.h. + * configure: Rebuild. + * config.in: New file, created by autoheader. + * Makefile.in (AR): Define as @AR@. + (CC): New variable, defined as @CC@. + (CFLAGS): Define as @CFLAGS@. + (CC_FOR_BUILD): New variable, defined as @CC_FOR_BUILD@. + (RANLIB): Define as @RANLIB@. + (HDEFINES, TDEFINES): New variables. + (@host_makefile_frag@): Remove. + (support.o, comped1.o, comped3.o): Depend upon config.h. + (compedb3.o, comped2.o): Likewise. + (mem.o): New target. + (tc-gen2.h): Depend upon writecode, not quick.c. + (writecode): Build using $(CC_FOR_BUILD). + (writecode.o, list.o, quick.o): New targets. + (mostlyclean): Make the same as clean, not distclean. + (clean): Remove config.log. + (distclean): Remove config.h and stamp-h. + (Makefile): Don't depend upon @frags@. Just rebuild Makefile when + invoking config.status. + (config.h, stamp-h): New targets. + * comped1.c: Don't include "sysdep.h". + (INLINE): Define as inline, not static inline. + * comped3.c, compedb3.c, run.c: Don't include "sysdep.h". + * mem.c: Include "config.h". Don't include "sysdep.h". Include + if it exists. + * support.c: Include "config.h". Don't include "sysdep.h". + Include . Include and if they + exists. Include and . + (get_now): Only use times if exists; otherwise use + time. + * writecode.c: Include "config.h". Include . Include + and if they exist. Include if + it exists and does not. + +Thu Aug 3 10:45:37 1995 Fred Fish + + * Update all FSF addresses except those in COPYING* files. + +Mon Jul 31 10:18:06 1995 steve chamberlain + + * support.c (normal_flags_16): Calculate carry correctly. + (support_call): Return values in std regs too. + +Fri Jul 28 12:10:06 1995 steve chamberlain + + * inlines.h (put_byte_mem_da): Moved. + * run.c (main): Return program result. + * support.c (support_call): Return exit argument. + * writecode.c (rotate): Fix a load of bugs. + (info_decode): Insert missing break after OPC_rrc. + +Wed Jul 5 16:13:43 1995 J.T. Conklin + + * Makefile.in, configure.in: converted to autoconf. + * configure: New file, generated with autconf 2.4. + + * z8k.mt: Removed. + +Fri Jun 30 16:53:09 1995 Stan Shebs + + * iface.c (sim_do_command): New function. + +Wed May 24 16:31:38 1995 Jim Wilson + + * configure.in: Fix typo in last change. + +Mon Mar 27 10:32:34 1995 J.T. Conklin + + * run.c: parse arguments with getopt(). + +Tue Feb 28 17:31:00 1995 Ian Lance Taylor + + * configure.in: Use ../../bfd/hosts/std-host.h if specific + host unavailable. + +Sun Feb 12 16:03:29 1995 Steve Chamberlain + + * iface.c (sim_stop_reason): (Make a bad syscall give a SIGILL. + * writecode.c (adiv): Divides are always signed. + +Wed Dec 28 21:30:09 1994 Steve Chamberlain (sac@jonny.cygnus.com) + + * inlines.h: Make INLINES static. + * mem.c (sitoptr): New instance. + * support.c (normal_flags_[32|16|8]): New functions. + (optimize_normal_flags): Use new functions. + * writecode.c (info_special): Handle sbc. (optimize_normal_flags): + Always recalc flags. + +Wed May 18 14:38:49 1994 Doug Evans (dje@canuck.cygnus.com) + + * support.c (sim_open): Delete from here. + (sim_set_args): Delete from here. + (sim_kill): Delete from here. + * iface.c (sim_*): Make result void where there isn't one. + (sim_clear_breakpoints): Delete. + (sim_set_pc): Delete. + (sim_info): Delete printf_fn arg, all callers changed. + (sim_open): Define here. + (sim_close): New function. + (sim_load): New function. + (sim_create_inferior): Renamed from sim_set_args. + (sim_kill): Define here. + * run.c (printf): Delete declaration. + (main): Call sim_create_inferior instead of sim_set_pc. + * sim.h (sim_clear_breakpoints): Delete. + +Wed May 18 13:22:02 1994 Steve Chamberlain (sac@jonny.cygnus.com) + + * writecode.c (main): Disable the chopping of large initializers. + GCC can now cope. + +Sat May 7 17:24:46 1994 Steve Chamberlain (sac@cygnus.com) + + * writecode.c (info_args): Add resflg and setflg. + * list.c : Regenerated. + * Makefile.in: First rule is now called 'all' + +Sat Dec 11 16:39:30 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * iface.c (sim_store_register): Get regval the right way up. + * writecode.c (info_args): Add lda. + +Tue Oct 26 13:01:46 1993 Doug Evans (dje@canuck.cygnus.com) + + * Makefile.in (INCDIR): Fix definition. + (CSEARCH): Add -I$(srcdir)/../../gdb + (comped1.o, comped3.o, compedb3.o, comped2.o): Use CSEARCH, not INCDIR. + * iface.c: Replace #include "../include/wait.h" with "remote-sim.h". + (sim_set_pc): int result, use SIM_ADDR for type of arg `addr'. + (sim_store_register): int result, pass value by reference. + (sim_fetch_register): Use unsigned char * for arg `buf'. + (sim_write): int result, use SIM_ADDR for `where' arg, + use unsigned char * for `what' arg. + (sim_read): Ditto. + (sim_resume): int result. + (sim_stop_reason): Renamed from sim_stop_signal, int result, + new arg `reason'. + (sim_info): int result, merge sim_info_print into here. + (sim_info_print): Deleted. + * run.c: #include + (main): Update call to sim_info. + * sim.h: Remove various prototypes defined in remote-sim.h. + +Sat Oct 23 15:16:45 1993 Doug Evans (dje@canuck.cygnus.com) + + * iface.c (sim_stop_signal): Result is now enum sim_stop. + +Thu Oct 7 19:01:07 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) + + * writecode.c (doset, info_docode): Understand set and res insns. + +Thu Sep 30 11:30:42 1993 Steve Chamberlain (sac@phydeaux.cygnus.com) + + * support.c (tm_info_print): If no timetaken, don't divide by zero. + +Fri Jul 30 15:51:54 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) + + * writecode.c (div): rename to divide, to resolve conflict with + ANSI function div from + +Mon Mar 15 15:48:50 1993 Ian Lance Taylor (ian@cygnus.com) + + * z8k.mt (DO_INSTALL): Renamed from INSTALL. + +Tue Mar 9 12:32:29 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * writecode.c (main): Make the vector 'big' static, so that it + will compile on the apollo. + * support.c: Use the ANSI compilant __inline__. + +Fri Mar 5 07:54:18 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * writecode.c (main): When using gcc, split the tables into + sections so that it will compile. + * Makefile.in: Get ar args right. + * tm.h: Fix gcc prototypes. + +Wed Mar 3 15:04:48 1993 Steve Chamberlain (sac@poseidon.cygnus.com) + + * support.c (fail): Get the argument count right. + * tm.h: Lint. + * writecode.c (main): Pass all the arguments emit needs. + +Tue Feb 2 07:49:42 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * lint, prototypes + +Fri Jan 15 12:43:08 1993 Steve Chamberlain (sac@thepub.cygnus.com) + + * New + + Index: iface.c =================================================================== --- iface.c (nonexistent) +++ iface.c (revision 1765) @@ -0,0 +1,263 @@ +/* gdb->simulator interface. + Copyright (C) 1992, 1993, 1994, 1997 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +Z8KSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Z8KSIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "ansidecl.h" +#include "sim.h" +#include "tm.h" +#include "signal.h" +#include "bfd.h" +#include "gdb/callback.h" +#include "gdb/remote-sim.h" + +#ifndef NULL +#define NULL 0 +#endif + +host_callback *z8k_callback; + +static SIM_OPEN_KIND sim_kind; +static char *myname; + +void +sim_size (n) + int n; +{ + /* Size is fixed. */ +} + +int +sim_store_register (sd, regno, value, length) + SIM_DESC sd; + int regno; + unsigned char *value; + int length; +{ + /* FIXME: Review the computation of regval. */ + int regval = (value[0] << 24) | (value[1] << 16) | (value[2] << 8) | value[3]; + + tm_store_register (regno, regval); + return -1; +} + +int +sim_fetch_register (sd, regno, buf, length) + SIM_DESC sd; + int regno; + unsigned char *buf; + int length; +{ + tm_fetch_register (regno, buf); + return -1; +} + +int +sim_write (sd, where, what, howmuch) + SIM_DESC sd; + SIM_ADDR where; + unsigned char *what; + int howmuch; +{ + int i; + + for (i = 0; i < howmuch; i++) + tm_write_byte (where + i, what[i]); + return howmuch; +} + +int +sim_read (sd, where, what, howmuch) + SIM_DESC sd; + SIM_ADDR where; + unsigned char *what; + int howmuch; +{ + int i; + + for (i = 0; i < howmuch; i++) + what[i] = tm_read_byte (where + i); + return howmuch; +} + +static void +control_c (sig, code, scp, addr) + int sig; + int code; + char *scp; + char *addr; +{ + tm_exception (SIM_INTERRUPT); +} + +int +sim_stop (sd) + SIM_DESC sd; +{ + tm_exception (SIM_INTERRUPT); + return 1; +} + +void +sim_resume (sd, step, sig) + SIM_DESC sd; + int step; + int sig; +{ + void (*prev) (); + + prev = signal (SIGINT, control_c); + tm_resume (step); + signal (SIGINT, prev); +} + +void +sim_stop_reason (sd, reason, sigrc) + SIM_DESC sd; + enum sim_stop *reason; + int *sigrc; +{ + switch (tm_signal ()) + { + case SIM_DIV_ZERO: + *sigrc = SIGFPE; + break; + case SIM_INTERRUPT: + *sigrc = SIGINT; + break; + case SIM_BAD_INST: + *sigrc = SIGILL; + break; + case SIM_BREAKPOINT: + *sigrc = SIGTRAP; + break; + case SIM_SINGLE_STEP: + *sigrc = SIGTRAP; + break; + case SIM_BAD_SYSCALL: + *sigrc = SIGILL; + break; + case SIM_BAD_ALIGN: + *sigrc = SIGSEGV; + break; + case SIM_DONE: + { + sim_state_type x; + tm_state (&x); + *sigrc = x.regs[2].word & 255; + *reason = sim_exited; + return; + } + default: + abort (); + } + *reason = sim_stopped; +} + +void +sim_info (sd, verbose) + SIM_DESC sd; + int verbose; +{ + sim_state_type x; + + tm_state (&x); + tm_info_print (&x); +} + +SIM_DESC +sim_open (kind, cb, abfd, argv) + SIM_OPEN_KIND kind; + host_callback *cb; + struct _bfd *abfd; + char **argv; +{ + /* FIXME: The code in sim_load that determines the exact z8k arch + should be moved to here */ + + sim_kind = kind; + myname = argv[0]; + z8k_callback = cb; + + /* fudge our descriptor for now */ + return (SIM_DESC) 1; +} + +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; + + /* FIXME: The code determining the type of z9k processor should be + moved from here to sim_open. */ + + prog_bfd = sim_load_file (sd, myname, z8k_callback, prog, abfd, + sim_kind == SIM_OPEN_DEBUG, + 0, sim_write); + if (prog_bfd == NULL) + return SIM_RC_FAIL; + if (bfd_get_mach (prog_bfd) == bfd_mach_z8001) + { + extern int sim_z8001_mode; + sim_z8001_mode = 1; + } + /* Close the bfd if we opened it. */ + if (abfd == NULL) + bfd_close (prog_bfd); + return SIM_RC_OK; +} + +SIM_RC +sim_create_inferior (sd, abfd, argv, env) + SIM_DESC sd; + struct _bfd *abfd; + char **argv; + char **env; +{ + if (abfd != NULL) + tm_store_register (REG_PC, bfd_get_start_address (abfd)); + else + tm_store_register (REG_PC, 0); + return SIM_RC_OK; +} + +void +sim_do_command (sd, cmd) + SIM_DESC sd; + char *cmd; +{ +} + +void +sim_set_callbacks (ptr) + host_callback *ptr; +{ + z8k_callback = ptr; +} Index: quick.c =================================================================== --- quick.c (nonexistent) +++ quick.c (revision 1765) @@ -0,0 +1,783 @@ +/* list of opcodes to compile all the way */ +int quick[]= +{ +#if 0 + /* 110000*/ 0xc, + /* 35*/ 0x104, + /* 4*/ 0x105, + /* 3*/ 0x107, + /* 20*/ 0x10d, + /* 2*/ 0x1dc, + /* 69*/ 0x20f, + /* 1*/ 0x40d, + /* 40*/ 0x501, + /* 7*/ 0x504, + /* 7*/ 0x505, + /* 6*/ 0x508, + /* 6*/ 0x509, + /* 8*/ 0x609, + /* 118*/ 0x60c, + /* 2*/ 0x702, + /* 85*/ 0x704, + /* 88*/ 0x705, + /* 3*/ 0x707, + /* 5*/ 0x708, + /* 4*/ 0x709, + /* 110000*/ 0xa08, + /* 101571*/ 0xa09, + /* 110000*/ 0xa0c, + /* 100000*/ 0xa0f, + /* 300000*/ 0xa6d, + /* 101681*/ 0xb02, + /* 100077*/ 0xb04, + /* 8*/ 0xb05, + /* 110000*/ 0xb07, + /* 10005*/ 0xb08, + /* 140000*/ 0xb0a, + /* 100036*/ 0xb0c, + /* 100042*/ 0xb0d, + /* 3*/ 0xc25, + /* 105158*/ 0xc58, + /* 300236*/ 0xc74, + /* 20*/ 0xd41, + /* 100008*/ 0xd45, + /* 10*/ 0xd51, + /* 10*/ 0xd54, + /* 110000*/ 0xdc5, + /* 100000*/ 0xdd5, + /* 79*/ 0xdf9, + /* 6*/ 0x1004, + /* 53*/ 0x1008, + /* 5*/ 0x13f4, + /* 1*/ 0x1402, + /* 2*/ 0x1404, + /* 2*/ 0x1406, + /* 7*/ 0x1408, + /* 4*/ 0x1606, + /* 72*/ 0x1e48, + /* 6*/ 0x1f40, + /* 100006*/ 0x205e, + /* 2*/ 0x2068, + /* 110000*/ 0x206c, + /* 110000*/ 0x207c, + /* 300000*/ 0x207d, + /* 101642*/ 0x2088, + /* 101539*/ 0x2089, + /* 101679*/ 0x208c, + /* 40*/ 0x209c, + /* 8*/ 0x2102, + /* 120009*/ 0x2104, + /* 110003*/ 0x2105, + /* 130000*/ 0x2106, + /* 110068*/ 0x2107, + /* 32*/ 0x2108, + /* 1*/ 0x2109, + /* 105*/ 0x210c, + /* 1*/ 0x210d, + /* 3*/ 0x2126, + /* 3*/ 0x2142, + /* 120002*/ 0x2144, + /* 100012*/ 0x2145, + /* 10000*/ 0x2147, + /* 100000*/ 0x2148, + /* 6*/ 0x2156, + /* 100000*/ 0x2157, + /* 100000*/ 0x2158, + /* 101677*/ 0x2165, + /* 100000*/ 0x2168, + /* 110000*/ 0x2174, + /* 2*/ 0x2190, + /* 2*/ 0x2198, + /* 2*/ 0x21c4, + /* 2*/ 0x21c5, + /* 110000*/ 0x21c8, + /* 110000*/ 0x21ca, + /* 2*/ 0x21cd, + /* 100002*/ 0x21d7, + /* 100000*/ 0x21dc, + /* 101677*/ 0x2960, + /* 2*/ 0x29c0, + /* 4*/ 0x2e48, + /* 101677*/ 0x2e5c, + /* 100000*/ 0x2e7c, + /* 31*/ 0x2f24, + /* 1*/ 0x2f28, + /* 100000*/ 0x2f45, + /* 3*/ 0x2f46, + /* 100000*/ 0x2f47, + /* 100000*/ 0x2f48, + /* 100000*/ 0x2f54, + /* 130000*/ 0x2f56, + /* 100000*/ 0x2f58, + /* 10000*/ 0x2f64, + /* 100000*/ 0x2f65, + /* 100000*/ 0x2f72, + /* 110000*/ 0x2f74, + /* 10000*/ 0x2f78, + /* 110000*/ 0x2fa4, + /* 110000*/ 0x2fa8, + /* 1*/ 0x2fc2, + /* 100000*/ 0x2fc4, + /* 100000*/ 0x2fc7, + /* 2*/ 0x2fc8, + /* 110000*/ 0x2fca, + /* 100002*/ 0x2fdc, + /* 77*/ 0x3144, + /* 3*/ 0x3146, + /* 2*/ 0x3342, + /* 3*/ 0x3346, + /* 100000*/ 0x3445, + /* 2*/ 0x3454, + /* 100000*/ 0x3456, + /* 10000*/ 0x3458, + /* 6*/ 0x3459, + /* 100000*/ 0x3464, + /* 100000*/ 0x3468, + /* 10000*/ 0x3485, + /* 100000*/ 0x3486, + /* 1*/ 0x34a0, + /* 110026*/ 0x34a4, + /* 110069*/ 0x34a5, + /* 110014*/ 0x34a6, + /* 20038*/ 0x34a7, + /* 1*/ 0x34a9, + /* 1*/ 0x34ad, + /* 100000*/ 0x34c4, + /* 100000*/ 0x34c5, + /* 2*/ 0x34d4, + /* 100000*/ 0x34f5, + /* 100000*/ 0x34f7, + /* 4*/ 0x4102, + /* 4*/ 0x4104, + /* 1*/ 0x4169, + /* 110000*/ 0x41a4, + /* 100000*/ 0x41a5, + /* 100000*/ 0x41a6, + /* 100000*/ 0x41a8, + /* 100000*/ 0x41f4, + /* 100000*/ 0x4302, + /* 100000*/ 0x4305, + /* 110000*/ 0x4308, + /* 1*/ 0x4369, + /* 1*/ 0x43a4, + /* 100000*/ 0x43a5, + /* 100000*/ 0x43a8, + /* 100000*/ 0x43a9, + /* 120000*/ 0x43ac, + /* 2*/ 0x43c5, + /* 100000*/ 0x43f5, + /* 100000*/ 0x43fa, + /* 110000*/ 0x4504, + /* 4*/ 0x45a1, + /* 18*/ 0x45a4, + /* 100018*/ 0x45a5, + /* 1*/ 0x4968, + /* 130000*/ 0x4a08, + /* 100000*/ 0x4a0b, + /* 100000*/ 0x4aac, + /* 3*/ 0x4b68, + /* 100000*/ 0x4ba8, + /* 100000*/ 0x4ba9, + /* 4*/ 0x4bc5, + /* 110000*/ 0x4c01, + /* 120000*/ 0x4c05, + /* 32*/ 0x4c78, + /* 100000*/ 0x4ca1, + /* 100000*/ 0x4ca5, + /* 1*/ 0x4cc4, + /* 20*/ 0x4cd4, + /* 110007*/ 0x4d04, + /* 110004*/ 0x4d05, + /* 110000*/ 0x4d08, + /* 2*/ 0x4d25, + /* 1*/ 0x4d28, + /* 8*/ 0x4d41, + /* 100000*/ 0x4d44, + /* 100000*/ 0x4d45, + /* 101679*/ 0x4d64, + /* 100034*/ 0x4da1, + /* 110005*/ 0x4da4, + /* 140014*/ 0x4da5, + /* 100001*/ 0x4da8, + /* 100003*/ 0x4dc4, + /* 110000*/ 0x4dc5, + /* 2*/ 0x4dd4, + /* 100000*/ 0x4dd5, + /* 100000*/ 0x4df5, + /* 3*/ 0x4e2d, + /* 30000*/ 0x4ea8, + /* 52*/ 0x4ea9, + /* 100000*/ 0x4eab, + /* 100000*/ 0x4eac, + /* 32*/ 0x4ead, + /* 100000*/ 0x4eae, + /* 100000*/ 0x4eaf, + /* 2*/ 0x4ec8, + /* 2*/ 0x4ecd, + /* 3*/ 0x50a6, + /* 32*/ 0x50a8, + /* 1*/ 0x520c, + /* 18*/ 0x52a8, + /* 2*/ 0x53f0, + /* 6*/ 0x53f4, + /* 3*/ 0x53fa, + /* 1*/ 0x5406, + /* 8*/ 0x5448, + /* 4*/ 0x54a2, + /* 42*/ 0x54a4, + /* 10*/ 0x54a6, + /* 322*/ 0x54a8, + /* 3*/ 0x56a4, + /* 3*/ 0x56a6, + /* 110000*/ 0x59a4, + /* 100000*/ 0x59f4, + /* 4*/ 0x5d02, + /* 1*/ 0x5d0c, + /* 2*/ 0x5d48, + /* 33*/ 0x5da4, + /* 48*/ 0x5da6, + /* 213*/ 0x5da8, + /* 32*/ 0x5e01, + /* 110005*/ 0x5e02, + /* 100005*/ 0x5e03, + /* 101728*/ 0x5e06, + /* 31*/ 0x5e07, + /* 100266*/ 0x5e08, + /* 100006*/ 0x5e09, + /* 100033*/ 0x5e0a, + /* 100080*/ 0x5e0b, + /* 100030*/ 0x5e0e, + /* 1*/ 0x5e0f, + /* 262032*/ 0x5f00, + /* 110000*/ 0x6008, + /* 100000*/ 0x6009, + /* 2*/ 0x600c, + /* 110000*/ 0x604c, + /* 4*/ 0x604d, + /* 6*/ 0x606f, + /* 36*/ 0x6089, + /* 140064*/ 0x60a8, + /* 48*/ 0x60a9, + /* 100096*/ 0x60ac, + /* 100000*/ 0x60ad, + /* 2*/ 0x60c8, + /* 19*/ 0x60cc, + /* 2*/ 0x60cd, + /* 8*/ 0x60dc, + /* 120009*/ 0x6104, + /* 120032*/ 0x6105, + /* 110001*/ 0x6106, + /* 110000*/ 0x6107, + /* 2*/ 0x6108, + /* 1*/ 0x6109, + /* 1*/ 0x610d, + /* 1*/ 0x610f, + /* 4*/ 0x6145, + /* 100000*/ 0x6147, + /* 2*/ 0x614c, + /* 2*/ 0x614d, + /* 100000*/ 0x6157, + /* 100002*/ 0x6158, + /* 3*/ 0x6159, + /* 6*/ 0x6165, + /* 12*/ 0x6168, + /* 32*/ 0x6181, + /* 4*/ 0x6191, + /* 2*/ 0x6194, + /* 2*/ 0x6198, + /* 68*/ 0x61a0, + /* 101682*/ 0x61a1, + /* 110066*/ 0x61a2, + /* 100040*/ 0x61a3, + /* 120232*/ 0x61a4, + /* 110172*/ 0x61a5, + /* 101800*/ 0x61a6, + /* 110119*/ 0x61a7, + /* 143923*/ 0x61a8, + /* 110098*/ 0x61a9, + /* 44*/ 0x61ac, + /* 4*/ 0x61c0, + /* 2*/ 0x61c4, + /* 1*/ 0x61c5, + /* 110002*/ 0x61c7, + /* 3*/ 0x61c8, + /* 100000*/ 0x61d4, + /* 2*/ 0x61d8, + /* 2*/ 0x61dc, + /* 100000*/ 0x61f3, + /* 100000*/ 0x61f4, + /* 100000*/ 0x61f5, + /* 100000*/ 0x61f7, + /* 100000*/ 0x61fb, + /* 100000*/ 0x68a0, + /* 110000*/ 0x6940, + /* 110032*/ 0x69a0, + /* 100000*/ 0x69f0, + /* 2*/ 0x6b40, + /* 101679*/ 0x6b60, + /* 100044*/ 0x6ba0, + /* 2*/ 0x6bc0, + /* 6*/ 0x6f02, + /* 120000*/ 0x6f04, + /* 100002*/ 0x6f05, + /* 7*/ 0x6f45, + /* 110000*/ 0x6f47, + /* 100007*/ 0x6f48, + /* 15*/ 0x6f49, + /* 100000*/ 0x6f4b, + /* 100000*/ 0x6f54, + /* 100000*/ 0x6f58, + /* 10000*/ 0x6f64, + /* 10000*/ 0x6f68, + /* 2*/ 0x6f94, + /* 145*/ 0x6fa0, + /* 101714*/ 0x6fa1, + /* 94*/ 0x6fa2, + /* 120060*/ 0x6fa4, + /* 100109*/ 0x6fa5, + /* 100123*/ 0x6fa6, + /* 100157*/ 0x6fa7, + /* 111842*/ 0x6fa8, + /* 100091*/ 0x6fa9, + /* 4*/ 0x6fc0, + /* 1*/ 0x6fc2, + /* 1*/ 0x6fc5, + /* 1*/ 0x6fcd, + /* 2*/ 0x6fd8, + /* 100000*/ 0x6ff4, + /* 56*/ 0x705c, + /* 100000*/ 0x706d, + /* 100000*/ 0x7078, + /* 100000*/ 0x708d, + /* 100000*/ 0x708e, + /* 100000*/ 0x709e, + /* 110000*/ 0x70dd, + /* 110000*/ 0x7157, + /* 100000*/ 0x715b, + /* 56*/ 0x727c, + /* 120000*/ 0x7348, + /* 31*/ 0x7424, + /* 100000*/ 0x7446, + /* 100000*/ 0x7447, + /* 10000*/ 0x7449, + /* 120000*/ 0x7454, + /* 2*/ 0x7468, + /* 32*/ 0x7472, + /* 110000*/ 0x74a4, + /* 100000*/ 0x74b4, + /* 100000*/ 0x74b5, + /* 10*/ 0x74c2, + /* 100000*/ 0x74c4, + /* 32*/ 0x74d4, + /* 1*/ 0x7f01, + /* 2*/ 0x7f04, + /* 2*/ 0x7f13, + /* 1*/ 0x7f16, + /* 2*/ 0x7f17, + /* 2*/ 0x8128, + /* 190091*/ 0x8144, + /* 100000*/ 0x8145, + /* 100000*/ 0x8154, + /* 110000*/ 0x8155, + /* 100000*/ 0x8156, + /* 100000*/ 0x8164, + /* 100000*/ 0x8165, + /* 110000*/ 0x8166, + /* 100000*/ 0x8167, + /* 140000*/ 0x8176, + /* 100000*/ 0x8177, + /* 130000*/ 0x8184, + /* 40*/ 0x818c, + /* 100000*/ 0x8194, + /* 110000*/ 0x81b4, + /* 100000*/ 0x81bb, + /* 2*/ 0x81c9, + /* 36*/ 0x81d0, + /* 4*/ 0x81d1, + /* 40*/ 0x81dc, + /* 111677*/ 0x8222, + /* 110076*/ 0x8244, + /* 100038*/ 0x8255, + /* 110006*/ 0x8266, + /* 131679*/ 0x8277, + /* 107*/ 0x8300, + /* 131*/ 0x8311, + /* 140015*/ 0x8322, + /* 2*/ 0x832d, + /* 110056*/ 0x8342, + /* 100019*/ 0x8344, + /* 100000*/ 0x8352, + /* 100000*/ 0x8354, + /* 110003*/ 0x8355, + /* 100001*/ 0x8366, + /* 6*/ 0x8377, + /* 71*/ 0x8388, + /* 2*/ 0x838d, + /* 34*/ 0x8399, + /* 100000*/ 0x83a4, + /* 120002*/ 0x83c4, + /* 4*/ 0x83c8, + /* 113*/ 0x83cc, + /* 2*/ 0x83d4, + /* 4*/ 0x84c9, + /* 4*/ 0x84d9, + /* 3*/ 0x8524, + /* 4*/ 0x8559, + /* 100000*/ 0x8adc, + /* 10000*/ 0x8ae8, + /* 100000*/ 0x8ae9, + /* 130000*/ 0x8aef, + /* 100000*/ 0x8af8, + /* 2*/ 0x8b26, + /* 20000*/ 0x8b28, + /* 1*/ 0x8b45, + /* 100000*/ 0x8b48, + /* 32*/ 0x8b49, + /* 20000*/ 0x8b56, + /* 10000*/ 0x8b58, + /* 100000*/ 0x8b59, + /* 105158*/ 0x8b65, + /* 100000*/ 0x8b68, + /* 2*/ 0x8b75, + /* 2*/ 0x8b82, + /* 260*/ 0x8b8c, + /* 100000*/ 0x8ba3, + /* 100000*/ 0x8bab, + /* 100000*/ 0x8bc2, + /* 100000*/ 0x8bc3, + /* 10000*/ 0x8bc8, + /* 10002*/ 0x8bc9, + /* 2*/ 0x8bd5, + /* 4*/ 0x8bd9, + /* 32*/ 0x8bdc, + /* 101674*/ 0x8c84, + /* 100063*/ 0x8cc4, + /* 1*/ 0x8ce2, + /* 100000*/ 0x8ce4, + /* 32*/ 0x8d04, + /* 107*/ 0x8d14, + /* 140019*/ 0x8d24, + /* 20*/ 0x8d28, + /* 100040*/ 0x8d44, + /* 120003*/ 0x8d48, + /* 110013*/ 0x8d54, + /* 2*/ 0x8d58, + /* 2*/ 0x8d62, + /* 100088*/ 0x8d64, + /* 218*/ 0x8d84, + /* 91*/ 0x8dc4, + /* 85*/ 0x8dd4, + /* 110127*/ 0x91fc, + /* 1*/ 0x93f0, + /* 36*/ 0x93f1, + /* 3*/ 0x93f4, + /* 1*/ 0x93f8, + /* 6*/ 0x93f9, + /* 142037*/ 0x93fa, + /* 120015*/ 0x93fc, + /* 100000*/ 0x9420, + /* 4*/ 0x9426, + /* 1*/ 0x942c, + /* 42*/ 0x9446, + /* 1*/ 0x9462, + /* 3*/ 0x9464, + /* 1*/ 0x94c4, + /* 1*/ 0x94c6, + /* 110126*/ 0x95fc, + /* 3*/ 0x9646, + /* 32*/ 0x9666, + /* 110*/ 0x9688, + /* 142033*/ 0x97fa, + /* 120014*/ 0x97fc, + /* 1*/ 0x9a40, + /* 110112*/ 0x9b20, + /* 100000*/ 0x9b40, + /* 64*/ 0x9c48, + /* 38*/ 0x9c88, + /* 100000*/ 0x9e06, + /* 262035*/ 0x9e08, + /* 110000*/ 0x9e0e, + /* 100002*/ 0xa08c, + /* 32*/ 0xa08d, + /* 20000*/ 0xa08f, + /* 8*/ 0xa0ac, + /* 111681*/ 0xa0ca, + /* 100000*/ 0xa0cd, + /* 110001*/ 0xa0ce, + /* 101684*/ 0xa0cf, + /* 100032*/ 0xa0dc, + /* 110000*/ 0xa0df, + /* 100000*/ 0xa0ec, + /* 100006*/ 0xa0ed, + /* 101677*/ 0xa0fc, + /* 6*/ 0xa0fe, + /* 100056*/ 0xa104, + /* 100000*/ 0xa105, + /* 100000*/ 0xa108, + /* 110000*/ 0xa114, + /* 100000*/ 0xa115, + /* 56*/ 0xa116, + /* 100032*/ 0xa124, + /* 76*/ 0xa12d, + /* 1*/ 0xa134, + /* 40*/ 0xa13d, + /* 100000*/ 0xa141, + /* 100041*/ 0xa142, + /* 1*/ 0xa143, + /* 1*/ 0xa144, + /* 110009*/ 0xa145, + /* 100007*/ 0xa146, + /* 100008*/ 0xa147, + /* 110000*/ 0xa148, + /* 100000*/ 0xa149, + /* 100000*/ 0xa14a, + /* 100000*/ 0xa14b, + /* 110000*/ 0xa14c, + /* 100002*/ 0xa14d, + /* 100000*/ 0xa150, + /* 100004*/ 0xa154, + /* 100000*/ 0xa156, + /* 100006*/ 0xa157, + /* 100000*/ 0xa158, + /* 100000*/ 0xa159, + /* 100000*/ 0xa15a, + /* 110000*/ 0xa15c, + /* 100002*/ 0xa15d, + /* 112*/ 0xa161, + /* 120006*/ 0xa164, + /* 100006*/ 0xa165, + /* 100000*/ 0xa167, + /* 6*/ 0xa168, + /* 10000*/ 0xa16b, + /* 120012*/ 0xa16c, + /* 100062*/ 0xa172, + /* 60*/ 0xa174, + /* 100000*/ 0xa175, + /* 100000*/ 0xa176, + /* 6*/ 0xa179, + /* 110000*/ 0xa17a, + /* 110008*/ 0xa17c, + /* 110014*/ 0xa17d, + /* 110000*/ 0xa184, + /* 110000*/ 0xa185, + /* 20000*/ 0xa186, + /* 100004*/ 0xa189, + /* 100000*/ 0xa18b, + /* 4*/ 0xa191, + /* 56*/ 0xa192, + /* 100000*/ 0xa1a1, + /* 100000*/ 0xa1a5, + /* 110000*/ 0xa1a6, + /* 110000*/ 0xa1a7, + /* 112033*/ 0xa1af, + /* 10000*/ 0xa1c1, + /* 100062*/ 0xa1c2, + /* 110009*/ 0xa1c4, + /* 110005*/ 0xa1c5, + /* 120000*/ 0xa1c6, + /* 15*/ 0xa1c7, + /* 4*/ 0xa1d0, + /* 2*/ 0xa1d2, + /* 4*/ 0xa1d4, + /* 100004*/ 0xa1d5, + /* 120036*/ 0xa1d6, + /* 110004*/ 0xa1d7, + /* 112038*/ 0xa1fa, + /* 20000*/ 0xa880, + /* 101499*/ 0xa910, + /* 3*/ 0xa921, + /* 100002*/ 0xa940, + /* 100000*/ 0xa941, + /* 100000*/ 0xa943, + /* 100000*/ 0xa945, + /* 110000*/ 0xa949, + /* 105160*/ 0xa950, + /* 120000*/ 0xa955, + /* 100000*/ 0xa959, + /* 310005*/ 0xa960, + /* 100000*/ 0xa965, + /* 1*/ 0xa967, + /* 290180*/ 0xa970, + /* 130000*/ 0xa971, + /* 3*/ 0xa974, + /* 111751*/ 0xa980, + /* 100036*/ 0xa981, + /* 100000*/ 0xa984, + /* 1*/ 0xa987, + /* 100040*/ 0xa990, + /* 5*/ 0xa991, + /* 2*/ 0xa993, + /* 1*/ 0xa997, + /* 110000*/ 0xa9a0, + /* 100194*/ 0xa9c0, + /* 100000*/ 0xa9d0, + /* 63*/ 0xa9f1, + /* 40*/ 0xa9f3, + /* 110000*/ 0xab40, + /* 100004*/ 0xab50, + /* 56*/ 0xab80, + /* 55*/ 0xabc0, + /* 100069*/ 0xabf1, + /* 100000*/ 0xabf3, + /* 100001*/ 0xabf5, + /* 100006*/ 0xabf7, + /* 50*/ 0xabf9, + /* 100014*/ 0xabfb, + /* 2*/ 0xabfd, + /* 2*/ 0xabff, + /* 20*/ 0xaf26, + /* 120000*/ 0xaf46, + /* 3*/ 0xaf47, + /* 1*/ 0xaf56, + /* 1*/ 0xaf5e, + /* 1*/ 0xb107, + /* 110112*/ 0xb10a, + /* 4*/ 0xb120, + /* 100001*/ 0xb12a, + /* 3*/ 0xb14a, + /* 5*/ 0xb170, + /* 1*/ 0xb18a, + /* 4*/ 0xb2d1, + /* 6*/ 0xb2e1, + /* 2*/ 0xb345, + /* 1*/ 0xb347, + /* 130000*/ 0xb349, + /* 4*/ 0xb359, + /* 2*/ 0xb35b, + /* 100006*/ 0xb369, + /* 6*/ 0xb36d, + /* 100017*/ 0xb379, + /* 2*/ 0xb37b, + /* 67*/ 0xb385, + /* 2*/ 0xb3cb, + /* 120002*/ 0xba51, + /* 110000*/ 0xbd21, + /* 2*/ 0xbd32, + /* 100000*/ 0xbd41, + /* 100000*/ 0xbd4a, + /* 2*/ 0xbd51, + /* 100000*/ 0xbd5a, + /* 2*/ 0xbd5b, + /* 4*/ 0xbd61, + /* 110000*/ 0xbd6a, + /* 2*/ 0xbd71, + /* 110000*/ 0xbd7a, + /* 1*/ 0xbd91, + /* 32*/ 0xbd9a, + /* 110000*/ 0xbda2, + /* 100000*/ 0xbda3, + /* 34*/ 0xbdc1, + /* 100000*/ 0xbdc2, + /* 110000*/ 0xbdc3, + /* 120000*/ 0xc841, + /* 100000*/ 0xcb41, + /* 110000*/ 0xcc41, + /* 110000*/ 0xce41, + /* 100000*/ 0xcf41, + /* 2*/ 0xe106, + /* 3*/ 0xe10a, + /* 110000*/ 0xe1ea, + /* 220*/ 0xe1ec, + /* 40*/ 0xe1f2, + /* 2*/ 0xe202, + /* 40*/ 0xe203, + /* 32*/ 0xe204, + /* 2*/ 0xe2ea, + /* 100000*/ 0xe2ec, + /* 110000*/ 0xe2ee, + /* 120000*/ 0xe2f9, + /* 100000*/ 0xe2fb, + /* 30000*/ 0xe3db, + /* 7*/ 0xe602, + /* 300128*/ 0xe603, + /* 15*/ 0xe604, + /* 110002*/ 0xe605, + /* 32*/ 0xe606, + /* 72*/ 0xe607, + /* 3*/ 0xe608, + /* 101624*/ 0xe609, + /* 34*/ 0xe60a, + /* 110002*/ 0xe60b, + /* 100040*/ 0xe60c, + /* 120000*/ 0xe60d, + /* 1*/ 0xe60e, + /* 1*/ 0xe60f, + /* 3*/ 0xe610, + /* 40*/ 0xe614, + /* 2*/ 0xe616, + /* 2*/ 0xe619, + /* 30*/ 0xe622, + /* 3*/ 0xe62c, + /* 180*/ 0xe62d, + /* 4*/ 0xe632, + /* 2*/ 0xe639, + /* 56*/ 0xe63a, + /* 40*/ 0xe640, + /* 2*/ 0xe6f2, + /* 300000*/ 0xe6f9, + /* 4*/ 0xe706, + /* 105158*/ 0xe7fc, + /* 100045*/ 0xe801, + /* 121677*/ 0xe802, + /* 110000*/ 0xe803, + /* 110002*/ 0xe804, + /* 110000*/ 0xe806, + /* 42*/ 0xe808, + /* 40*/ 0xe80a, + /* 2*/ 0xe80e, + /* 40*/ 0xe810, + /* 103*/ 0xe815, + /* 1*/ 0xe81b, + /* 2*/ 0xe81c, + /* 10000*/ 0xe820, + /* 2*/ 0xe831, + /* 2*/ 0xe83b, + /* 34*/ 0xe901, + /* 32*/ 0xe903, + /* 1*/ 0xe906, + /* 101679*/ 0xe908, + /* 32*/ 0xe90f, + /* 110000*/ 0xe916, + /* 24*/ 0xe9ee, + /* 22*/ 0xe9ef, + /* 110000*/ 0xea02, + /* 110000*/ 0xea03, + /* 100000*/ 0xea11, + /* 110000*/ 0xea13, + /* 4*/ 0xeaee, + /* 33*/ 0xeaf9, + /* 110000*/ 0xeb01, + /* 100000*/ 0xeb24, + /* 100000*/ 0xeb26, + /* 40*/ 0xebbf, + /* 110000*/ 0xee01, + /* 110002*/ 0xee02, + /* 8*/ 0xee03, + /* 130076*/ 0xee04, + /* 6*/ 0xee05, + /* 110002*/ 0xee06, + /* 1*/ 0xee0b, + /* 4*/ 0xee0e, + /* 1*/ 0xee0f, + /* 20000*/ 0xee11, + /* 100000*/ 0xee14, + /* 110000*/ 0xee15, + /* 1*/ 0xee18, + /* 1*/ 0xee27, + /* 1*/ 0xee2d, + /* 103*/ 0xee33, + /* 2*/ 0xee3b, + /* 1*/ 0xee42, + /* 3*/ 0xeee1, + /* 101539*/ 0xeee2, + /* 110000*/ 0xeef4, + /* 2*/ 0xeef9, + /* 100000*/ 0xeefa, + /* 14*/ 0xeefc, + /* 180*/ 0xeefd, + /* 2*/ 0xef02, + /* 1*/ 0xef04, + /* 2*/ 0xef11, + /* 2*/ 0xef15, +#endif + 0,}; Index: support.c =================================================================== --- support.c (nonexistent) +++ support.c (revision 1765) @@ -0,0 +1,784 @@ +/* support routines for interpreted instructions + Copyright (C) 1992, 1993 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +Z8KSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Z8KSIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "config.h" + +#include +#include +#include + +#include "tm.h" +#include "sim.h" +#include "mem.h" +#include +#ifdef HAVE_TIME_H +#include +#endif +#ifdef HAVE_SYS_TIMES_H +#include +#endif +#include +#include +#include +#include "gdb/callback.h" +#include "gdb/remote-sim.h" +#include "syscall.h" + +static int get_now PARAMS ((void)); +static int now_persec PARAMS ((void)); +static int put_long PARAMS ((sim_state_type * context, int ptr, int value)); +static int put_short PARAMS ((sim_state_type * context, int ptr, int value)); + +int sim_z8001_mode; + +static int +get_now () +{ +#ifdef HAVE_SYS_TIMES_H + struct tms b; + + times (&b); + return b.tms_utime + b.tms_stime; +#else + return time (0); +#endif +} + +static int +now_persec () +{ + return 50; +} + + +/* #define LOG /* define this to print instruction use counts */ + +#ifdef __GNUC__ +#define INLINE __inline__ +#include "inlines.h" +#else +#include "inlines.h" +#endif + +/* This holds the entire cpu context */ +static sim_state_type the_state; + +int +fail (context, dummy) + sim_state_type *context; + int dummy; +{ + context->exception = SIM_BAD_INST; + return 1; +} + +void +sfop_bad1 (context) + sim_state_type *context; +{ + context->exception + = SIM_BAD_INST; +} + +void +bfop_bad1 (context) + sim_state_type *context; +{ + context->exception + = SIM_BAD_INST; +} + +void +fop_bad (context) + sim_state_type *context; +{ + context->exception = + SIM_BAD_INST; +} + +/* Table of bit counts for all byte values */ + +char the_parity[256] = +{ + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, + 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, + 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, + 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, + 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, + 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, + 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, + 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, + 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, + 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, + 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, + 7, 7, 8}; + + +int read (); +int write (); +int open (); +int close (); +int open (); +int close (); + +int link (); +int fstat (); + +static int +put_short (context, ptr, value) + sim_state_type *context; + int ptr; + int value; +{ + put_word_mem_da (context, ptr, value); + return ptr + 2; +} + +static int +put_long (context, ptr, value) + sim_state_type *context; + int + ptr; + int value; +{ + put_long_mem_da (context, ptr, value); + return ptr + 4; +} + +#define aptr(x) ((sitoptr(x)) + (char *)(context->memory)) + +static int args[3]; +static int arg_index; /* Translate a z8k system call into a host system call */ +void +support_call (context, sc) + sim_state_type *context; + int sc; +{ + extern int errno; + int ret; + int retnext = 0; + int fd; + + int olderrno = errno; + errno = 0; + switch (sc) + { + case SYS_ARG: + args[arg_index++] = context->regs[0].word << 16 | context->regs[1].word; + break; + case SYS_exit: + context->exception = SIM_DONE; + ret = args[0]; + arg_index = 0; + break; + case SYS_close: + ret = close ((int) (args[0])); + arg_index = 0; + break; + case SYS_creat: + ret = creat (aptr (args[0]), args[1]); + arg_index = 0; + break; + case SYS_isatty: + ret = isatty (args[0]); + arg_index = 0; + break; + case SYS_open: + ret = open (aptr (args[0]), args[1], args[2]); + arg_index = 0; + break; + case SYS_lseek: + ret = lseek (args[0], (off_t) args[1], args[2]); + arg_index = 0; + break; + case SYS_read: + ret = read (args[0], aptr (args[1]), args[2]); + arg_index = 0; + break; + case SYS_write: + ret = write (args[0],aptr (args[1]), args[2]); + arg_index = 0; + break; + case SYS_time: + { + int dst = args[0]; + + ret = time (0); + if (dst) + { + put_long_mem_da (context, + sitoptr (dst), ret); + } + retnext = ret; + ret = retnext >> 16; + arg_index = 0; + } + break; + case SYS_fstat: + { + int buf; + struct stat host_stat; + fd = args[0]; + buf = sitoptr (args[1]); + ret = fstat (fd, &host_stat); + buf = put_short (context, buf, host_stat.st_dev); + buf = put_short (context, buf, host_stat.st_ino); + /* FIXME: Isn't mode_t 4 bytes? */ + buf = put_short (context, buf, host_stat.st_mode); + buf = put_short (context, buf, host_stat.st_nlink); + buf = put_short (context, buf, host_stat.st_uid); + buf = put_short (context, buf, host_stat.st_uid); + buf = put_short (context, buf, host_stat.st_rdev); + buf = put_long (context, buf, host_stat.st_size); + buf = put_long (context, buf, host_stat.st_atime); + arg_index = 0; + } break; + default: + case SYS_link: + context->exception = SIM_BAD_SYSCALL; + arg_index = 0; + break; + } + context->regs[2].word = ret; + context->regs[3].word = retnext; + context->regs[5].word = errno; + + + /* support for the stdcall calling convention */ + context->regs[6].word = retnext; + context->regs[7].word = ret; + + errno = olderrno; +} + +#undef get_word_mem_da + +int +get_word_mem_da (context, addr) + sim_state_type *context; + int addr; +{ + return (get_byte_mem_da (context, addr) << 8) | (get_byte_mem_da (context, addr + 1)); + +} + +#undef get_word_reg +int +get_word_reg (context, reg) sim_state_type +* context; + int reg; +{ + return context->regs[reg].word; +} + +#ifdef LOG +int log[64 * 1024]; + +#endif + +void +tm_store_register (regno, value) + int regno; + int value; +{ + switch + (regno) + { + case REG_PC: + the_state.sometimes_pc = value; + break; + + default: + put_word_reg (&the_state, regno, value); + } +} + +void +swap_long (buf, val) + char *buf; + int val; +{ + buf[0] = val >> 24; + buf[1] = val >> 16; + buf[2] = val >> 8; + buf[3] = val >> 0; +} + +void +swap_word (buf, val) + char *buf; + int val; +{ + buf[0] = val >> 8; + buf[1] = val >> 0; +} + +void +tm_fetch_register (regno, buf) + int regno; + char *buf; +{ + switch + (regno) + { + case REG_CYCLES: + swap_long (buf, the_state.cycles); + break; + case REG_INSTS: + swap_long (buf, the_state.insts); + break; + case + REG_TIME: + swap_long (buf, the_state.ticks); + break; + case REG_PC: + swap_long (buf, the_state.sometimes_pc); + break; + case REG_SP: + { + if (sim_z8001_mode) + { + swap_long (buf, get_long_reg (&the_state, 14)); + } + else + { + swap_long (buf, get_word_reg (&the_state, 15)); + } + } + break; + case + REG_FP: + { + if (sim_z8001_mode) + { + swap_long (buf, get_long_reg + (&the_state, 10)); + } + else + { + swap_long (buf, + get_word_reg (&the_state, 10)); + } + } + break; + default: + { + swap_word (buf, + get_word_reg (&the_state, regno)); + } + } +} + +void +tm_resume (step) + int step; +{ + int now = get_now (); + struct op_info + *p; + int word; + int pc; + extern int (*(sfop_table[])) (); + extern int (*(bfop_table[])) (); + int (*((*table))) (); + sim_state_type *context = &the_state; + + if (step) + { + context->exception = SIM_SINGLE_STEP; + } + else + { + context->exception = 0; + } + + pc = context->sometimes_pc; + if (sim_z8001_mode) + { + table = bfop_table; + pc = MAP_PHYSICAL_TO_LOGICAL (pc); + } + else + { + table = sfop_table; + } + + + do + { + word = get_word_mem_da (context, pc); + p = op_info_table + word; + +#ifdef LOG + log[word]++; +#endif + pc = table[p->exec] (context, pc, word); + context->insts++; + + } + while (!context->exception); + + + + context->sometimes_pc = MAP_LOGICAL_TO_PHYSICAL (pc); + context->ticks += get_now () - now; +} + +int +tm_signal () +{ + return the_state.exception; +} + +void +tm_info_print (x) + sim_state_type *x; +{ + double timetaken = (double) x->ticks / (double) now_persec (); + double virttime = x->cycles / 4.0e6; + + printf ("instructions executed : %9d\n", x->insts); + printf ("cycles counted : %9d \n", x->cycles); + printf ("cycles / inst : %9.1f \n", (double) x->cycles / (double) x->insts); + printf ("virtual time taked (at 4 Mhz) : %9.1f \n", virttime); + printf ("real time taken : %9.1f \n", timetaken); + + if (timetaken) + { + printf ("virtual instructions per second : %9.1f\n", x->insts / timetaken); + printf ("emulation speed : %9.1f%%\n", virttime / timetaken * 100.0); + } +#ifdef LOG + { + extern int quick[]; + + for (i = 0; quick[i]; i++) + { + log[quick[i]] += 100000; + } + } + + for (i = 0; i < 64 * 1024; i++) + { + if (log[i]) + { + printf (" /*%7d*/ 0x%x,\n", log[i], i); + } + } +#endif + +} + +int +sim_trace (sd) + SIM_DESC sd; +{ + int i; + char buffer[10]; + int r; + + printf ("\n"); + for (r = 0; r < 16; r++) + { + int m; + + printf ("r%2d", r); + printf ("=%04x ", get_word_reg (&the_state, + r)); + for (m = -4; m < 8; m++) + { + if (m == 0) + printf (">"); + printf ("%04x ", + get_word_mem_da (&the_state, (0xfffe & get_word_reg (&the_state, r)) + m * 2)); + } + printf ("\n"); + } + + printf ("\n"); + printf ("%9d %9d %08x ", the_state.cycles, + the_state.insts, the_state.sometimes_pc); + + for (i = 0; i < 6; i++) + { + buffer[i] = get_byte_mem_da (&the_state, + the_state.sometimes_pc + i); + } + + print_insn_z8001 (the_state.sometimes_pc, buffer, stdout); + printf + ("\n"); + tm_resume (1); + if (the_state.exception != SIM_SINGLE_STEP) + return 1; + return 0; +} + +void +tm_state (x) + sim_state_type *x; +{ + *x = the_state; +} + +void +tm_exception (x) + int x; +{ + the_state.exception = x; +} + +int +tm_read_byte (x) + int x; +{ + x &= 0x3f00ffff; + return sim_read_byte (&the_state, x); +} + +void +tm_write_byte (x, y) + int x, y; +{ + x &= 0x3f00ffff; + sim_write_byte (&the_state, x, y); +} + +#define SIGN(x) ((x) & MASK) +normal_flags_32(context,d,sa,sb,sub) +sim_state_type *context; +unsigned int d; +unsigned int sa; +unsigned int sb; +unsigned int sub; +{ +#undef MASK +#define MASK (1<<31) + context->broken_flags = 0; + if (sub) + PSW_CARRY = sa < sb; + else + PSW_CARRY = d < sa; + if (sub) + PSW_OVERFLOW = (SIGN(sa) != SIGN(sb)) && (SIGN(d) == SIGN(sb)); + else + PSW_OVERFLOW = (SIGN(sa) == SIGN(sb)) && (SIGN(d) != SIGN(sb)); + + PSW_SIGN = ((int)d) <0; + PSW_ZERO = d == 0; +} + +normal_flags_16(context,d,sal,sbl,sub) +sim_state_type *context; +unsigned int d; +unsigned int sal; +unsigned int sbl; +unsigned short int sub; +{ + unsigned short sa = sal; + unsigned short sb = sbl; +#undef MASK +#define MASK (1<<15) + context->broken_flags = 0; + if (sub) + PSW_CARRY = sal < sbl; + else + PSW_CARRY = (d & 0x10000) != 0; + + if (sub) + PSW_OVERFLOW = (SIGN(sa) != SIGN(sb)) && (SIGN(d) == SIGN(sb)); + else + PSW_OVERFLOW = (SIGN(sa) == SIGN(sb)) && (SIGN(d) != SIGN(sb)); + + PSW_SIGN = ((short int)d) <0; + PSW_ZERO = ((short)d) == 0; +} + +normal_flags_8(context,d,sa,sb,sub) +sim_state_type *context; +unsigned char d; +unsigned char sa; +unsigned char sb; +unsigned char sub; +{ +#undef MASK +#define MASK (1<<7) + context->broken_flags = 0; + if (sub) + PSW_CARRY = sa < sb; + else + PSW_CARRY = d < sa; + if (sub) + PSW_OVERFLOW = (SIGN(sa) != SIGN(sb)) && (SIGN(d) == SIGN(sb)); + else + PSW_OVERFLOW = (SIGN(sa) == SIGN(sb)) && (SIGN(d) != SIGN(sb)); + PSW_SIGN = ((char)d) <0; + PSW_ZERO = d == 0; +} + + +static int +is_cond_true (context, c) + sim_state_type *context; + int c; +{ + switch (c) + { + case T: + return 1; + case F: + return 0; /* F */ + case LE: + return (PSW_ZERO | (PSW_SIGN ^ PSW_OVERFLOW)) & 1; /*LE */ + case GT: + return (~(PSW_ZERO | (PSW_SIGN ^ PSW_OVERFLOW))) & 1; /*GT */ + case 0x5: + return (PSW_SIGN & 1); /* sign */ + case 0xd: + return (~(PSW_SIGN)) & 1; /* not sign */ + case 0x3: + return ((PSW_CARRY | PSW_ZERO) & 1); /* ule*/ + case UGT: + return ((~(PSW_CARRY | PSW_ZERO)) & 1); /* ugt */ + case 0x4: + return (PSW_OVERFLOW & 1);/* overflow */ + case 0xc: + return (~(PSW_OVERFLOW)) & 1; /* not overflow */ + case LT: + return (PSW_SIGN ^ PSW_OVERFLOW) & 1; /* LT */ + case GE: + return (~(PSW_SIGN ^ PSW_OVERFLOW)) & 1; /* GE */ + case EQ: + return (PSW_ZERO) & 1; /* zero */ + case NE: + return ((~PSW_ZERO) & 1); /* not zero */ + case 0x7: + return (PSW_CARRY) & 1; /* carry */ + case 0xf: + return (~PSW_CARRY) & 1; /* not carry */ + default: + abort (); + } +} + +int +COND (context, c) + sim_state_type *context; + int c; +{ + if (c == 8) + return 1; + + /* We can calculate what the flags would have been by + looking at the src and dst and size of the operation */ + + if (context->broken_flags) + { + int slow = 0; + int size; + int dst; + int srca; + int srcb; + int mask; + int ans; + + /* see if we can short-cut the nasty flag calcs */ + + switch (size = context->size) + { + default: + abort(); + return 0; + case 8: + srca = (char) (context->srca); + srcb = (char) (context->srcb); + dst = (char) (context->dst); + mask = 0xff; + break; + case 16: + srca = (short) (context->srca); + srcb = (short) (context->srcb); + dst = (short) (context->dst); + mask = 0xffff; + break; + case 32: + srca = (long) (context->srca); + srcb = (long) (context->srcb); + dst = (long) (context->dst); + mask = 0xffffffff; + break; + } + + switch (c) + { + case T: + return 1; + case F: + return 0; + case EQ: + return !dst; + case NE: + return dst; + case GT: + ans = ((dst)) > 0; + if (slow) + { + if (is_cond_true (context, c) != ans) + abort (); + } + return ans; + case LE: + ans = ((dst)) <= 0; + if (slow) + { + if (is_cond_true (context, c) != ans) + abort (); + } + return ans; + case GE: + ans = ((dst)) >= 0; + if (slow) + { + if (is_cond_true (context, c) != ans) + abort (); + } + return ans; + case LT: + ans = ((dst)) < 0; + if (slow) + { + if (is_cond_true (context, c) != ans) + abort (); + } + return ans; + default: + break; + } + + /* Can't fake it, we'll have to work out the flags the + hard way */ + + makeflags (context, mask); + } + + /* don't know how to fake a test, inspect the flags + the hard way */ + + return is_cond_true (context, c); +} Index: tconfig.in =================================================================== --- tconfig.in (nonexistent) +++ tconfig.in (revision 1765) @@ -0,0 +1,13 @@ +/* z8k target configuration 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 */ Index: mem.c =================================================================== --- mem.c (nonexistent) +++ mem.c (revision 1765) @@ -0,0 +1,126 @@ +/* memory support for Z8KSIM + Copyright (C) 1987, 1992 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +Z8KSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Z8KSIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "config.h" + +#include + +#ifdef HAVE_STDLIB_H +#include +#endif + +#include "tm.h" +#include "mem.h" +#include "sim.h" + +#define INLINE +static +long +sitoptr (si) +long si; +{ + return ((si & 0xff000000) >> 8) | (si & 0xffff); +} + +static +unsigned short * +get_page_and_offset (context, where, offset_ptr) + sim_state_type *context; + sim_phys_addr_type where; + int *offset_ptr; +{ + /* Is the page allocated ? */ + + if (context->memory == 0) + { + /* Must allocate 16MB in order to run Z8001 programs. */ + context->memory = (unsigned short *)calloc(64*1024*64,4); + } + + *offset_ptr = sitoptr(where); + return context->memory; +} + +void +sim_write_byte (context, where, what) + sim_state_type *context; + sim_phys_addr_type where; + int what; +{ + unsigned int offset; + char *ptr = (char *)get_page_and_offset (context, where, &offset); + + ptr[offset] = what; +} + +void +sim_write_short (context, where, what) + sim_state_type *context; + sim_phys_addr_type where; + int what; +{ + int offset; + char *ptr = (char *)get_page_and_offset (context, where, &offset); + + ptr[offset] = what >> 8; + ptr[offset + 1] = what; +} + +void +sim_write_long (context, where, what) + sim_state_type *context; + sim_phys_addr_type where; + int what; +{ + int offset; + char *ptr = (char *)get_page_and_offset (context, where, &offset); + + ptr[offset] = what >> 24; + ptr[offset + 1] = what >> 16; + ptr[offset + 3] = what >> 8; + ptr[offset + 4] = what; +} + +int +sim_read_byte (context, where) + sim_state_type *context; + sim_phys_addr_type where; +{ + int offset; + char *ptr = (char *)get_page_and_offset (context, where, &offset); + + return ptr[offset]; +} + +unsigned +sim_read_short (context, where) + sim_state_type *context; + sim_phys_addr_type where; +{ + int what; + int offset; + + char *ptr = (char *)get_page_and_offset (context, where, &offset); + + what = (ptr[offset] << 8) | ptr[offset + 1]; + return what; +} + + + Index: acconfig.h =================================================================== --- acconfig.h (nonexistent) +++ acconfig.h (revision 1765) @@ -0,0 +1,15 @@ + +/* Define to 1 if NLS is requested. */ +#undef ENABLE_NLS + +/* Define as 1 if you have catgets and don't want to use GNU gettext. */ +#undef HAVE_CATGETS + +/* Define as 1 if you have gettext and don't want to use GNU gettext. */ +#undef HAVE_GETTEXT + +/* Define as 1 if you have the stpcpy function. */ +#undef HAVE_STPCPY + +/* Define if your locale.h file contains LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES Index: syscall.h =================================================================== --- syscall.h (nonexistent) +++ syscall.h (revision 1765) @@ -0,0 +1,43 @@ +/* system call numbers + Copyright (C) 1992, 1993 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +Z8KSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Z8KSIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + +#define SYS_exit 1 +#define SYS_fork 2 +#define SYS_read 3 +#define SYS_write 4 +#define SYS_open 5 +#define SYS_close 6 +#define SYS_wait4 7 +#define SYS_creat 8 +#define SYS_link 9 +#define SYS_unlink 10 +#define SYS_execv 11 +#define SYS_chdir 12 +#define SYS_mknod 14 +#define SYS_chmod 15 +#define SYS_chown 16 +#define SYS_lseek 19 +#define SYS_getpid 20 +#define SYS_isatty 21 +#define SYS_fstat 22 +#define SYS_time 23 + + +#define SYS_ARG 24 Index: mem.h =================================================================== --- mem.h (nonexistent) +++ mem.h (revision 1765) @@ -0,0 +1,8 @@ +#define Z8k_PAGE_SIZE (1<> 8) & 0x7f0000) | (x & 0xffff)) +#define MAP_LOGICAL_TO_PHYSICAL(x) (((x <<8) & 0x7f000000) | (x & 0xffff)) +#define REG_PC 17 +#define REG_CYCLES 18 +#define REG_INSTS 19 +#define REG_TIME 20 +#define REG_FP 21 +#define REG_SP 22 +#define REG_CCR 16 + +#define SET_REG(x,y) set_reg(x,y) +#define SINGLE_STEP 1 + +#define PSW_CARRY context->carry +#define PSW_OP context->op +#define PSW_OVERFLOW context->overflow +#define PSW_SIGN context->sign +#define PSW_ZERO context->zero +#define GET_PC() context->pc +#define SET_PC(x) context->pc = x + +struct op_info +{ + short int exec; +}; + +extern struct op_info op_info_table[]; + +typedef union +{ + unsigned short int word; + +} + +borw_type; + +typedef struct state_struct +{ + unsigned short *memory; + int carry; + int sign; + int zero; + int overflow; + int op; + int cycles; + + borw_type regs[16]; + + sim_phys_addr_type sometimes_pc; +#ifdef __GNUC__ + volatile +#endif + int exception; + +#define iwords_0 iwords0 +#define iwords_1 iwords1 +#define iwords_2 iwords2 +#define iwords_3 iwords3 + +#define ibytes_0 (iwords_0>>8) +#define ibytes_1 (iwords_0&0xff) +#define ibytes_2 (iwords_1>>8) +#define ibytes_3 (iwords_1& 0xff) +#define ibytes_4 (iwords_2>>8) + + int insts; + int ticks; + + int next_inst; + int broken_flags; + + int srca; + int srcb; + int dst; + int size; +} + +sim_state_type; + +#define CMP_FLAGS 100 +#define TST_FLAGS 101 +#endif + +extern int get_word_mem_da PARAMS((sim_state_type *context, int addr)); +extern int get_word_reg PARAMS((sim_state_type *context, int reg)); +extern void support_call PARAMS((sim_state_type *context, int sc)); +extern void tm_exception PARAMS((int x)); +extern int tm_read_byte PARAMS((int x)); +extern int tm_signal PARAMS((void)); +extern void tm_state PARAMS((sim_state_type *x)); +extern void tm_write_byte PARAMS((int x, int y)); +extern void bfop_bad1 PARAMS(()); +extern int fail PARAMS((sim_state_type *context, int v)); +extern void fop_bad PARAMS((sim_state_type *context)); +extern void sfop_bad1 PARAMS(()); +extern void swap_long PARAMS((char *buf, int val)); +extern void swap_word PARAMS((char *buf, int val)); +extern void tm_fetch_register PARAMS((int regno, char *buf)); +extern void tm_info_print PARAMS((sim_state_type *x)); +extern void tm_resume PARAMS((int step)); +extern void tm_store_register PARAMS((int regno, int value)); + + +#ifndef __GNUC__ +/* If were using gnuc then these will be inlined, so the prototypes + won't be right */ +long int sitoptr PARAMS((long int si)); +long int ptrtosi PARAMS((long int ptr)); +void put_long_reg PARAMS((sim_state_type *context, int reg, int val)); +void put_quad_reg PARAMS((sim_state_type *context, int reg, int val1, int val2)); +void put_word_reg PARAMS((sim_state_type *context, int reg, int val)); +SItype get_long_reg PARAMS((sim_state_type *context, int reg)); +void put_byte_reg PARAMS((sim_state_type *context, int reg, int val)); +int get_byte_reg PARAMS((sim_state_type *context, int reg)); +void put_word_mem_da PARAMS((sim_state_type *context, int addr, int value)); +unsigned char get_byte_mem_da PARAMS((sim_state_type *context, int addr)); +void put_byte_mem_da PARAMS((sim_state_type *context, int addr, int value)); +SItype get_long_mem_da PARAMS((sim_state_type *context, int addr)); +void put_long_mem_da PARAMS((sim_state_type *context, int addr, int value)); +int get_word_mem_ir PARAMS((sim_state_type *context, int reg)); +void put_word_mem_ir PARAMS((sim_state_type *context, int reg, int value)); +int get_byte_mem_ir PARAMS((sim_state_type *context, int reg)); +void put_byte_mem_ir PARAMS((sim_state_type *context, int reg, int value)); +int get_long_mem_ir PARAMS((sim_state_type *context, int reg)); +void put_long_mem_ir PARAMS((sim_state_type *context, int reg, int value)); +void put_long_mem_x PARAMS((sim_state_type *context, int base, int reg, int value)); +void put_word_mem_x PARAMS((sim_state_type *context, int base, int reg, int value)); +void put_byte_mem_x PARAMS((sim_state_type *context, int base, int reg, int value)); +int get_word_mem_x PARAMS((sim_state_type *context, int base, int reg)); +int get_byte_mem_x PARAMS((sim_state_type *context, int base, int reg)); +int get_long_mem_x PARAMS((sim_state_type *context, int base, int reg)); +int COND PARAMS((sim_state_type *context, int c)); +void NORMAL_FLAGS PARAMS((sim_state_type *context, int size, int dst, int srca, int srcb)); +void TEST_NORMAL_FLAGS PARAMS((sim_state_type *context, int size, int dst)); +void put_ptr_long_reg PARAMS((sim_state_type *context, int reg, int val)); +long int get_ptr_long_reg PARAMS((sim_state_type *context, int reg)); +long int get_ptr_long_mem_ir PARAMS((sim_state_type *context, int reg)); +long int get_ptr_long_mem_da PARAMS((sim_state_type *context, long int addr)); +void put_ptr_long_mem_da PARAMS((sim_state_type *context, long int addr, long int ptr)); +#endif Index: writecode.c =================================================================== --- writecode.c (nonexistent) +++ writecode.c (revision 1765) @@ -0,0 +1,1948 @@ +/* generate instructions for Z8KSIM + + Copyright 1992, 1993, 2002 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +Z8KSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Z8KSIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* This program generates the code which emulates each of the z8k + instructions + + code goes into three files, tc-gen1.h, tc-gen2.h and tc-gen3.h. + which file being made depends upon the options + + -1 tc-gen1.h contains the fully expanded code for some selected + opcodes, (those in the quick.c list) + + -2 tc-gen2.h contains a list of pointers to functions, one for each + opcode. It points to functions in tc-gen3.h and tc-gen1.h + depending upon quick.c + + -3 tc-gen3.h contains all the opcodes in unexpanded form. + + -b3 tc-genb3.h same as -3 but for long pointers + + */ + +/* steve chamberlain + sac@cygnus.com */ + +#include "config.h" + +#include +#include +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_STRING_H +#include +#else +#ifdef HAVE_STRINGS_H +#include +#endif +#endif + +#define NICENAMES + +#define DEFINE_TABLE +#include "../opcodes/z8k-opc.h" + +#define NOPS 500 + +struct opcode_value +{ + int n; + struct opcode_value *next; +}; + +#define NICENAMES +int BIG; + +static char *reg_names[] = +{"bad", "src", "dst", "aux_a", "aux_b", "aux_r", "aux_x"}; + +#define IS_DST(x) ((x & 0xf) == 2) +#define IS_SRC(x) ((x & 0xf)==1) +#define SIZE_ADDRESS (BIG ? 8 : 4) /* number of nibbles in a ptr*/ + +static int file; + +static int nibs = 0; + +static char *current_size; +static char *current_name; +static char current_word0[40]; +static char current_byte0[40]; +static char current_byte1[40]; +static int indent; +static char *p; +static char *d; + +struct opcode_value *list[NOPS]; + +static opcode_entry_type * +lookup_inst (what) + int what; +{ + static short *z8k_inv_list = NULL; + const nr_z8k_inv_list_elements = 1 << 16; + if (z8k_inv_list == NULL) + { + /* Initialize the list to 0xff == -1 */ + z8k_inv_list = calloc (nr_z8k_inv_list_elements, sizeof (short)); + memset (z8k_inv_list, 0xff, nr_z8k_inv_list_elements * sizeof (short)); + } + /* Entry empty? Fill it in. */ + if (z8k_inv_list[what] == -1) + { + + int nibl_index; + int nibl_matched; + unsigned short instr_nibl; + unsigned short tabl_datum, datum_class, datum_value; + char instr_nibbles[8]; + + opcode_entry_type *ptr = z8k_table; + + nibl_matched = 0; + + instr_nibbles[3] = (what >> 0) & 0xf; + instr_nibbles[2] = (what >> 4) & 0xf; + instr_nibbles[1] = (what >> 8) & 0xf; + instr_nibbles[0] = (what >> 12) & 0xf; + + /* Assume it won't be found. */ + z8k_inv_list[what] = -2; + + while (ptr->name) + { + nibl_matched = 1; + for (nibl_index = 0; nibl_index < 4 && nibl_matched; nibl_index++) + { + instr_nibl = instr_nibbles[nibl_index]; + + tabl_datum = ptr->byte_info[nibl_index]; + datum_class = tabl_datum & CLASS_MASK; + datum_value = ~CLASS_MASK & tabl_datum; + + switch (datum_class) + { + case CLASS_BIT_1OR2: + if (datum_value != (instr_nibl & ~0x2)) + nibl_matched = 0; + break; + + case CLASS_IGNORE: + break; + case CLASS_BIT: + if (datum_value != instr_nibl) + nibl_matched = 0; + break; + case CLASS_00II: + if (!((~instr_nibl) & 0x4)) + nibl_matched = 0; + break; + case CLASS_01II: + if (!(instr_nibl & 0x4)) + nibl_matched = 0; + break; + case CLASS_0CCC: + if (!((~instr_nibl) & 0x8)) + nibl_matched = 0; + break; + case CLASS_1CCC: + if (!(instr_nibl & 0x8)) + nibl_matched = 0; + break; + case CLASS_0DISP7: + if (!((~instr_nibl) & 0x8)) + nibl_matched = 0; + nibl_index += 1; + break; + case CLASS_1DISP7: + if (!(instr_nibl & 0x8)) + nibl_matched = 0; + nibl_index += 1; + break; + case CLASS_REGN0: + if (instr_nibl == 0) + nibl_matched = 0; + break; + default: + break; + } + } + if (nibl_matched) + { + z8k_inv_list[what] = ptr->idx; + break; /* while */ + } + ptr++; + } + } + if (z8k_inv_list[what] >= 0) + return z8k_table + z8k_inv_list[what]; + return 0; +} + +static char * +insn_4 (n) + int n; +{ + switch (n) + { + case 1: + return "((iwords_0>>8) & 0xf)"; + case 2: + return "((ibytes_1 >> 4) & 0xf)"; + case 3: + return "((ibytes_1) & 0xf)"; + case 4: + return "((ibytes_2>>4) & 0xf)"; + case 5: + return "((ibytes_2) & 0xf)"; + case 6: + return "((ibytes_3 >> 4) & 0xf)"; + case 7: + return "((ibytes_3) & 0xf)"; + default: + return "****"; + } +} + +char * +ptr_mode () +{ + if (BIG) + { + return "ptr_long"; + } + return "word"; +} + +static +char * +ptr_size () +{ + if (BIG) + return "4"; + return "2"; +} + +static char * +reg_n (x) + unsigned int x; +{ + return reg_names[x & 0xf]; +} + +char * +stack_ptr () +{ + return BIG ? "14" : "15"; +} + +char * +mem () +{ +#if 0 + return BIG ? "segmem" : "unsegmem"; +#else + return "mem"; +#endif +} + +int +match (a) + char *a; +{ + if (strncmp (p, a, strlen (a)) == 0) + { + p += strlen (a); + return 1; + } + return 0; +} + +static +void +sub (y) + char *y; +{ + sprintf (d, "%s", y); + d += strlen (d); +} + +static char * +insn_16 (n) + int n; +{ + switch (n) + { + case 0: + return "(iwords_0)"; + case 4: + return "(iwords_1)"; + case 8: + return "(iwords_2)"; + case 12: + return "(iwords_3)"; + default: + return "****"; + } +} + +static +char * +insn_32 (n) + int n; +{ + switch (n) + { + case 0: + return "((iwords_0<<16) | (iwords_1))"; + case 4: + return "((iwords_1<<16) | (iwords_2))"; + case 8: + return "((iwords_2<<16) | (iwords_3))"; + default: + return "****"; + } +} + +static char * +size_name (x) + int x; +{ + switch (x) + { + case 8: + return "byte"; + case 16: + return "word"; + case 32: + return "long"; + case 64: + return "quad"; + } + return "!!"; +} + +/*VARARGS*/ +void +emit (string, a1, a2, a3, a4, a5) + char *string; + char* a1; + char* a2; + char* a3; + char* a4; + char* a5; +{ + int indent_inc = 0; + int indent_dec = 0; + int i; + char buffer[1000]; + + d = buffer; + p = string; + + while (*p) + { + if (match ("")) + { + if (BIG) + { + sub ("bfop"); + } + else + { + sub ("sfop"); + } + } + else if (match ("")) + { + if (BIG) + { + switch (nibs) + { + case 4: + sub ("(((iwords_1 << 8) | (iwords_2)) & 0x7fffff)"); + break; + default: + sub ("fail(context,124)"); + break; + } + } + else + { + switch (nibs) + { + case 4: + sub ("iwords_1"); + break; + default: + sub ("fail(context,123)"); + break; + } + } + } + else if (match ("")) + { + sub (current_name); + } + else if (match ("")) + { + sub (current_size); + } + else if (match ("")) + { + sub (insn_4 (nibs)); + } + else if (match ("")) + { + sub (insn_16 (nibs)); + } + else if (match ("")) + { + sub (insn_32 (nibs)); + } + else if (match ("iwords_0")) + { + sub (current_word0); + } + else if (match ("ibytes_0")) + { + sub (current_byte0); + } + else if (match ("")) + { + sub (current_byte1); + } + else if (match ("")) + { + if (strcmp (current_size, "word") == 0) + sub ("long"); + if (strcmp (current_size, "byte") == 0) + sub ("word"); + else if (strcmp (current_size, "long") == 0) + sub ("quad"); + else + abort (); + } + else if (match ("")) + { + if (BIG) + sub ("unsigned long"); + else + sub ("unsigned short"); + } + + else if (match ("")) + { + if (strcmp (current_size, "word") == 0) + sub ("short"); + else if (strcmp (current_size, "byte") == 0) + sub ("char"); + else if (strcmp (current_size, "long") == 0) + sub ("long"); + else + abort (); + } + + else if (match ("")) + { + sub ("pc"); + } + else if (match ("")) + { + sub (mem ()); + } + else if (match ("")) + { + sub (stack_ptr ()); + } + else if (match ("")) + { + sub (ptr_size ()); + } + else if (match ("")) + { + sub (ptr_mode ()); + } + else if (match ("")) + { + switch (nibs) + { + case 2: + sub ("(iwords_0&0xff)"); + break; + case 4: + sub ("(iwords_1>>8)"); + break; + case 6: + sub ("(iwords_1&0xff)"); + break; + case 8: + sub ("(iwords_2>>8)"); + break; + case 12: + sub ("(/* WHO */iwords_3&0xff)"); + break; + default: + abort (); + } + } + else + { + if (*p == '{') + indent_inc++; + if (*p == '}') + indent_dec++; + *d++ = *p; + p++; + } + } + *d++ = 0; + indent -= indent_dec; + for (i = 0; i < indent; i++) + printf ("\t"); + indent += indent_inc; + printf (buffer, a1, a2, a3, a4, a5); + +} + +/* fetch the lvalues of the operands */ +void +info_args (p) + opcode_entry_type *p; +{ + unsigned int *s; + + int done_one_imm8 = 0; + + /* int done_read = 4;*/ + s = p->byte_info; + nibs = 0; + while (*s) + { + switch (*s & CLASS_MASK) + { + case CLASS_BIT_1OR2: + emit ("register unsigned int imm_src=(& 2)?2:1;\n"); + break; + case CLASS_IGNORE: + case CLASS_BIT: + /* Just ignore these, we've already decoded this bit */ + nibs++; + break; + case CLASS_REGN0: + case CLASS_REG: + /* this nibble tells us which register to use as an arg, + if we've already gobbled the nibble we know what to use */ + { + int regname = *s & 0xf; + + emit ("register unsigned int reg_%s=;\n", + reg_names[regname]); + + nibs++; + } + break; + case CLASS_ADDRESS: + emit ("register unsigned base_%s=;\n", reg_n (*s)); + + nibs += SIZE_ADDRESS; + + break; + case CLASS_01II: + case CLASS_00II: + emit ("register unsigned int imm_src=&0x2;\n"); + nibs++; + break; + case CLASS_FLAGS: + emit ("register unsigned int imm_src=;\n"); + nibs++; +break; + case CLASS_IMM: + /* Work out the size of the think to fetch */ + + { + switch (*s & ~CLASS_MASK) + { + case ARG_IMM16: + emit ("register unsigned imm_src=;\n"); + nibs += 4; + break; + case ARG_IMM32: + emit ("register unsigned int imm_src= %s;\n", insn_32 (nibs)); + nibs += 8; + break; + case ARG_IMM4: + emit ("register unsigned int imm_src=;\n"); + nibs++; + break; + case ARG_NIM4: + emit ("register unsigned int imm_src = - ;\n"); + nibs++; + break; + case ARG_IMM2: + emit ("register unsigned int imm_src= & 0x2;\n"); + nibs++; + break; + + case ARG_IMM4M1: + emit ("register unsigned int imm_src=( + 1);\n"); + nibs++; + break; + case ARG_IMM_1: + emit ("register unsigned int imm_src=1;\n"); + break; + case ARG_IMM_2: + emit ("register unsigned int imm_src=2;\n"); + break; + case ARG_NIM8: + emit ("register unsigned int imm_src=-;\n"); + nibs += 2; + break; + case ARG_IMM8: + if (!done_one_imm8) + { + emit ("register unsigned int imm_src=;\n"); + nibs += 2; + done_one_imm8 = 1; + } + break; + default: + emit ("register int fail%d=fail(context,1);\n", nibs); + break; + } + break; + + case CLASS_DISP8: + /* We can't use `(char)' since char might be unsigned. + We can't use `(signed char)' because the compiler might be K&R. + This seems safe, since it only assumes that bytes are 8 + bits. */ + emit ("register unsigned int oplval_dst=((ibytes_1 << (sizeof (int) * 8 - 8)) >> (sizeof (int) * 8 - 9)) + pc;\n"); +#if 0 + /* Original code: fails if characters are unsigned. */ + emit ("register unsigned int oplval_dst=(((char)ibytes_1)<<1) + pc;\n"); +#endif + nibs += 2; + break; + case CLASS_CC: + emit ("register unsigned int op_cc=;\n"); + nibs++; + break; + default: + emit ("register int FAIL%d=fail(context,2);\n", nibs); + break; + } + ; + /* work out how to fetch the immediate value */ + } + + s++; + } +} + +void +info_special (p, getdst, nostore, before, nosrc) + opcode_entry_type *p; + int *getdst; + int *nostore; + int *before; + int *nosrc; +{ + switch (p->opcode) + { + case OPC_exts: + case OPC_extsb: + case OPC_extsl: + *nostore = 1; + *nosrc = 1; + break; + case OPC_ldm: + *nostore = 1; + *nosrc = 1; + break; + case OPC_negb: + case OPC_neg: + case OPC_sla: + case OPC_slab: + case OPC_slal: + case OPC_sda: + case OPC_sdab: + case OPC_sdal: + case OPC_com: + case OPC_comb: + case OPC_adc: + case OPC_sbc: + case OPC_nop: + case OPC_adcb: + case OPC_add: + case OPC_addb: + case OPC_addl: + case OPC_inc: + case OPC_sub: + case OPC_subb: + case OPC_subl: + case OPC_and: + case OPC_andb: + case OPC_xorb: + case OPC_xor: + break; + + case OPC_mult: + case OPC_multl: + case OPC_div: + case OPC_divl: + + *nostore = 1; + break; + + case OPC_testb: + case OPC_test: + case OPC_testl: + case OPC_cp: + case OPC_cpb: + case OPC_cpl: + case OPC_bit: + *nostore = 1; + *before = 0; + break; + + case OPC_bpt: + case OPC_jr: + case OPC_jp: + case OPC_ret: + case OPC_call: + case OPC_tcc: + *nosrc = 1; + *nostore = 1; + *before = 1; + break; + case OPC_sc: + *nostore = 1; + *before = 0; + break; + case OPC_clrb: + case OPC_clr: + *before = 1; + *nosrc = 1; + break; + case OPC_ldi: + case OPC_ldib: + case OPC_lddb: + case OPC_ldd: + + *before = 1; + *nostore = 1; + *nosrc = 1; + break; + case OPC_ldk: + case OPC_ld: + case OPC_ldb: + case OPC_ldl: + *before = 1; + *getdst = 0; + break; + case OPC_push: + case OPC_pushl: + case OPC_pop: + case OPC_popl: + *before = 1; + *getdst = 0; + break; + case OPC_lda: + *nosrc = 1; + break; + } +} + +/* calculate the lvalues required for the opcode */ +void +info_lvals (p) + opcode_entry_type *p; +{ + /* emit code to work out lvalues, if any */ + unsigned int *i = p->arg_info; + + while (*i) + { + current_name = reg_n (*i); + current_size = size_name (p->type); + switch (*i & CLASS_MASK) + { + case CLASS_X: + /* address(reg) */ + emit ("register oplval_= ((base_ + (short)get_word_reg(context,reg_)) & 0xffff) + (base_ & ~0xffff);\n"); + break; + case CLASS_IR: + /* Indirect register */ + emit ("register int oplval_ = get__reg(context,reg_);\n"); + break; + case CLASS_DA: + emit ("register int oplval_=base_;\n"); + break; + case CLASS_IMM: + case CLASS_REG_WORD: + case CLASS_REG_LONG: + case CLASS_REG_BYTE: + case CLASS_PR: + break; + case CLASS_BA: + emit ("register int oplval_ = get__reg(context,reg_) + (short)(imm_src);\n"); + break; + case CLASS_BX: + emit ("register int oplval_ = get__reg(context,reg_)\n"); + emit (" + get_word_reg(context,reg_aux_x);\n"); + break; + } + i++; + } +} + +/* emit code to fetch the args from calculated lvalues */ +int allregs; +void +info_fetch (p, getdst) + opcode_entry_type *p; + int getdst; +{ + unsigned int *i = p->arg_info; + int had_src = 0; + + allregs = 1; + while (*i) + { + + current_name = reg_n (*i); + current_size = size_name (p->type); + switch (*i & CLASS_MASK) + { + case CLASS_X: + case CLASS_IR: + case CLASS_BA: + case CLASS_BX: + case CLASS_DA: + if (!getdst && IS_DST (*i)) + break; + emit ("register int op_= get___da(context,oplval_);\n"); + allregs = 0; + break; + case CLASS_IMM: + if (!had_src) + { + if (p->opcode == OPC_out || + p->opcode == OPC_outb || + p->opcode == OPC_sout || + p->opcode == OPC_soutb) + { + /* The imm is a dest here */ + emit ("register int op_dst = imm_src;\n"); + } + else + { + emit ("register int op_src = imm_src;\n"); + } + } + break; + case CLASS_REG_QUAD: + if (!getdst && IS_DST (*i)) + break; + had_src |= IS_SRC (*i); + emit ("UDItype op_ ;\n"); + + break; + case CLASS_REG_WORD: + if (!getdst && IS_DST (*i)) + break; + had_src |= IS_SRC (*i); + emit ("register int op_ = get_word_reg(context,reg_);\n"); + break; + + case CLASS_REG_LONG: + if (!getdst && IS_DST (*i)) + break; + had_src |= IS_SRC (*i); + emit ("register int op_ = get_long_reg(context,reg_);\n"); + break; + case CLASS_REG_BYTE: + if (!getdst && IS_DST (*i)) + break; + had_src |= IS_SRC (*i); + emit ("register int op_ = get_byte_reg(context,reg_);\n"); + break; + } + i++; + } +} + +static void +normal_flags (p, s, neg) + opcode_entry_type *p; + char *s; +{ + emit (" %s;\n", s); + emit ("NORMAL_FLAGS(context,%d, tmp, op_dst, op_src,%d); \n", p->type,neg); +} + +static void +test_normal_flags (p, s, opt) + opcode_entry_type *p; + char *s; + int opt; +{ + emit (" %s;\n", s); + if (0 && opt) + { + emit ("context->broken_flags = TST_FLAGS;\n"); + emit ("context->size = %d;\n", p->type); + } + else + { + emit ("TEST_NORMAL_FLAGS(context,%d, tmp); \n", p->type); + } + +} + +static void +optimize_normal_flags (p, s,neg) + opcode_entry_type *p; + char *s; +{ + emit (" %s;\n", s); +#if 0 + emit ("context->broken_flags = CMP_FLAGS;\n"); +#else + emit ("NORMAL_FLAGS(context,%d, tmp, op_dst, op_src,%d); \n", p->type, neg); +#endif +} + +static +void +jp (p) + opcode_entry_type *p; +{ + + emit ("if(op_cc == 8 || COND(context,op_cc)) pc = oplval_dst;\n"); +} + +static void +jr (p) + opcode_entry_type *p; +{ + emit ("if(op_cc == 8 || COND(context,op_cc)) pc = oplval_dst;\n"); +} + +static void +ret (p) + opcode_entry_type *p; +{ + emit ("if(op_cc == 8 || COND(context,op_cc))\n{\n"); + emit ("pc = get___ir(context,);\n"); + emit ("put__reg(context,, get__reg(context,) + );\n"); + emit ("};\n"); +} + +static void +call (p) + opcode_entry_type *p; +{ + emit ("put__reg(context,,tmp = get__reg(context,) - );\n"); + emit ("put___da(context,tmp, pc);\n"); + emit ("pc = oplval_dst;\n"); +} + +static void +push (p) + opcode_entry_type *p; +{ + emit ("tmp = op_src;\n"); + emit ("oplval_dst -= %d;\n", p->type / 8); + emit ("put__reg(context,reg_dst, oplval_dst);\n"); +} + +static void +pop (p) + opcode_entry_type *p; +{ + emit ("tmp = op_src;\n"); + emit ("put__reg(context,reg_src, oplval_src + %d);\n", p->type / 8); +} + +static void +ld (p) + opcode_entry_type *p; +{ + emit ("tmp = op_src;\n"); +} + +static void +sc () +{ + emit ("support_call(context,imm_src);\n"); +} + +static void +bpt () +{ + emit ("pc -=2; \n"); + emit ("context->exception = SIM_BREAKPOINT;\n"); +} + +static void +ldi (p, size, inc) + opcode_entry_type *p; + int size; + int inc; +{ + int dinc = (size / 8) * inc; + + current_size = size_name (size); + emit ("{ \n"); + emit ("int type = %s;\n", insn_4 (7)); + emit ("int rs = get__reg(context,reg_src);\n"); + emit ("int rd = get__reg(context,reg_dst);\n"); + emit ("int rr = get_word_reg(context,reg_aux_r);\n"); + emit ("do {\n"); + emit ("put___da(context,rd, get___da(context,rs));\n"); + emit ("rd += %d;\n", dinc); + emit ("rs += %d;\n", dinc); + emit ("rr --;\n"); + emit ("context->cycles += 9;\n"); + emit ("} while (!type && rr != 0 && context->exception <= 1);\n"); + emit ("if (context->exception>1) pc -=4;\n"); + emit ("put__reg(context,reg_src, rs);\n"); + emit ("put__reg(context,reg_dst, rd);\n"); + emit ("put_word_reg(context,reg_aux_r, rr);\n"); + emit ("}\n"); + +} + +static void +shift (p, arith) + opcode_entry_type *p; + int arith; +{ + + /* We can't use `(char)' since char might be unsigned. + We can't use `(signed char)' because the compiler might be K&R. + This seems safe, since it only assumes that bytes are 8 bits. */ + emit ("op_src = (op_src << (sizeof (int) * 8 - 8)) >> (sizeof (int) * 8 - 8);\n"); +#if 0 + /* Original code: fails if characters are unsigned. */ + emit ("op_src = (char)op_src;\n"); +#endif + emit ("if (op_src < 0) \n"); + emit ("{\n"); + emit ("op_src = -op_src;\n"); + emit ("op_dst = (%s )op_dst;\n", arith ? "" : "unsigned"); + emit ("tmp = (%s op_dst) >> op_src;\n", arith ? "" : "(unsigned)"); + emit ("context->carry = op_dst >> (op_src-1);\n", p->type); + emit ("}\n"); + emit ("else\n"); + emit ("{\n"); + emit ("tmp = op_dst << op_src;\n"); + emit ("context->carry = op_dst >> (%d - op_src);\n", p->type); + emit ("}\n"); + emit ("context->zero = ()tmp == 0;\n"); + emit ("context->sign = (int)(()tmp) < 0;\n"); + emit ("context->overflow = ((int)tmp < 0) != ((int)op_dst < 0);\n"); + emit ("context->cycles += 3*op_src;\n"); + emit ("context->broken_flags = 0;\n"); + +} + +static void +rotate (p, through_carry, size, left) + opcode_entry_type *p; + int through_carry; + int size; + int left; +{ + + if (!left) + { + emit ("while (op_src--) {\n"); + emit ("int rotbit;\n"); + emit ("rotbit = op_dst & 1;\n"); + emit ("op_dst = ((unsigned)op_dst) >> 1;\n"); + + if (through_carry) + { + emit ("op_dst |= context->carry << %d;\n", size - 1); + } + else + { + emit ("op_dst |= rotbit << %d;\n", size - 1); + } + emit ("context->carry = rotbit;\n"); + emit ("}\n"); + } + else + { + emit ("while (op_src--) {\n"); + emit ("int rotbit;\n"); + + emit ("rotbit = (op_dst >> (%d))&1;\n", size - 1); + emit ("op_dst <<=1;\n"); + if (through_carry) + { + emit ("if (context->carry) op_dst |=1;\n"); + } + else + { + emit ("if (rotbit) op_dst |= 1;\n"); + } + emit ("context->carry = rotbit;\n"); + emit ("}\n"); + } + emit ("tmp = ()op_dst;\n"); + emit ("context->zero = tmp == 0;\n"); + emit ("context->sign = (int)tmp < 0;\n"); + emit ("context->overflow = ((int)tmp < 0) != ((int)op_dst < 0);\n"); + emit ("context->cycles += 3*op_src;\n"); + emit ("context->broken_flags = 0;\n"); + +} + +static void +adiv (p) + opcode_entry_type *p; +{ + emit ("if (op_src==0)\n"); + emit ("{\n"); + emit ("context->exception = SIM_DIV_ZERO;\n"); + emit ("}\n"); + emit ("else\n"); + emit ("{\n"); + + if (p->type == 32) + { + emit ("op_dst.low = (int)get_long_reg(context,reg_dst+2);\n"); + emit ("op_dst.high = (int)get_long_reg(context,reg_dst+0);\n"); +#ifdef __GNUC__ + emit ("tmp = (((long long)op_dst.high << 32) + (op_dst.low)) / (int)op_src;\n"); +#else + emit ("tmp = (long)op_dst.low / (int)op_src;\n"); +#endif + emit ("put_long_reg(context,reg_dst+2, tmp);\n"); +#ifdef __GNUC__ + emit ("put_long_reg(context,reg_dst, (((long long)op_dst.high << 32) + (op_dst.low)) %% (int)op_src);\n"); +#else + emit ("put_long_reg(context,reg_dst, (int)op_dst.low %% (int)op_src);\n"); +#endif + + emit ("context->zero = op_src == 0 || (op_dst.low==0 && op_dst.high==0);\n"); + } + else + { + emit ("tmp = (long)op_dst / (short)op_src;\n"); + emit ("put_word_reg(context,reg_dst+1, tmp);\n"); + emit ("put_word_reg(context,reg_dst, (long) op_dst %% (short)op_src);\n"); + emit ("context->zero = op_src == 0 || op_dst==0;\n"); + } + + emit ("context->sign = (int)tmp < 0;\n"); + emit ("context->overflow =(tmp & 0x%x) != 0;\n", + ~((1 << (p->type)) - 1)); + emit ("context->carry = (tmp & 0x%x) != 0;\n", + ~(1 << (p->type))); + + emit ("}\n"); +} + +static void +dobit (p) +opcode_entry_type *p; +{ + emit("context->zero = (op_dst & (1<broken_flags = 0;\n"); +} +static void +doset (p, v) +opcode_entry_type*p; +int v; +{ + if (v) + emit (" tmp = op_dst | (1<< op_src);\n"); + else + emit (" tmp = op_dst & ~(1<< op_src);\n"); +} + +static void +mult (p) + opcode_entry_type *p; +{ + + if (p->type == 32) + { + emit ("op_dst.low = get_long_reg(context,reg_dst+2);\n"); + emit ("tmp = op_dst.low * op_src;\n"); + emit ("put_long_reg(context,reg_dst+2, tmp);\n"); + emit ("put_long_reg(context,reg_dst, 0);\n"); + } + else + { + emit ("op_dst = get_word_reg(context,reg_dst+1);\n"); + emit ("tmp = op_dst * op_src;\n"); + emit ("put_long_reg(context,reg_dst, tmp);\n"); + } + + emit ("context->sign = (int)tmp < 0;\n"); + emit ("context->overflow =0;\n"); + emit ("context->carry = (tmp & 0x%x) != 0;\n", ~((1 << (p->type)) - 1)); + emit ("context->zero = tmp == 0;\n"); + +} + +static void +exts (p) + opcode_entry_type *p; +{ + /* Fetch the ls part of the src */ + current_size = size_name (p->type * 2); + + if (p->type == 32) + { + emit ("tmp= get_long_reg(context,reg_dst+2);\n"); + emit ("if (tmp & (1<<%d)) {\n", p->type - 1); + emit ("put_long_reg(context,reg_dst, 0xffffffff);\n"); + emit ("}\n"); + emit ("else\n"); + emit ("{\n"); + emit ("put_long_reg(context,reg_dst, 0);\n"); + emit ("}\n"); + } + else + { + emit ("tmp= get__reg(context,reg_dst);\n"); + emit ("if (tmp & (1<<%d)) {\n", p->type - 1); + emit ("tmp |= 0x%x;\n", ~((1 << p->type) - 1)); + emit ("}\n"); + emit ("else\n"); + emit ("{\n"); + + emit ("tmp &= 0x%x;\n", ((1 << p->type) - 1)); + emit ("}\n"); + emit ("put__reg(context,reg_dst, tmp);\n"); + } +} +doflag(on) +int on; +{ + /* Load up the flags */ + emit(" COND (context, 0x0b);\n"); + + if (on) + emit ("{ int on =1;\n "); + else + emit ("{ int on =0;\n "); + + emit ("if (imm_src & 1)\n"); + emit ("PSW_OVERFLOW = on;\n"); + + emit ("if (imm_src & 2)\n"); + emit ("PSW_SIGN = on;\n"); + + emit ("if (imm_src & 4)\n"); + emit ("PSW_ZERO = on;\n"); + + emit ("if (imm_src & 8)\n"); + emit ("PSW_CARRY = on;\n"); + emit("}\n"); + + +} +/* emit code to perform operation */ +void +info_docode (p) + opcode_entry_type *p; +{ + switch (p->opcode) + { + case OPC_clr: + case OPC_clrb: + emit ("tmp = 0;\n"); + break; + case OPC_ex: + case OPC_exb: + + emit ("tmp = op_src; \n"); + if (allregs) + { + emit ("put__reg(context,reg_src, op_dst);\n"); + } + else + { + emit ("put__mem_da(context, oplval_src, op_dst);\n"); + } + break; + case OPC_adc: + case OPC_adcb: + normal_flags (p, "op_src += COND(context,7);tmp = op_dst + op_src ;",0); + break; + case OPC_sbc: + normal_flags (p, "op_src += COND(context,7);tmp = op_dst - op_src ;",1); + break; + case OPC_nop: + break; + case OPC_com: + case OPC_comb: + test_normal_flags (p, "tmp = ~ op_dst", 1); + break; + case OPC_and: + case OPC_andb: + test_normal_flags (p, "tmp = op_dst & op_src", 1); + break; + case OPC_xor: + case OPC_xorb: + test_normal_flags (p, "tmp = op_dst ^ op_src", 1); + break; + case OPC_or: + case OPC_orb: + test_normal_flags (p, "tmp = op_dst | op_src", 1); + break; + case OPC_sla: + case OPC_slab: + case OPC_slal: + case OPC_sda: + case OPC_sdab: + case OPC_sdal: + shift (p, 1); + break; + + case OPC_sll: + case OPC_sllb: + case OPC_slll: + case OPC_sdl: + case OPC_sdlb: + case OPC_sdll: + shift (p, 0); + break; + case OPC_rl: + rotate (p, 0, 16, 1); + break; + case OPC_rlb: + rotate (p, 0, 8, 1); + break; + case OPC_rr: + rotate (p, 0, 16, 0); + break; + case OPC_rrb: + rotate (p, 0, 8, 0); + break; + case OPC_rrc: + rotate (p, 1, 16, 0); + break; + case OPC_rrcb: + rotate (p, 1, 8, 0); + break; + case OPC_rlc: + rotate (p, 1, 16, 1); + break; + case OPC_rlcb: + rotate (p, 1, 8, 1); + break; + + case OPC_extsb: + case OPC_exts: + case OPC_extsl: + exts (p); + break; + case OPC_add: + case OPC_addb: + case OPC_addl: + case OPC_inc: + case OPC_incb: + optimize_normal_flags (p, "tmp = op_dst + op_src",0); + break; + case OPC_testb: + case OPC_test: + case OPC_testl: + test_normal_flags (p, "tmp = op_dst", 0); + break; + case OPC_cp: + case OPC_cpb: + case OPC_cpl: + normal_flags (p, "tmp = op_dst - op_src",1); + break; + case OPC_negb: + case OPC_neg: + emit ("{\n"); + emit ("int op_src = -op_dst;\n"); + emit ("op_dst = 0;\n"); + optimize_normal_flags (p, "tmp = op_dst + op_src;\n",1); + emit ("}"); + break; + + case OPC_sub: + case OPC_subb: + case OPC_subl: + case OPC_dec: + case OPC_decb: + optimize_normal_flags (p, "tmp = op_dst - op_src",1); + break; + case OPC_bpt: + bpt (); + break; + case OPC_jr: + jr (p); + break; + case OPC_sc: + sc (); + break; + case OPC_jp: + jp (p); + break; + case OPC_ret: + ret (p); + break; + case OPC_call: + call (p); + break; + case OPC_tcc: + case OPC_tccb: + emit ("if(op_cc == 8 || COND(context,op_cc)) put_word_reg(context,reg_dst, 1);\n"); + break; + case OPC_lda: + emit ("tmp = oplval_src; \n"); + /*(((oplval_src) & 0xff0000) << 8) | (oplval_src & 0xffff); \n");*/ + break; + case OPC_ldk: + case OPC_ld: + + case OPC_ldb: + case OPC_ldl: + ld (p); + break; + case OPC_ldib: + ldi (p, 8, 1); + break; + case OPC_ldi: + ldi (p, 16, 1); + break; + + case OPC_lddb: + ldi (p, 8, -1); + break; + case OPC_ldd: + ldi (p, 16, -1); + break; + + case OPC_push: + case OPC_pushl: + push (p); + break; + + case OPC_div: + case OPC_divl: + adiv (p); + break; + case OPC_mult: + case OPC_multl: + mult (p); + break; + case OPC_pop: + case OPC_popl: + pop (p); + break; + case OPC_set: + doset (p,1); + break; + case OPC_res: + doset (p,0); + break; + case OPC_bit: + dobit(p); + break; + case OPC_resflg: + doflag(0); + break; + case OPC_setflg: + doflag(1); + break; + default: + + emit ("tmp = fail(context,%d);\n", p->opcode); + break; + } +} + +/* emit code to store result in calculated lvalue */ + +void +info_store (p) + opcode_entry_type *p; +{ + unsigned int *i = p->arg_info; + + while (*i) + { + current_name = reg_n (*i); + current_size = size_name (p->type); + + if (IS_DST (*i)) + { + switch (*i & CLASS_MASK) + { + case CLASS_PR: + emit ("put__reg(context,reg_, tmp);\n"); + break; + case CLASS_REG_LONG: + case CLASS_REG_WORD: + case CLASS_REG_BYTE: + + emit ("put__reg(context,reg_,tmp);\n"); + break; + case CLASS_X: + case CLASS_IR: + case CLASS_DA: + case CLASS_BX: + case CLASS_BA: + + emit ("put___da(context,oplval_, tmp);\n"); + break; + case CLASS_IMM: + break; + default: + emit ("abort(); "); + break; + } + + } + i++; + } +} + +static +void +mangle (p, shortcut, value) + opcode_entry_type *p; + int shortcut; + int value; +{ + int nostore = 0; + int extra; + int getdst = 1; + int before = 0; + int nosrc = 0; + + emit ("/\052 %s \052/\n", p->nicename); + if (shortcut) + { + emit ("int _%04x(context,pc)\n", value); + } + else + { + emit ("int _%d(context,pc,iwords0)\n", p->idx); + emit ("int iwords0;\n"); + } + emit ("sim_state_type *context;\n"); + emit ("int pc;\n"); + emit ("{\n"); + emit ("register unsigned int tmp;\n"); + if (shortcut) + { + emit ("register unsigned int iwords0 = 0x%x;\n", value); + } + + /* work out how much bigger this opcode could be because it's large + model */ + if (BIG) + { + int i; + + extra = 0; + for (i = 0; i < 4; i++) + { + if ((p->arg_info[i] & CLASS_MASK) == CLASS_DA + || (p->arg_info[i] & CLASS_MASK) == CLASS_X) + extra += 2; + } + } + else + { + extra = 0; + } + printf (" /* Length %d */ \n", p->length + extra); + switch (p->length + extra) + { + case 2: + emit ("pc += 2\n;"); + break; + case 4: + emit ("register unsigned int iwords1 = get_word_mem_da(context,pc+2);\n"); + emit ("pc += 4;\n"); + break; + case 6: + + emit ("register unsigned int iwords1 = get_word_mem_da(context,pc+2);\n"); + emit ("register unsigned int iwords2 = get_word_mem_da(context,pc+4);\n"); + emit ("pc += 6;\n"); + break; + case 8: + emit ("register unsigned int iwords1 = get_word_mem_da(context,pc+2);\n"); + emit ("register unsigned int iwords2 = get_word_mem_da(context,pc+4);\n"); + emit ("register unsigned int iwords3 = get_word_mem_da(context,pc+6);\n"); + emit ("pc += 8;\n"); + break; + default: + break; + + } + emit ("context->cycles += %d;\n", p->cycles); + + emit ("{\n"); + info_args (p); + info_special (p, &getdst, &nostore, &before, &nosrc); + + info_lvals (p); + if (!nosrc) + { + info_fetch (p, getdst); + } + + if (before) + { + info_docode (p); + } + else + { + info_docode (p); + } + if (!nostore) + info_store (p); + emit ("}\n"); + emit ("return pc;\n"); + emit ("}\n"); +} + +void +static +one_instruction (i) + int i; +{ + /* find the table entry */ + opcode_entry_type *p = z8k_table + i; + + if (!p) + return; + mangle (p, 0, 0); +} + +void +add_to_list (ptr, value) + struct opcode_value **ptr; + int value; +{ + struct opcode_value *prev; + + prev = *ptr; + *ptr = (struct opcode_value *) malloc (sizeof (struct opcode_value)); + + (*ptr)->n = value; + (*ptr)->next = prev; +} + +void +build_list (i) + int i; +{ + opcode_entry_type *p = lookup_inst (i); + + if (!p) + return; + add_to_list (&list[p->idx], i); +} + +int +main (ac, av) + int ac; + char **av; +{ + int i; + int needcomma = 0; + + for (i = 1; i < ac; i++) + { + if (strcmp (av[i], "-1") == 0) + file = 1; + if (strcmp (av[i], "-2") == 0) + file = 2; + if (strcmp (av[i], "-3") == 0) + file = 3; + if (strcmp (av[i], "-b3") == 0) + { + file = 3; + BIG = 1; + } + + } + + /* First work out which opcodes use which bit patterns, + build a list of all matching bit pattens */ + for (i = 0; i < 1 << 16; i++) + { + build_list (i); + } +#if DUMP_LIST + for (i = 0; i < NOPS; i++) + { + struct opcode_value *p; + + printf ("%d,", i); + p = list[i]; + while (p) + { + printf (" %04x,", p->n); + p = p->next; + } + printf ("-1\n"); + } + +#endif + + if (file == 1) + { + extern int quick[]; + + /* Do the shortcuts */ + printf (" /* SHORTCUTS */\n"); + for (i = 0; quick[i]; i++) + { + int t = quick[i]; + + mangle (lookup_inst (t), 1, t); + } + } + if (file == 3) + { + printf (" /* NOT -SHORTCUTS */\n"); + for (i = 0; i < NOPS; i++) + { + if (list[i]) + { + one_instruction (i); + } + else + { + emit ("int _%d(context,pc)\n", i); + printf ("sim_state_type *context;\n"); + printf ("int pc;\n"); + emit ("{ _bad1();return pc; }\n"); + } + } + emit ("int _bad() ;\n"); + + /* Write the jump table */ + emit ("int (*(_table[]))() = {"); + needcomma = 0; + for (i = 0; i < NOPS; i++) + { + if (needcomma) + printf (","); + emit ("_%d\n", i); + needcomma = 1; + } + emit ("};\n"); + } + + if (file == 2) + { + extern int quick[]; + /* Static - since it's too be to be automatic on the apollo */ + static int big[64 * 1024]; + + for (i = 0; i < 64 * 1024; i++) + big[i] = 0; + + for (i = 0; quick[i]; i++) + { +#if 0 + + printf ("extern int _%04x();\n", quick[i]); +#endif + + big[quick[i]] = 1; + } + + for (i = 0; i < NOPS; i++) + { +#if 0 + printf ("extern int fop_%d();\n", i); +#endif + } +#if 0 + printf ("extern int fop_bad();\n"); +#endif + printf ("struct op_info op_info_table[] = {\n"); + for (i = 0; i < 1 << 16; i++) + { + opcode_entry_type *p = lookup_inst (i); + + if (needcomma) + printf (","); +#if 0 + if (big[i]) + { + printf ("_%04x", i); + } + else +#endif + if (p != NULL) + { + printf ("%d", p->idx); + } + else + printf ("400"); + if (p != NULL) + { + printf (" /* %04x %s */\n", i, p->nicename); + } + else + { + printf ("\n"); + } + needcomma = 1; + } + printf ("};\n"); + + } + return 0; +} + +char * +insn_ptr (n) + int n; +{ + if (BIG) + { + abort (); + } + + switch (n) + { + case 4: + return "iwords_1"; + default: + return "fail(context,123)"; + } +} + +/* work out if the opcode only wants lvalues */ +int +lvalue (p) + opcode_entry_type *p; +{ + switch (p->opcode) + { + case OPC_lda: + return 1; + case OPC_call: + case OPC_jp: + return 1; + default: + return 0; + } +} + +int +info_len_in_words (o) + opcode_entry_type *o; +{ + unsigned int *p = o->byte_info; + int nibs = 0; + + while (*p) + { + switch (*p & CLASS_MASK) + { + case CLASS_IGNORE: + case CLASS_BIT: + case CLASS_REGN0: + case CLASS_REG: + case CLASS_01II: + case CLASS_00II: + nibs++; + break; + case CLASS_ADDRESS: + nibs += SIZE_ADDRESS; + break; + case CLASS_IMM: + switch (*p & ~CLASS_MASK) + { + case ARG_IMM16: + nibs += 4; + break; + case ARG_IMM32: + nibs += 8; + break; + case ARG_IMM2: + case ARG_IMM4: + case ARG_NIM4: + case ARG_IMM4M1: + case ARG_IMM_1: + case ARG_IMM_2: + case ARG_IMMNMINUS1: + nibs++; + break; + case ARG_NIM8: + + case ARG_IMM8: + nibs += 2; + break; + default: + abort (); + } + break; + case CLASS_DISP: + switch (*p & ~CLASS_MASK) + { + case ARG_DISP16: + nibs += 4; + break; + case ARG_DISP12: + nibs += 3; + break; + case ARG_DISP8: + nibs += 2; + break; + default: + abort (); + } + break; + case CLASS_0DISP7: + case CLASS_1DISP7: + case CLASS_DISP8: + nibs += 2; + break; + case CLASS_BIT_1OR2: + case CLASS_0CCC: + case CLASS_1CCC: + case CLASS_CC: + nibs++; + break; + default: + emit ("don't know %x\n", *p); + } + p++; + } + + return nibs / 4; /* return umber of words */ +} Index: comped1.c =================================================================== --- comped1.c (nonexistent) +++ comped1.c (revision 1765) @@ -0,0 +1,31 @@ +/* instruction interpreter module 1 + Copyright (C) 1992, 1993 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +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 2, or (at your option) +any later version. + +Z8KZIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include +#include "tm.h" +#include "sim.h" + + +#ifdef __GNUC__ +#define INLINE inline +#include "inlines.h" +#endif + +#include "tc-gen1.h" + Index: config.in =================================================================== --- config.in (nonexistent) +++ config.in (revision 1765) @@ -0,0 +1,161 @@ +/* config.in. Generated automatically from configure.in by autoheader. */ + +/* Define if using alloca.c. */ +#undef C_ALLOCA + +/* Define to empty if the keyword does not work. */ +#undef const + +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +#undef CRAY_STACKSEG_END + +/* Define if you have alloca, as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define if you have and it should be used (not on Ultrix). */ +#undef HAVE_ALLOCA_H + +/* Define if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define as __inline if that's what the C compiler calls it. */ +#undef inline + +/* Define to `long' if doesn't define. */ +#undef off_t + +/* Define if you need to in order for stat and other things to work. */ +#undef _POSIX_SOURCE + +/* Define as the return type of signal handlers (int or void). */ +#undef RETSIGTYPE + +/* Define to `unsigned' if doesn't define. */ +#undef size_t + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +#undef STACK_DIRECTION + +/* Define if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if NLS is requested. */ +#undef ENABLE_NLS + +/* Define as 1 if you have gettext and don't want to use GNU gettext. */ +#undef HAVE_GETTEXT + +/* Define as 1 if you have the stpcpy function. */ +#undef HAVE_STPCPY + +/* Define if your locale.h file contains LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define if you have the __argz_count function. */ +#undef HAVE___ARGZ_COUNT + +/* Define if you have the __argz_next function. */ +#undef HAVE___ARGZ_NEXT + +/* Define if you have the __argz_stringify function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define if you have the __setfpucw function. */ +#undef HAVE___SETFPUCW + +/* Define if you have the dcgettext function. */ +#undef HAVE_DCGETTEXT + +/* Define if you have the getcwd function. */ +#undef HAVE_GETCWD + +/* Define if you have the getpagesize function. */ +#undef HAVE_GETPAGESIZE + +/* Define if you have the getrusage function. */ +#undef HAVE_GETRUSAGE + +/* Define if you have the munmap function. */ +#undef HAVE_MUNMAP + +/* Define if you have the putenv function. */ +#undef HAVE_PUTENV + +/* Define if you have the setenv function. */ +#undef HAVE_SETENV + +/* Define if you have the setlocale function. */ +#undef HAVE_SETLOCALE + +/* Define if you have the sigaction function. */ +#undef HAVE_SIGACTION + +/* Define if you have the stpcpy function. */ +#undef HAVE_STPCPY + +/* Define if you have the strcasecmp function. */ +#undef HAVE_STRCASECMP + +/* Define if you have the strchr function. */ +#undef HAVE_STRCHR + +/* Define if you have the time function. */ +#undef HAVE_TIME + +/* Define if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define if you have the header file. */ +#undef HAVE_FPU_CONTROL_H + +/* Define if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define if you have the header file. */ +#undef HAVE_STRING_H + +/* Define if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TIMES_H + +/* Define if you have the header file. */ +#undef HAVE_TIME_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the header file. */ +#undef HAVE_VALUES_H Index: comped2.c =================================================================== --- comped2.c (nonexistent) +++ comped2.c (revision 1765) @@ -0,0 +1,25 @@ +/* instruction interpreter module 2 + Copyright (C) 1992, 1993 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +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 2, 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include +#include "tm.h" +#include "sim.h" +#include "tc-gen2.h" + + Index: comped3.c =================================================================== --- comped3.c (nonexistent) +++ comped3.c (revision 1765) @@ -0,0 +1,28 @@ +/* instruction interpreter module 2 + Copyright (C) 1987, 1992 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +Z8KSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Z8KSIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + +#include +#include "tm.h" +#include "sim.h" + +#include "inlines.h" +#include "tc-gen3.h" + + Index: compedb3.c =================================================================== --- compedb3.c (nonexistent) +++ compedb3.c (revision 1765) @@ -0,0 +1,29 @@ +/* instruction interpreter module 3 + Copyright (C) 1992, 1993 Free Software Foundation, Inc. + +This file is part of Z8KSIM + +Z8KSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Z8KSIM 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 Z8KZIM; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#define ushort_type unsigned short + +#include +#include "tm.h" +#include "sim.h" +#include "inlines.h" + +#include "tc-genb3.h" + + Index: sim.h =================================================================== --- sim.h (nonexistent) +++ sim.h (revision 1765) @@ -0,0 +1,9 @@ +#define SIM_SINGLE_STEP 1 +#define SIM_DONE 2 +#define SIM_BREAKPOINT 3 +#define SIM_INTERRUPT 4 +#define SIM_BAD_INST 5 +#define SIM_DIV_ZERO 6 +#define SIM_BAD_SYSCALL 7 +#define SIM_BAD_ALIGN 8 +#define SIM_BAD_ADDR 9

powered by: WebSVN 2.1.0

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