aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/d30v-elf
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>1999-04-16 01:35:26 +0000
committerStan Shebs <shebs@codesourcery.com>1999-04-16 01:35:26 +0000
commitc906108c21474dfb4ed285bcc0ac6fe02cd400cc (patch)
treea0015aa5cedc19ccbab307251353a41722a3ae13 /sim/testsuite/d30v-elf
parentcd946cff9ede3f30935803403f06f6ed30cad136 (diff)
downloadgdb-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')
-rw-r--r--sim/testsuite/d30v-elf/ChangeLog60
-rw-r--r--sim/testsuite/d30v-elf/Makefile.in217
-rw-r--r--sim/testsuite/d30v-elf/br-bra.S12
-rw-r--r--sim/testsuite/d30v-elf/br-bratnz.S12
-rw-r--r--sim/testsuite/d30v-elf/br-bratzr.S12
-rw-r--r--sim/testsuite/d30v-elf/br-bsr.S12
-rw-r--r--sim/testsuite/d30v-elf/br-dbra.S83
-rw-r--r--sim/testsuite/d30v-elf/br-djmp.S83
-rw-r--r--sim/testsuite/d30v-elf/br-djsr.S79
-rwxr-xr-xsim/testsuite/d30v-elf/configure833
-rw-r--r--sim/testsuite/d30v-elf/configure.in19
-rw-r--r--sim/testsuite/d30v-elf/do-2wordops.S80
-rw-r--r--sim/testsuite/d30v-elf/do-flags.S241
-rw-r--r--sim/testsuite/d30v-elf/do-shifts.S182
-rw-r--r--sim/testsuite/d30v-elf/em-e0.S4
-rw-r--r--sim/testsuite/d30v-elf/em-e47.S4
-rw-r--r--sim/testsuite/d30v-elf/em-pchr.S28
-rw-r--r--sim/testsuite/d30v-elf/em-pstr.S8
-rw-r--r--sim/testsuite/d30v-elf/exit47.s4
-rw-r--r--sim/testsuite/d30v-elf/hello.s9
-rw-r--r--sim/testsuite/d30v-elf/loop.s1
-rw-r--r--sim/testsuite/d30v-elf/ls-ld2h.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-ld2w.S12
-rw-r--r--sim/testsuite/d30v-elf/ls-ld4bh.S12
-rw-r--r--sim/testsuite/d30v-elf/ls-ld4bhu.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-ldb.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-ldbu.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-ldh.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-ldhh.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-ldhu.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-ldw.S11
-rw-r--r--sim/testsuite/d30v-elf/ls-modaddr.S56
-rw-r--r--sim/testsuite/d30v-elf/ls-moddec.S3
-rw-r--r--sim/testsuite/d30v-elf/ls-modinc.S3
-rw-r--r--sim/testsuite/d30v-elf/ls-st2h.S13
-rw-r--r--sim/testsuite/d30v-elf/ls-st2w.S13
-rw-r--r--sim/testsuite/d30v-elf/ls-st4hb.S13
-rw-r--r--sim/testsuite/d30v-elf/ls-stb.S12
-rw-r--r--sim/testsuite/d30v-elf/ls-sth.S12
-rw-r--r--sim/testsuite/d30v-elf/ls-sthh.S12
-rw-r--r--sim/testsuite/d30v-elf/ls-stw.S12
-rw-r--r--sim/testsuite/d30v-elf/os-dbt.S38
-rw-r--r--sim/testsuite/d30v-elf/tick.s51
-rw-r--r--sim/testsuite/d30v-elf/trap.S35
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