sim: m32c: add a basic testsuite
authorMike Frysinger <vapier@gentoo.org>
Mon, 9 Nov 2015 06:16:01 +0000 (01:16 -0500)
committerMike Frysinger <vapier@gentoo.org>
Sun, 15 Nov 2015 05:56:09 +0000 (00:56 -0500)
sim/testsuite/sim/m32c/ChangeLog
sim/testsuite/sim/m32c/allinsn.exp [new file with mode: 0644]
sim/testsuite/sim/m32c/fail.s [new file with mode: 0644]
sim/testsuite/sim/m32c/pass.s [new file with mode: 0644]
sim/testsuite/sim/m32c/testutils.inc [new file with mode: 0644]

index 2c28054548abf04e787357dc96907223ea4e0c6f..843791965610585edde1d8cad765e47a25226168 100644 (file)
@@ -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 (file)
index 0000000..fb5ccca
--- /dev/null
@@ -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 (file)
index 0000000..5066bce
--- /dev/null
@@ -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 (file)
index 0000000..9f39ac0
--- /dev/null
@@ -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 (file)
index 0000000..fa6f5a9
--- /dev/null
@@ -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