diff options
author | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:35:26 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 1999-04-16 01:35:26 +0000 |
commit | c906108c21474dfb4ed285bcc0ac6fe02cd400cc (patch) | |
tree | a0015aa5cedc19ccbab307251353a41722a3ae13 /sim/testsuite/d30v-elf | |
parent | cd946cff9ede3f30935803403f06f6ed30cad136 (diff) | |
download | gdb-c906108c21474dfb4ed285bcc0ac6fe02cd400cc.zip gdb-c906108c21474dfb4ed285bcc0ac6fe02cd400cc.tar.gz gdb-c906108c21474dfb4ed285bcc0ac6fe02cd400cc.tar.bz2 |
Initial creation of sourceware repositorygdb-4_18-branchpoint
Diffstat (limited to 'sim/testsuite/d30v-elf')
44 files changed, 2368 insertions, 0 deletions
diff --git a/sim/testsuite/d30v-elf/ChangeLog b/sim/testsuite/d30v-elf/ChangeLog new file mode 100644 index 0000000..6d8369f --- /dev/null +++ b/sim/testsuite/d30v-elf/ChangeLog @@ -0,0 +1,60 @@ +1999-01-12 Frank Ch. Eigler <fche@cygnus.com> + + * do-flags.S: Added one old, one new regression test. + +1999-01-11 Frank Ch. Eigler <fche@cygnus.com> + + * do-flags.S: New test for parallel PSW update conflicts. + * Makefile.in (TESTS): Run it. + +1999-01-07 Frank Ch. Eigler <fche@cygnus.com> + + * do-2wordops.S: New test for sign-extension by ld2h. + +1998-12-08 Frank Ch. Eigler <fche@cygnus.com> + + * do-2wordops.S: New test for double-word load-like operations. + +1998-12-04 Frank Ch. Eigler <fche@cygnus.com> + + * do-shifts.S: Update an older test case. + +1998-12-03 Frank Ch. Eigler <fche@cygnus.com> + + * do-shifts.S: New test for more SRC shift counts. + +1998-11-22 Frank Ch. Eigler <fche@cygnus.com> + + * do-shifts.S: New test for large SRC shift counts. + +1998-11-12 Frank Ch. Eigler <fche@cygnus.com> + + * br-djsr.S: New test for new R62-update timing. + +1998-11-06 Frank Ch. Eigler <fche@cygnus.com> + + * do-shifts.S: Add test for large mvfacc shifts. + +Tue Oct 13 10:54:51 EDT 1998 Frank Ch. Eigler <fche@cygnus.com> + + * Makefile.in (TESTS): Added do-shifts test case. + * do-shifts.S: New file. + +Wed Apr 29 12:49:00 1998 Frank Ch. Eigler <fche@cygnus.com> + + * ls-modaddr.S: New test for modular addressing. + * Makefile.in: Run it. + +Wed Sep 3 14:33:35 1997 Andrew Cagney <cagney@b1.cygnus.com> + + * Makefile.in (.S.run): Replace .d30v with .run. + +Wed Apr 2 14:10:43 1997 Andrew Cagney <cagney@kremvax.cygnus.com> + + * Makefile.in (.d30v.ko): Limit the cpu time to 5 seconds. + +Wed Mar 26 11:13:42 1997 Andrew Cagney <cagney@kremvax.cygnus.com> + + * Makefile.in (.d30v.ko): Disable the shell's exit-on-error which + is enabled by BSD style make. + diff --git a/sim/testsuite/d30v-elf/Makefile.in b/sim/testsuite/d30v-elf/Makefile.in new file mode 100644 index 0000000..6317fe4 --- /dev/null +++ b/sim/testsuite/d30v-elf/Makefile.in @@ -0,0 +1,217 @@ +# Makefile for regression testing the GNU debugger. +# Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc. + +# This file is part of GDB. + +# GDB 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. + +# GDB 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. + +VPATH = @srcdir@ +srcdir = @srcdir@ +srcroot = $(srcdir)/.. + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +host_alias = @host_alias@ +target_alias = @target_alias@ +program_transform_name = @program_transform_name@ +build_canonical = @build@ +host_canonical = @host@ +target_canonical = @target@ +target_cpu = @target_cpu@ + + +SHELL = /bin/sh +SUBDIRS = @subdirs@ +RPATH_ENVVAR = @RPATH_ENVVAR@ + +EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \ + echo $${rootme}/../../expect/expect ; \ + else echo expect ; fi` + +RUNTEST = $(RUNTEST_FOR_TARGET) + +RUNTESTFLAGS = + +RUNTEST_FOR_TARGET = `\ + if [ -f $${srcdir}/../../../dejagnu/runtest ]; then \ + echo $${srcdir}/../../../dejagnu/runtest; \ + else \ + if [ "$(host_canonical)" = "$(target_canonical)" ]; then \ + echo runtest; \ + else \ + t='$(program_transform_name)'; echo runtest | sed -e '' $$t; \ + fi; \ + fi` + + +AS_FOR_TARGET = `\ + if [ -x ../../../gas/as-new ]; then \ + echo ../../../gas/as-new ; \ + else \ + echo $(target_alias)-as ; \ + fi` + +LD_FOR_TARGET = `\ + if [ -x ../../../ld/ld-new ]; then \ + echo ../../../ld/ld-new ; \ + else \ + echo $(target_alias)-ld ; \ + fi` + +RUN_FOR_TARGET = `\ + if [ -x ../../../sim/${target_cpu}/run ]; then \ + echo ../../../sim/${target_cpu}/run ; \ + else \ + echo $(target_alias)-run ; \ + fi` + +TESTS = \ + em-e0.ok \ + em-e47.ko \ + em-pstr.hi \ + em-pchr.hi \ + \ + ls-ld2h.ko \ + ls-ld2w.ko \ + ls-ld4bh.ko \ + ls-ld4bhu.ko \ + ls-ldb.ko \ + ls-ldbu.ko \ + ls-ldh.ko \ + ls-ldhh.ko \ + ls-ldhu.ko \ + ls-ldw.ko \ + ls-moddec.ko \ + ls-modinc.ko \ + ls-modaddr.ok \ + ls-st2h.hi \ + ls-st2w.hi \ + ls-st4hb.hi \ + ls-stb.hi \ + ls-sth.hi \ + ls-sthh.hi \ + ls-stw.hi \ + \ + br-bra.ok \ + br-bratnz.ok \ + br-bratzr.ok \ + br-bsr.ok \ + br-dbra.ko \ + br-djmp.ko \ + br-djsr.ok \ + \ + os-dbt.ok \ + do-flags.ok \ + do-shifts.ok \ + do-2wordops.ok \ + \ + trap.ok + +check: sanity $(TESTS) +sanity: + @eval echo AS_FOR_TARGET = $(AS_FOR_TARGET) + @eval echo LD_FOR_TARGET = $(LD_FOR_TARGET) + @eval echo RUN_FOR_TARGET = $(RUN_FOR_TARGET) + + + +# Rules for running all the tests, put into three types +# exit success, exit fail, print "Hello World" + +.u.log: + uudecode $*.u + $(RUN_FOR_TARGET) $* > $*.log + + +# Rules for running the tests + +.SUFFIXES: .u .ok .run .hi .ko +.run.ok: + rm -f tmp-$* $*.hi + ulimit -t 5 ; $(RUN_FOR_TARGET) $*.run > tmp-$* + mv tmp-$* $*.ok +.run.hi: + rm -f tmp-$* $*.hi diff-$* + ulimit -t 5 ; $(RUN_FOR_TARGET) $*.run > tmp-$* + echo "Hello World" | diff - tmp-$* > diff-$* + cat tmp-$* diff-$* > $*.hi +.run.ko: + rm -f tmp-$* $*.ko + set +e ; \ + ulimit -t 5 ; $(RUN_FOR_TARGET) $*.run > tmp-$* ; \ + if [ $$? -eq 47 ] ; then \ + exit 0 ; \ + else \ + exit 1 ; \ + fi + mv tmp-$* $*.ko + + +# Rules for building all the tests and packing them into +# uuencoded files. + +uuencode: em-pstr.u em-e0.u em-e47.u em-pchr.u + +.SUFFIXES: .u .S .run +.S.u: + rm -f $*.o $*.run + $(AS_FOR_TARGET) $(srcdir)/$*.S -o $*.o + $(LD_FOR_TARGET) -o $* $*.o + uuencode < $* $* > $*.u + rm -f $*.o $* +.S.run: + rm -f $*.o $*.run + $(AS_FOR_TARGET) $(srcdir)/$*.S -o $*.o + $(LD_FOR_TARGET) -o $*.run $*.o + rm -f $*.o $* + + + +# +# Standard +# +clean mostlyclean: + -rm -f *~ core *.o a.out *.x *.grt + rm -f $(TESTS) +# if [ x"${SUBDIRS}" != x ] ; then \ +# for dir in ${SUBDIRS}; \ +# do \ +# echo "$$dir:"; \ +# if [ -d $$dir ]; then \ +# (cd $$dir; $(MAKE) clean); \ +# fi; \ +# done ; \ +# else true; fi + +distclean maintainer-clean realclean: clean + -rm -f *~ core + -rm -f Makefile config.status *-init.exp + -rm -fr *.log summary detail *.plog *.sum *.psum site.* +# if [ x"${SUBDIRS}" != x ] ; then \ +# for dir in ${SUBDIRS}; \ +# do \ +# echo "$$dir:"; \ +# if [ -d $$dir ]; then \ +# (cd $$dir; $(MAKE) distclean); \ +# fi; \ +# done ; \ +# else true; fi + +Makefile : Makefile.in config.status + $(SHELL) config.status + +config.status: configure + $(SHELL) config.status --recheck diff --git a/sim/testsuite/d30v-elf/br-bra.S b/sim/testsuite/d30v-elf/br-bra.S new file mode 100644 index 0000000..7758b82 --- /dev/null +++ b/sim/testsuite/d30v-elf/br-bra.S @@ -0,0 +1,12 @@ + add r3, r0, dest1 + sub r3, r3, off1 +off1: + bra r3 + + .align 4 +dest1: + bra dest2 + + .align 5 +dest2: + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/br-bratnz.S b/sim/testsuite/d30v-elf/br-bratnz.S new file mode 100644 index 0000000..cea048a --- /dev/null +++ b/sim/testsuite/d30v-elf/br-bratnz.S @@ -0,0 +1,12 @@ + add r3, r0, dest1 + sub r3, r3, off1 +off1: + bratnz r3, r3 + + .align 4 +dest1: + bratnz r0, dest2 + .long 0x0e000004, 0x00f00000 + + .align 5 +dest2: diff --git a/sim/testsuite/d30v-elf/br-bratzr.S b/sim/testsuite/d30v-elf/br-bratzr.S new file mode 100644 index 0000000..783336e --- /dev/null +++ b/sim/testsuite/d30v-elf/br-bratzr.S @@ -0,0 +1,12 @@ + add r3, r0, dest1 + sub r3, r3, off1 +off1: + bratzr r2, r3 + + .align 4 +dest1: + bratzr r3, dest2 + .long 0x0e000004, 0x00f00000 + + .align 5 +dest2: diff --git a/sim/testsuite/d30v-elf/br-bsr.S b/sim/testsuite/d30v-elf/br-bsr.S new file mode 100644 index 0000000..7629f97 --- /dev/null +++ b/sim/testsuite/d30v-elf/br-bsr.S @@ -0,0 +1,12 @@ + # verify that the return address is set correctly + add r2, r0, 1 + add r3, r0, dest1 + sub r3, r3, off1 +off1: + bsr r3 || nop +ret1: + + .align 5 +dest1: + sub r2, r62, ret1 + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/br-dbra.S b/sim/testsuite/d30v-elf/br-dbra.S new file mode 100644 index 0000000..887c59f --- /dev/null +++ b/sim/testsuite/d30v-elf/br-dbra.S @@ -0,0 +1,83 @@ +# perform a delayed branch 47 instructions later + add r3, r0, 47 + srl r3, r3, -3 + dbra r3, dest + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + +.align 4 +dest: + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/br-djmp.S b/sim/testsuite/d30v-elf/br-djmp.S new file mode 100644 index 0000000..01af996 --- /dev/null +++ b/sim/testsuite/d30v-elf/br-djmp.S @@ -0,0 +1,83 @@ +# perform a delayed jump 47 instructions later + add r3, r0, insn47 + djmp r3, dest + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop +insn47: # actually 45 + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + +.align 4 +dest: + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/br-djsr.S b/sim/testsuite/d30v-elf/br-djsr.S new file mode 100644 index 0000000..87d47d2 --- /dev/null +++ b/sim/testsuite/d30v-elf/br-djsr.S @@ -0,0 +1,79 @@ + # Test macro + + .macro assert reg,value + cmpeq f0,\reg,\value + bra/fx fail + .endm + + + # PR 18230 + + add r62,r0,0xffffffff || nop + add r1,r0,24 || nop + djsr r1,test_end + add r2,r0,r62 +test_end: nop + + assert r2, 0x00000030 + assert r62, 0x00000030 + + +# check return address correctly set by a djsr insn + + add r3, r0, last + sub r3, r3, start +start: + djsr r3, dest + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop +last: + add r2, r2, 1 || nop +nexti: + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + add r2, r2, 1 || nop + +.align 4 +dest: + + assert r62,nexti + + + + # all okay + bra ok + +ok: + add r2, r0, 0 + .long 0x0e000004 + nop + +fail: + add r2, r0, 47 + .long 0x0e000004 + nop diff --git a/sim/testsuite/d30v-elf/configure b/sim/testsuite/d30v-elf/configure new file mode 100755 index 0000000..94518a0 --- /dev/null +++ b/sim/testsuite/d30v-elf/configure @@ -0,0 +1,833 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.10 +# 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: + +# 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= +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= + +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 + --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" ;; + + -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.10" + 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 LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = set; then LANG=C; export LANG; 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 "$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 +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 $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' + +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 + + + +CC=${CC-cc} + +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 $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 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`$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=`$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 + +target_alias=$target +case "$target_alias" in +NONE) + case $nonopt in + NONE) target_alias=$host_alias ;; + *) target_alias=$nonopt ;; + esac ;; +esac + +target=`$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 + +build_alias=$build +case "$build_alias" in +NONE) + case $nonopt in + NONE) build_alias=$host_alias ;; + *) build_alias=$nonopt ;; + esac ;; +esac + +build=`$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}- + + + + +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 +# 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 | + sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ + >> 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 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# 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.10" + 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 + +trap 'rm -fr `echo "Makefile" | 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%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%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%@CC@%$CC%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 + +CEOF +EOF +cat >> $CONFIG_STATUS <<EOF + +CONFIG_FILES=\${CONFIG_FILES-"Makefile"} +EOF +cat >> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[: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 relative srcdir, etc. 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 + + 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 + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file +fi; done +rm -f conftest.subs + + + +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 + diff --git a/sim/testsuite/d30v-elf/configure.in b/sim/testsuite/d30v-elf/configure.in new file mode 100644 index 0000000..e74389e --- /dev/null +++ b/sim/testsuite/d30v-elf/configure.in @@ -0,0 +1,19 @@ +dnl Process this file file with autoconf to produce a configure script. +dnl This file is a shell script fragment that supplies the information +dnl necessary to tailor a template configure script into the configure +dnl script appropriate for this directory. For more information, check +dnl any existing configure script. + +AC_PREREQ(2.5) +dnl FIXME - think of a truly uniq file to this directory +AC_INIT(Makefile.in) + +CC=${CC-cc} +AC_SUBST(CC) +AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../../..) +AC_CANONICAL_SYSTEM + +AC_SUBST(target_cpu) + + +AC_OUTPUT(Makefile) diff --git a/sim/testsuite/d30v-elf/do-2wordops.S b/sim/testsuite/d30v-elf/do-2wordops.S new file mode 100644 index 0000000..2fa92e6 --- /dev/null +++ b/sim/testsuite/d30v-elf/do-2wordops.S @@ -0,0 +1,80 @@ + # Test macro + + .macro assert reg,value + cmpeq f0,\reg,\value + bra/fx fail + .endm + + .macro nassert reg,value + cmpne f0,\reg,\value + bra/fx fail + .endm + + + # PR 18452 - a.s + + add r1, r0, 0 + add r2,r0,0x11223344 + add r3,r0,0x8899aabb + nop ||mulx2h r0,r2,r3 + + assert r0, 0x0 + assert r1, 0x0 + + # test other double-word loads + + add r2,r0,data + ld2w r0,@(r2,0) + assert r0, 0x0 + assert r1, 0x0 + + add r2,r0,data + ld2h r0,@(r2,0) + assert r0, 0x0 + assert r1, 0x0 + + add r2,r0,data + ld4bh r0,@(r2,0) + assert r0, 0x0 + assert r1, 0x0 + + add r2,r0,data + ld4bhu r0,@(r2,0) + assert r0, 0x0 + assert r1, 0x0 + + + # PR 18679 - a.s + + ld2h r2, @(r0, b) + ld2h r4, @(r0, d) + assert r2, 0x00001111 + assert r3, 0xffff8899 + assert r4, 0x00001111 + assert r5, 0x00002222 + + + # all okay + + bra ok + +ok: + add r2, r0, 0 + .long 0x0e000004 + nop + +fail: + add r2, r0, 47 + .long 0x0e000004 + nop + + # some non-zero data +data: + .long 0x12345678 + .long 0x9abcdef0 + .long 0xdeadbeef + +b: + .word 0x11118899, 0x0 +d: + .word 0x11112222, 0x0 diff --git a/sim/testsuite/d30v-elf/do-flags.S b/sim/testsuite/d30v-elf/do-flags.S new file mode 100644 index 0000000..25797e5 --- /dev/null +++ b/sim/testsuite/d30v-elf/do-flags.S @@ -0,0 +1,241 @@ + # Test macro + + .macro assert reg,value + cmpeq f0,\reg,\value + bra/fx fail + .endm + + + # PR 15964 - a.s + + add r8,r0,0x7fff7fff ; + add r9,r0,0x55555555 ; + add r12,r0,0x11111111 ; + add r1,r0,0x80000011 ; for psw + mvtsys psw,r1 ||nop + addhhhh r12,r8,r9 ||addhlll r13,r12,r12 + mvfsys r20,psw ||nop + mvtsys psw,r1 || add r2,r8, r9 + mvfsys r21,psw ||nop + + assert r20, 0x80000000 + assert r21, 0x80000014 + + + # PR 15964 - b.s + + add r40,r0,0x7fffffff + add r41,r0,0x7fffffff + add r1,r0,0x80000000 ; for psw + mvtsys psw,r1,||nop + cmpeq f1,r40,r41,||cmpeq f0,r40,r41,; + mvfsys r42,psw + + assert r42, 0x80005000 + + + # PR 16993 - a.s + + add r8,r0,0x80005555 ; for psw + add r9,r0,0x80000000 ; for psw + add r40,r0,0x11111111 ; + add r41,r0,0x22222222 ; + add r42,r0,0x00000000 ; + mvtsys psw,r8 ||nop + mvtsys psw,r9 ||add r42,r40,r41,; + + mvfsys r10,psw + assert r10, 0x80000000 + + + # PR 16995 - b.s + + add r8,r0,0x80000000 ; for psw + add r9,r0,0x80005555 ; for psw + add r10,r0,0x00000000 ; + add r40,r0,0x11111111 ; + add r41,r0,0x22222222 ; + add r42,r0,0x00000000 ; + mvtsys psw,r8 ||nop + mvtsys psw,r9 ||add r42,r40,r41,; + + mvfsys r10,psw + assert r10, 0x80005544 + + + # PR 17006 - c.s + + add r8,r0,0x80005555 ; for psw + add r9,r0,0x80000000 ; for psw + add r10,r0,0x00000000 ; + add r40,r0,0x00000011 ; + add r41,r0,0x00000011 ; + mvtsys psw,r8 ||nop + mvtsys psw,r9 ||cmpeq f5,r40,r41,; + + mvfsys r10,psw + assert r10, 0x80000010 + + + # PR 17006 - d.s + + add r9,r0,0x80000000 ; for psw + add r40,r0,0x00000011 ; + add r41,r0,0x00000011 ; + nop ||nop + mvtsys psw, r9 || nop + nop ||nop + nop ||cmpeq f5,r40,r41,; + + mvfsys r10,psw + assert r10, 0x80000010 + + + # PR 17106 - a.s + + ; test 000 ; mvtsys(s=0) || sathl(s=0) prallel execution test + add r8,r0,0x80005555 ; for psw + add r9,r0,0x80000000 ; for psw + add r40,r0,0x00000044 ; + add r41,r0,0x00000008 ; + mvtsys psw,r8 ||nop + mvtsys psw,r9 ||sathl r30,r40,r41,; + mvfsys r20, psw ||nop + ;------------------------------- + ; test 001 ; mvtsys(s=0) || sathl(s=1) prallel execution test + _test_001: + add r40,r0,0x00004444 ; + add r41,r0,0x00000008 ; + mvtsys psw,r8 ||nop + mvtsys psw,r9 ||sathl r31,r40,r41,; + mvfsys r21,psw ||nop + ;------------------------------- + ; test 002 ; mvtsys(s=1) || sathl(s=0) prallel execution test + add r8,r0,0x80000000 ; for psw + add r9,r0,0x80005555 ; for psw + add r40,r0,0x00000044 ; + add r41,r0,0x00000008 ; + mvtsys psw,r8 ||nop + mvtsys psw,r9 ||sathl r32,r40,r41,; + mvfsys r22,psw ||nop + ;------------------------------- + ; test 003 ; mvtsys(s=1) || sathl(s=1) prallel execution test + ; init-reg + add r40,r0,0x00004444 ; + add r41,r0,0x00000008 ; + mvtsys psw,r8 ||nop + mvtsys psw,r9 ||sathl r33,r40,r41,; + mvfsys r23,psw ||nop + + assert r20, 0x80000000 + assert r21, 0x80000040 + assert r22, 0x80005555 + assert r23, 0x80005515 + + + # PR 18288 - a.s + + ;------------------------------------------------------------------------ + ; mvtsys (C =1, V= VA = 0) || addc (C= V= VA =0) + ;------------------------------------------------------------------------ + test_000b: + add r1,r0,1 ||nop ; set C bit + mvtsys psw r0 ||nop + mvtsys psw r1 ||addc r20,r0,1 + mvfsys r10,psw ||nop + ; C changed in MU is not used in IU. + ; IU prevail for resulting C. + ;------------------------------------------------------------------------ + ; mvtsys (V =1, C = VA = 0) || add (C= V= VA =0) + ;------------------------------------------------------------------------ + test_001b: + add r1,r0,0x10 ||nop ; set V bit + mvtsys psw r0 ||nop + mvtsys psw r1 ||add r0,r0,r0 + mvfsys r11,psw ||nop + ; IU prevail for resulting V. + ;------------------------------------------------------------------------ + ; mvtsys (V = C= VA = 0) || add (C=0,V= VA =1) + ;------------------------------------------------------------------------ + test_002b: + add r1,r0,0x70000000 + add r2,r0,0x30000000 + mvtsys psw r0 ||nop + mvtsys psw r0 ||add r0,r1,r2 + mvfsys r12,psw ||nop + ; IU prevail for resulting V. + ; VA is set(OR'ed) + ;------------------------------------------------------------------------ + ; mvtsys (C= 0 V = VA = 1) || add (C= V= VA =0) + ;------------------------------------------------------------------------ + test_003b: + add r1,r0,0x14 ||nop ; set V and VA bit + mvtsys psw r0 ||nop + mvtsys psw r1 ||add r0,r0,r0 + mvfsys r13,psw ||nop + ; IU prevail for resulging V + ; VA is set(OR'ed) + ;------------------------------------------------------------------------ + ; mvtsys (f3 =1) || orfg (f3) : GROUP_B + ;------------------------------------------------------------------------ + test_004b: + add r1,r0,0x100 ; set f3 + mvtsys psw r0 ||nop + mvtsys psw,r1 ||orfg f3,f3,0 + mvfsys r14,psw ||nop + ; results of IU prevail. + ;------------------------------------------------------------------------ + ; mvtsys (f4 =1) || sathp + ;------------------------------------------------------------------------ + test_005b: + add r1,r0,0x40 ; set f4 + mvtsys psw r0 ||nop + mvtsys psw r1 ||sathl r2,r1,3 + mvfsys r15,psw ||nop + ; results of MU is used in IU + + assert r20, 0x1 + assert r10, 0x0 + assert r11, 0x0 + assert r12, 0x14 + assert r13, 0x4 + assert r14, 0x0 + assert r15, 0x0 + + + # PR 18288 - b.s + add r7,r0,0x80000000 + mvtsys psw,r7 || nop + + add r8,r0,0x7fff7fff ; + add r9,r0,0x55555555 ; + add r12,r0,0x11111111 ; + add r13,r0,0x00000000 ; + addhhhh r12,r8,r9 ||addhlll r13,r12,r12 + mvfsys r60,psw ||nop + ;------------------------------------------ + add r20,r0,0x66666666 ; + add r21,r0,0x77777777 ; + add r40,r0,0x22222222 ; + add r41,r0,0x55555555 ; + add r22,r20,r21 ||add r42,r40,r41,; + mvfsys r61,psw ||nop + + assert r60, 0x80000000 + assert r61, 0x80000000 + + + + # all okay + + bra ok + +ok: + add r2, r0, 0 + .long 0x0e000004 + nop + +fail: + add r2, r0, 47 + .long 0x0e000004 + nop diff --git a/sim/testsuite/d30v-elf/do-shifts.S b/sim/testsuite/d30v-elf/do-shifts.S new file mode 100644 index 0000000..1f0129f --- /dev/null +++ b/sim/testsuite/d30v-elf/do-shifts.S @@ -0,0 +1,182 @@ + # Test macro + + .macro assert reg,value + cmpeq f0,\reg,\value + bra/fx fail + .endm + + + # PR 14580 - a.s + + add r8,r0,0x11112222 + add r9,r0,-32 + sra r1,r8,r9 ||nop + sra r2,r8,-32 ||nop + srl r3,r8,r9 ||nop + srl r4,r8,-32 ||nop + + assert r1, 0 + assert r2, 0 + assert r3, 0 + assert r4, 0 + + + # PR 17266 - a.s + + add r20, r0, 0xffffffff + add r21, r0, 0xffffffff + add r22, r0, 0xffffffff + add r23, r0, 0xffffffff + add r1, r0, 0x12345678 + add r2, r0, -33 + srahh r20, r1, r2 + srahl r21, r1, r2 + srlhh r22, r1, r2 + srlhl r23, r1, r2 + sra r24, r1, r2 + srl r25, r1, r2 + rot r26, r1, r2 + + assert r20, 0xacf0ffff + assert r21, 0xffffacf0 + assert r22, 0xacf0ffff + assert r23, 0xffffacf0 + assert r24, 0x2468acf0 + assert r25, 0x2468acf0 + assert r26, 0x2468acf0 + + + # PR 17266 - a2.s + + add r20, r0, 0xffffffff + add r21, r0, 0xffffffff + add r22, r0, 0xffffffff + add r23, r0, 0xffffffff + add r1, r0, 0x12345678 + add r2, r0, -17 + sra2h r20, r1, r2 + srl2h r21, r1, r2 + rot2h r22, r1, r2 + + assert r20, 0x2468acf0 + assert r21, 0x2468acf0 + assert r22, 0x2468acf0 + + + # PR 17685 - a.s + + add r20,r0,r0 + add r21,r0,r0 + add r22,r0,r0 + add r23,r0,r0 + add r24,r0,r0 + add r25,r0,r0 + add r30,r0,r0 + add r31,r0,r0 + + add r8,r0,0x55555555 + add r9,r0,0x1f + sra r20,r8,r9 ||nop + srl r21,r8,r9 ||nop + srahh r22,r8,r9 ||nop + srahl r23,r8,r9 ||nop + srlhh r24,r8,r9 ||nop + srlhl r25,r8,r9 ||nop + + add r8,r0,0x5555aaaa + add r9,r0,0x000ffff1 + sra2h r30,r8,r9 ||nop + srl2h r31,r8,r9 ||nop + + assert r20, 0 + assert r21, 0 + assert r22, 0 + assert r23, 0 + assert r24, 0 + assert r25, 0 + assert r30, 0 + assert r31, 0 + + + # PR 18196 - a.s + + add r1,r0,0xfedcba98 + add r2,r0,0x76543210 + add r3,r0,0x41 + add r4,r0,1 + nop || mvtacc a0 r1,r2 + nop || mvfacc r10,a0 r3 + nop || mvfacc r11,a0 r4 + + assert r10, 0x3b2a1908 + assert r11, 0x3b2a1908 + + + # PR 18329 - a.s + + add r10,r0,0 || add r2,r0,-1 + add r11,r0,0 || add r12,r0,0 + add r13,r0,0 || add r14,r0,0 + add r15,r0,0 || add r16,r0,0 + add r17,r0,0 || add r18,r0,0 + + add r3,r0,0x00000020 ; 32 + src r10,r2,r3 + add r3,r0,0x00000021 ; 33 + src r11,r2,r3 + add r3,r0,0x0000003f ; 63 + src r12,r2,r3 + add r3,r0,0x00000040 ;64 + src r13,r2,r3 + add r3,r0,0x00000041 ;65 + src r14,r2,r3 + + add r3,r0,0xffffffdf ;-33 + src r15,r2,r3 + add r3,r0,0xffffffc1 ;-63 + src r16,r2,r3 + add r3,r0,0xffffffc0 ;-64 + src r17,r2,r3 + add r3,r0,0xffffffbf ;-65 + src r18,r2,r3 + + assert r10, 0x00000000 + assert r11, 0x80000000 + assert r12, 0xfffffffe + assert r13, 0x00000000 + assert r14, 0x80000000 + assert r15, 0x00000001 + assert r16, 0x7fffffff + assert r17, 0xffffffff + assert r18, 0x00000001 + + + # PR 18364 - b.s + + add r1,r0,0x12345678 + add r2,r0,0x9abcdef0 + add r3,r0,0xffffffe0 ; -32 + add r4,r0,0xffffffc0 ; -64 + src r1,r2,r3 ||nop + add r10,r1,r0 ||nop + add r1,r0,0x12345678 + src r1,r2,r4 ||nop + add r11,r1,r0 ||nop + + assert r10, 0x9abcdef0 + assert r11, 0x9abcdef0 + + + # all okay + + bra ok + +ok: + add r2, r0, 0 + .long 0x0e000004 + nop + +fail: + add r2, r0, 47 + .long 0x0e000004 + nop diff --git a/sim/testsuite/d30v-elf/em-e0.S b/sim/testsuite/d30v-elf/em-e0.S new file mode 100644 index 0000000..d2e9335 --- /dev/null +++ b/sim/testsuite/d30v-elf/em-e0.S @@ -0,0 +1,4 @@ +# Verify that the exit call works + add r2, r0, 0 || nop + .long 0x0e000004 + nop diff --git a/sim/testsuite/d30v-elf/em-e47.S b/sim/testsuite/d30v-elf/em-e47.S new file mode 100644 index 0000000..9830ffb --- /dev/null +++ b/sim/testsuite/d30v-elf/em-e47.S @@ -0,0 +1,4 @@ +# Verify r2 = 47; exit(r47) works + add r2, r0, 47 + .long 0x0e000004 + nop diff --git a/sim/testsuite/d30v-elf/em-pchr.S b/sim/testsuite/d30v-elf/em-pchr.S new file mode 100644 index 0000000..6b38b0b --- /dev/null +++ b/sim/testsuite/d30v-elf/em-pchr.S @@ -0,0 +1,28 @@ + + add r2, r0, 'H' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'e' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'l' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'l' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'o' + .long 0x0e000003, 0x00f00000 + add r2, r0, ' ' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'W' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'o' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'r' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'l' + .long 0x0e000003, 0x00f00000 + add r2, r0, 'd' + .long 0x0e000003, 0x00f00000 + add r2, r0, '\n' || nop + .long 0x0e000003, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/em-pstr.S b/sim/testsuite/d30v-elf/em-pstr.S new file mode 100644 index 0000000..4612c35 --- /dev/null +++ b/sim/testsuite/d30v-elf/em-pstr.S @@ -0,0 +1,8 @@ + add r2, r0, hello + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + +hello: .ascii "Hello World\n" diff --git a/sim/testsuite/d30v-elf/exit47.s b/sim/testsuite/d30v-elf/exit47.s new file mode 100644 index 0000000..9830ffb --- /dev/null +++ b/sim/testsuite/d30v-elf/exit47.s @@ -0,0 +1,4 @@ +# Verify r2 = 47; exit(r47) works + add r2, r0, 47 + .long 0x0e000004 + nop diff --git a/sim/testsuite/d30v-elf/hello.s b/sim/testsuite/d30v-elf/hello.s new file mode 100644 index 0000000..261629e --- /dev/null +++ b/sim/testsuite/d30v-elf/hello.s @@ -0,0 +1,9 @@ + + add r2, r0, hello + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + +hello: .ascii "Hello World\r\n" diff --git a/sim/testsuite/d30v-elf/loop.s b/sim/testsuite/d30v-elf/loop.s new file mode 100644 index 0000000..69f2692 --- /dev/null +++ b/sim/testsuite/d30v-elf/loop.s @@ -0,0 +1 @@ +loop: bra loop diff --git a/sim/testsuite/d30v-elf/ls-ld2h.S b/sim/testsuite/d30v-elf/ls-ld2h.S new file mode 100644 index 0000000..fade14e --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ld2h.S @@ -0,0 +1,11 @@ + # compute 17(mem) + 30(mem+2) = 47 + add r3, r0, 4 || nop + ld2h r2, @(r3,60) + add r2, r2, r3 || nop + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte 0, 17, 0, 30 diff --git a/sim/testsuite/d30v-elf/ls-ld2w.S b/sim/testsuite/d30v-elf/ls-ld2w.S new file mode 100644 index 0000000..5b564cc --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ld2w.S @@ -0,0 +1,12 @@ + # compute 17(mem) + 30(mem+4) = 47 + add r3, r0, 4 || nop + ld2w r2, @(r3,60) + add r2, r2, r3 || nop + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte 0, 0, 0, 17 + .byte 0, 0, 0, 30 diff --git a/sim/testsuite/d30v-elf/ls-ld4bh.S b/sim/testsuite/d30v-elf/ls-ld4bh.S new file mode 100644 index 0000000..6f22ceb --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ld4bh.S @@ -0,0 +1,12 @@ + # compute lo : 17(mem+1) + 30(mem+3) = 47 + # compute hi : -1(mem) + 1(mem+2) = 0 + add r3, r0, 4 || nop + ld4bh r2, @(r3,60) + add r2, r2, r3 || nop + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte -1, 17, 1, 30 diff --git a/sim/testsuite/d30v-elf/ls-ld4bhu.S b/sim/testsuite/d30v-elf/ls-ld4bhu.S new file mode 100644 index 0000000..4d0a9a3 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ld4bhu.S @@ -0,0 +1,11 @@ + # compute lo : 48(mem+1) + 255(mem+3) - 256 = 47 + add r3, r0, 4 || nop + ld4bhu r2, @(r3,60) + add r2, r2, r3 || nop + sub r2, r2, 0x100 + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte 0, 48, 0, 255 diff --git a/sim/testsuite/d30v-elf/ls-ldb.S b/sim/testsuite/d30v-elf/ls-ldb.S new file mode 100644 index 0000000..c6164ce --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ldb.S @@ -0,0 +1,11 @@ + # compute -2(from mem) + 49 = 47 + add r3, r0, 4 || nop + ldb r2, @(r3,60) + add r2, r2, 49 + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte -2, 0xff, 0xff, 0xff diff --git a/sim/testsuite/d30v-elf/ls-ldbu.S b/sim/testsuite/d30v-elf/ls-ldbu.S new file mode 100644 index 0000000..153d6a4 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ldbu.S @@ -0,0 +1,11 @@ + # compute 254(mem) - 207 = 47 + add r3, r0, 4 || nop + ldbu r2, @(r3,60) + sub r2, r2, 207 + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte -2, 0xff, 0xff, 0xff diff --git a/sim/testsuite/d30v-elf/ls-ldh.S b/sim/testsuite/d30v-elf/ls-ldh.S new file mode 100644 index 0000000..0650bc0 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ldh.S @@ -0,0 +1,11 @@ + # load the 47@addr=60 below into r2 + add r3, r0, 4 || nop + ldh r2, @(r3,60) + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte 0, 47, 0xff, 0xff diff --git a/sim/testsuite/d30v-elf/ls-ldhh.S b/sim/testsuite/d30v-elf/ls-ldhh.S new file mode 100644 index 0000000..146daef --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ldhh.S @@ -0,0 +1,11 @@ + # compute (47 || 0|16) >> 16 + add r3, r0, 4 || nop + ldhh r2, @(r3,60) + srl r2, r2, 16 || nop + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte 0, 47, 0xff, 0xff diff --git a/sim/testsuite/d30v-elf/ls-ldhu.S b/sim/testsuite/d30v-elf/ls-ldhu.S new file mode 100644 index 0000000..b4f50e2 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ldhu.S @@ -0,0 +1,11 @@ + # compute 254(mem) - 207 = 47 + add r3, r0, 4 || nop + ldhu r2, @(r3,60) + sub r2, r2, 207 + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long -1, -1 +# address 64 - remember target is BE + .byte 0xff, -2, 0xff, 0xff diff --git a/sim/testsuite/d30v-elf/ls-ldw.S b/sim/testsuite/d30v-elf/ls-ldw.S new file mode 100644 index 0000000..78d2ebf --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-ldw.S @@ -0,0 +1,11 @@ + # load the 47@addr=60 below into r2 + add r3, r0, 4 || nop + ldw r2, @(r3,60) + .long 0x0e000004, 0x00f00000 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long 0, 0 + .long 0, 0 +# address 64 - remember target is BE + .byte 0, 0, 0, 47 diff --git a/sim/testsuite/d30v-elf/ls-modaddr.S b/sim/testsuite/d30v-elf/ls-modaddr.S new file mode 100644 index 0000000..30d28ab --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-modaddr.S @@ -0,0 +1,56 @@ + ; Modular address postincrement/postdecrement test + +start: + ; program PSW for modular address mode + add r1,r0,0x81000000 + nop || nop + mvtsys psw,r1 || nop + nop || nop + +test1: + ; set modular address limits: 0x18 bytes + add r1,r0,0x20000070 ; [start, ... + nop || nop + mvtsys mod_s,r1 || nop + nop || nop + add r1,r0,0x20000088 ; ..., end) + nop || nop + mvtsys mod_e,r1 || nop + + ; modular autoincrement test + add r30,r0,0x20000070 ; base address = mod_s + ld2w r40,@(r30+,r0) || nop ; after: r30 = ...078 + ld2w r40,@(r30+,r0) || nop ; after: r30 = ...080 + ld2w r40,@(r30+,r0) || nop ; after: r30 = ...070 + + add r29,r0,0x20000070 ; expected end address; wrapping around + cmpeq f1,r30,r29 + bra/xf fail + +test2: + ; set modular address limits: 0x18 bytes + add r1,r0,0x20000088 ; [start, ... + nop || nop + mvtsys mod_s,r1 || nop + nop || nop + add r1,r0,0x20000070 ; ..., end) + nop || nop + mvtsys mod_e,r1 || nop + + ; modular autodecrement test + add r30,r0,0x20000088 ; base address = mod_s + ld2w r40,@(r30-,r0) || nop ; after: r30 = ...080 + ld2w r40,@(r30-,r0) || nop ; after: r30 = ...078 + ld2w r40,@(r30-,r0) || nop ; after: r30 = ...088 + + add r29,r0,0x20000088 ; expected end address; wrapping around + cmpeq f1,r30,r29 + bra/xf fail + +ok: + add r2,r0,0 + .long 0x0e000004, 0x00f00000 + +fail: + add r2,r0,47 + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/ls-moddec.S b/sim/testsuite/d30v-elf/ls-moddec.S new file mode 100644 index 0000000..f1b9143 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-moddec.S @@ -0,0 +1,3 @@ + add r2, r0, 50 + moddec r2, 3 || nop + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/ls-modinc.S b/sim/testsuite/d30v-elf/ls-modinc.S new file mode 100644 index 0000000..520c3f6 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-modinc.S @@ -0,0 +1,3 @@ + add r2, r0, 40 + modinc r2, 7 || nop + .long 0x0e000004, 0x00f00000 diff --git a/sim/testsuite/d30v-elf/ls-st2h.S b/sim/testsuite/d30v-elf/ls-st2h.S new file mode 100644 index 0000000..d8c4b19 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-st2h.S @@ -0,0 +1,13 @@ + add r2, r0, hello + add r4, r0, ('H' << 8) + 'e' + add r5, r0, ('l' << 8) + 'l' + st2h r4, @(r2,0) || nop + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + .align 3 +hello: + .ascii "????o World\n" diff --git a/sim/testsuite/d30v-elf/ls-st2w.S b/sim/testsuite/d30v-elf/ls-st2w.S new file mode 100644 index 0000000..0cd8b66 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-st2w.S @@ -0,0 +1,13 @@ + add r2, r0, hello + add r4, r0, ('H' << 24) + ('e' << 16) + ('l' << 8) + ('l' << 0) + add r5, r0, ('o' << 24) + (' ' << 16) + ('W' << 8) + ('o' << 0) + st2w r4, @(r2,0) || nop + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + .align 3 +hello: + .ascii "????....rld\n" diff --git a/sim/testsuite/d30v-elf/ls-st4hb.S b/sim/testsuite/d30v-elf/ls-st4hb.S new file mode 100644 index 0000000..bf80225 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-st4hb.S @@ -0,0 +1,13 @@ + add r2, r0, hello + add r4, r0, ('H' << 16) + ('e' << 0) + add r5, r0, ('l' << 16) + ('l' << 0) + st4hb r4, @(r2,0) || nop + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + .align 3 +hello: + .ascii "????o World\n" diff --git a/sim/testsuite/d30v-elf/ls-stb.S b/sim/testsuite/d30v-elf/ls-stb.S new file mode 100644 index 0000000..720a85b --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-stb.S @@ -0,0 +1,12 @@ + add r2, r0, hello + add r4, r0, 'H' + stb r4, @(r2,0) || nop + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + .align 3 +hello: + .ascii "?ello World\n" diff --git a/sim/testsuite/d30v-elf/ls-sth.S b/sim/testsuite/d30v-elf/ls-sth.S new file mode 100644 index 0000000..ff23640 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-sth.S @@ -0,0 +1,12 @@ + add r2, r0, hello + add r4, r0, ('H' << 8) + ('e' << 0) + sth r4, @(r2,0) || nop + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + .align 3 +hello: + .ascii "??llo World\n" diff --git a/sim/testsuite/d30v-elf/ls-sthh.S b/sim/testsuite/d30v-elf/ls-sthh.S new file mode 100644 index 0000000..071f309 --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-sthh.S @@ -0,0 +1,12 @@ + add r2, r0, hello + add r4, r0, ('H' << 24) + ('e' << 16) + sthh r4, @(r2,0) || nop + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + .align 3 +hello: + .ascii "??llo World\n" diff --git a/sim/testsuite/d30v-elf/ls-stw.S b/sim/testsuite/d30v-elf/ls-stw.S new file mode 100644 index 0000000..ac17f2a --- /dev/null +++ b/sim/testsuite/d30v-elf/ls-stw.S @@ -0,0 +1,12 @@ + add r2, r0, hello + add r4, r0, ('H' << 24) + ('e' << 16) + ('l' << 8) + ('l' << 0) + stw r4, @(r2,0) || nop + # putstr + .long 0x0e000001, 0x00f00000 + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + .align 3 +hello: + .ascii "????o World\n" diff --git a/sim/testsuite/d30v-elf/os-dbt.S b/sim/testsuite/d30v-elf/os-dbt.S new file mode 100644 index 0000000..3468867 --- /dev/null +++ b/sim/testsuite/d30v-elf/os-dbt.S @@ -0,0 +1,38 @@ + .globl _start + # + # NOTE: Registers r10-r11 are reserved for the interrupt handler + # while the others can be used by the main loop/start code. + +_start: + # patch the DBT handler + add r1, r0, handler + ldw r2, @(r1, 0) + ldw r3, @(r1, 4) + # DBT vector address + add r1, r0, 0xfffff120 + stw r2, @(r1, 0) + stw r3, @(r1, 4) + + # try out the breakpoint/return + add r2, r0, 47 + #dbt + nop + .long 0x00b00000 + nop + + # exit with what ever the breakpoint hander set r2 to. + nop + .long 0x0e000004 + nop + +handler: + jmp real_handler + + # The Breakpoint handler sets r2 to 0 if PSW was set correctly. +real_handler: + mvfsys r2, cr0 + sub r2, r0, 0x08000000 + #rtd + nop + .long 0x00a00000 + nop diff --git a/sim/testsuite/d30v-elf/tick.s b/sim/testsuite/d30v-elf/tick.s new file mode 100644 index 0000000..d834ca7 --- /dev/null +++ b/sim/testsuite/d30v-elf/tick.s @@ -0,0 +1,51 @@ + .globl _start + # + # NOTE: Registers r10-r11 are reserved for the interrupt handler + # while the others can be used by the main loop/start code. + +_start: + # patch the external interrupt handlers entry + add r1, r0, handler + ldw r2, @(r1, 0) + ldw r3, @(r1, 4) + add r1, r0, 0xfffff138 + stw r2, @(r1, 0) + stw r3, @(r1, 4) + + # enable external interrupts - cr0 == PSW + mvfsys r2, cr0 + or r2, r0, 0x04000000 + mvtsys cr0, r2 + + + # wait for flag to be set +loop: + add r2, r0, flag + ldw r3, @(r2, 0) + bratzr r3, loop + + # clear the flag + stw r0, @(r2, 0) + + add r2, r0, tick + # putstr + .long 0x0e000001, 0x00f00000 + + bra loop + + # finished + add r2, r0, r0 || nop + .long 0x0e000004, 0x00f00000 + + +handler: + jmp real_handler +real_handler: + add r10, r0, 1 + add r11, r0, flag + stb r10, @(r11,0) + reit + + +flag: .long 0 +tick: .ascii "Tick\r\n" diff --git a/sim/testsuite/d30v-elf/trap.S b/sim/testsuite/d30v-elf/trap.S new file mode 100644 index 0000000..08399f9 --- /dev/null +++ b/sim/testsuite/d30v-elf/trap.S @@ -0,0 +1,35 @@ +# verify that trap || cmp works + add r8,r0,0x11223344 ; + add r9,r0,0x11223344 ; + + mvtsys bpsw,r0 || nop + mvtsys bpc,r0 || nop + + add r1,r0,0x97000555 ; for psw + mvtsys psw,r1 || nop + trap 0 || cmpeq f0,r8,r9,; + + .long 0x0e000004, 0x00f00000 + + .section .eit_v, "a" + nop || nop + nop || nop + nop || nop + nop || nop + +# save the old bpsw, psw + mvfsys r4,bpsw || nop + mvfsys r5,psw || nop + +# load up what they should be + add r6,r0,0x97004555 + add r7,r0,0x90000000 + +# verify that they have the right values +# return exit value in r2 -- 0 success, 47 failure + add r2,r0,47 + cmpeq f0,r4,r6 || nop + cmpeq f1,r5,r7 || nop + add/tt r2,r0,r0 || nop + + reit |