aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/m32c
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/m32c')
-rw-r--r--sim/testsuite/m32c/ChangeLog10
-rw-r--r--sim/testsuite/m32c/allinsn.exp16
-rw-r--r--sim/testsuite/m32c/blinky.s34
-rw-r--r--sim/testsuite/m32c/fail.s9
-rw-r--r--sim/testsuite/m32c/gloss.s32
-rw-r--r--sim/testsuite/m32c/pass.s8
-rw-r--r--sim/testsuite/m32c/sample.ld41
-rw-r--r--sim/testsuite/m32c/sample.s27
-rw-r--r--sim/testsuite/m32c/sample2.c29
-rw-r--r--sim/testsuite/m32c/testutils.inc53
10 files changed, 259 insertions, 0 deletions
diff --git a/sim/testsuite/m32c/ChangeLog b/sim/testsuite/m32c/ChangeLog
new file mode 100644
index 0000000..8437919
--- /dev/null
+++ b/sim/testsuite/m32c/ChangeLog
@@ -0,0 +1,10 @@
+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/.
+ * gloss.s, sample.ld, sample.s, sample2.c: Likewise.
diff --git a/sim/testsuite/m32c/allinsn.exp b/sim/testsuite/m32c/allinsn.exp
new file mode 100644
index 0000000..fb5ccca
--- /dev/null
+++ b/sim/testsuite/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/m32c/blinky.s b/sim/testsuite/m32c/blinky.s
new file mode 100644
index 0000000..1dbad97
--- /dev/null
+++ b/sim/testsuite/m32c/blinky.s
@@ -0,0 +1,34 @@
+;;; blinky.s --- sample program to blink LED's on M32C simulator
+;;;
+;;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
+;;; Contributed by Red Hat, Inc.
+;;;
+;;; This file is part of the GNU simulators.
+;;;
+;;; This program is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ .text
+
+ .global _start
+_start:
+ mov.w #0xe1,a0
+top:
+ sub.w #1,r0
+ mov.b r0h,[a0]
+
+ mov.w #1000,r1
+loop:
+ adjnz.w #-1,r1,loop
+
+ jmp.w top
diff --git a/sim/testsuite/m32c/fail.s b/sim/testsuite/m32c/fail.s
new file mode 100644
index 0000000..5066bce
--- /dev/null
+++ b/sim/testsuite/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/m32c/gloss.s b/sim/testsuite/m32c/gloss.s
new file mode 100644
index 0000000..ce03774
--- /dev/null
+++ b/sim/testsuite/m32c/gloss.s
@@ -0,0 +1,32 @@
+;;; gloss.s --- system calls for sample2.x
+;;;
+;;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
+;;; Contributed by Red Hat, Inc.
+;;;
+;;; This file is part of the GNU simulators.
+;;;
+;;; This program is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; See the 'sample2.x' target in Makefile.in.
+ .global _exit
+_exit:
+ mov.b #1,r0l
+ ste.b r0l,0xe0000
+ rts
+
+ .global _foo
+_foo:
+ mov.b #2,r0l
+ ste.b r0l,0xe0000
+ rts
diff --git a/sim/testsuite/m32c/pass.s b/sim/testsuite/m32c/pass.s
new file mode 100644
index 0000000..9f39ac0
--- /dev/null
+++ b/sim/testsuite/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/m32c/sample.ld b/sim/testsuite/m32c/sample.ld
new file mode 100644
index 0000000..112012a
--- /dev/null
+++ b/sim/testsuite/m32c/sample.ld
@@ -0,0 +1,41 @@
+/* sample2.ld --- linker script for sample2.x
+
+Copyright (C) 2005-2021 Free Software Foundation, Inc.
+Contributed by Red Hat, Inc.
+
+This file is part of the GNU simulators.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* See the 'sample2.x' target in Makefile.in. */
+
+ENTRY(_start)
+
+MEMORY {
+ RAM1 (w) : ORIGIN = 0xc800, LENGTH = 0x0200
+ RAM2 (w) : ORIGIN = 0xca56, LENGTH = 0x1000
+ ROM (w) : ORIGIN = 0x30000, LENGTH = 0x1000
+}
+
+SECTIONS {
+ .data : {
+ *(.data*)
+ } > RAM1
+ .text : {
+ *(.text*)
+ } > RAM2
+ .fardata : {
+ *(.fardata*)
+ } > ROM
+}
diff --git a/sim/testsuite/m32c/sample.s b/sim/testsuite/m32c/sample.s
new file mode 100644
index 0000000..14b0548
--- /dev/null
+++ b/sim/testsuite/m32c/sample.s
@@ -0,0 +1,27 @@
+;;; sample.s --- simple test program for M32C simulator
+;;;
+;;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
+;;; Contributed by Red Hat, Inc.
+;;;
+;;; This file is part of the GNU simulators.
+;;;
+;;; This program is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ .text
+
+ .global _start
+_start:
+ mov.w #0x1234,r1
+ mov.w r1,r3 | sha.w #-8,r3 | sha.w #-7,r3
+ brk
diff --git a/sim/testsuite/m32c/sample2.c b/sim/testsuite/m32c/sample2.c
new file mode 100644
index 0000000..3b8f055
--- /dev/null
+++ b/sim/testsuite/m32c/sample2.c
@@ -0,0 +1,29 @@
+/* sample2.c --- main source for sample2.x test program for M32C simulator
+
+Copyright (C) 2005-2021 Free Software Foundation, Inc.
+Contributed by Red Hat, Inc.
+
+This file is part of the GNU simulators.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* See the 'sample2.x' target in Makefile.in. */
+void exit (int);
+
+void
+start (void)
+{
+ foo (1, 2, 3, 4);
+ exit (5);
+}
diff --git a/sim/testsuite/m32c/testutils.inc b/sim/testsuite/m32c/testutils.inc
new file mode 100644
index 0000000..fa6f5a9
--- /dev/null
+++ b/sim/testsuite/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