sim: m32c: add a basic testsuite

Message ID 1447567001-9930-1-git-send-email-vapier@gentoo.org
State Committed
Headers

Commit Message

Mike Frysinger Nov. 15, 2015, 5:56 a.m. UTC
  Committed.
---
 sim/testsuite/sim/m32c/ChangeLog     |  6 ++++
 sim/testsuite/sim/m32c/allinsn.exp   | 16 +++++++++++
 sim/testsuite/sim/m32c/fail.s        |  9 ++++++
 sim/testsuite/sim/m32c/pass.s        |  8 ++++++
 sim/testsuite/sim/m32c/testutils.inc | 53 ++++++++++++++++++++++++++++++++++++
 5 files changed, 92 insertions(+)
 create mode 100644 sim/testsuite/sim/m32c/allinsn.exp
 create mode 100644 sim/testsuite/sim/m32c/fail.s
 create mode 100644 sim/testsuite/sim/m32c/pass.s
 create mode 100644 sim/testsuite/sim/m32c/testutils.inc
  

Patch

diff --git a/sim/testsuite/sim/m32c/ChangeLog b/sim/testsuite/sim/m32c/ChangeLog
index 2c28054..8437919 100644
--- a/sim/testsuite/sim/m32c/ChangeLog
+++ b/sim/testsuite/sim/m32c/ChangeLog
@@ -1,3 +1,9 @@ 
+2015-11-14  Mike Frysinger  <vapier@gentoo.org>
+
+	* allinsn.exp: New file.
+	* fail.s, pass.s: New tests.
+	* testutils.inc: New test helper logic.
+
 2015-11-09  Mike Frysinger  <vapier@gentoo.org>
 
 	* blinky.s: Moved from ../../../m32c/.
diff --git a/sim/testsuite/sim/m32c/allinsn.exp b/sim/testsuite/sim/m32c/allinsn.exp
new file mode 100644
index 0000000..fb5ccca
--- /dev/null
+++ b/sim/testsuite/sim/m32c/allinsn.exp
@@ -0,0 +1,16 @@ 
+# M32C simulator testsuite.
+# TODO: Add support for .c tests.
+
+if [istarget m32c*-*-*] {
+    # all machines
+    set all_machs "m32c"
+
+    foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.s]] {
+	# If we're only testing specific files and this isn't one of them,
+	# skip it.
+	if ![runtest_file_p $runtests $src] {
+	    continue
+	}
+	run_sim_test $src $all_machs
+    }
+}
diff --git a/sim/testsuite/sim/m32c/fail.s b/sim/testsuite/sim/m32c/fail.s
new file mode 100644
index 0000000..5066bce
--- /dev/null
+++ b/sim/testsuite/sim/m32c/fail.s
@@ -0,0 +1,9 @@ 
+# check that the sim doesn't die immediately.
+# mach: m32c
+# ld: -T$srcdir/$subdir/sample.ld
+# xerror:
+
+.include "testutils.inc"
+
+	start
+	fail
diff --git a/sim/testsuite/sim/m32c/pass.s b/sim/testsuite/sim/m32c/pass.s
new file mode 100644
index 0000000..9f39ac0
--- /dev/null
+++ b/sim/testsuite/sim/m32c/pass.s
@@ -0,0 +1,8 @@ 
+# check that the sim doesn't die immediately.
+# mach: m32c
+# ld: -T$srcdir/$subdir/sample.ld
+
+.include "testutils.inc"
+
+	start
+	pass
diff --git a/sim/testsuite/sim/m32c/testutils.inc b/sim/testsuite/sim/m32c/testutils.inc
new file mode 100644
index 0000000..fa6f5a9
--- /dev/null
+++ b/sim/testsuite/sim/m32c/testutils.inc
@@ -0,0 +1,53 @@ 
+# MACRO: exit
+	.macro exit nr
+	mov.w \nr, r1;
+	# Trap function 1: exit().
+	mov.b #1, r0l;
+	ste.b r0l, 0x400;
+	.endm
+
+# MACRO: pass
+# Write 'pass' to stdout and quit
+	.macro pass
+	# Use stdout.
+	mov.w #1, r1;
+	# Point to the string.
+	mov.w #1f, r2;
+	# Number of bytes to write; push onto stack.
+	push.w #5;
+	# Adjust as the sim expects 3 byte offset. (!?)
+	add.w #-3, sp;
+	# Trap function 5: write().
+	mov.b #5, r0l;
+	ste.b r0l, 0x400;
+	exit #0
+	.data
+	1: .asciz "pass\n"
+	.endm
+
+# MACRO: fail
+# Write 'fail' to stdout and quit
+	.macro fail
+	# Use stdout.
+	mov.w #1, r1;
+	# Point to the string.
+	mov.w #1f, r2;
+	# Number of bytes to write; push onto stack.
+	push.w #5;
+	# Adjust as the sim expects 3 byte offset. (!?)
+	add.w #-3, sp;
+	# Trap function 5: write().
+	mov.b #5, r0l;
+	ste.b r0l, 0x400;
+	exit #1
+	.data
+	1: .asciz "fail\n"
+	.endm
+
+# MACRO: start
+# All assembler tests should start with a call to "start"
+	.macro start
+	.text
+.global _start
+_start:
+	.endm