summaryrefslogtreecommitdiff
path: root/regress/sys/arch
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2003-09-01 19:45:29 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2003-09-01 19:45:29 +0000
commitbbdefd3115a4be273d97f268b3097091a1eada48 (patch)
tree8438f16465a4f533f24a8c473f19ce757e88ec85 /regress/sys/arch
parent8c643fa97dba3913c4dcf9288ab2a0086f149862 (diff)
A simple regression test to catch which trap vectors, when invoked from
userland, will spank the mvme88k kernel by mistake. The test does not trigger the deadly ones, yet.
Diffstat (limited to 'regress/sys/arch')
-rw-r--r--regress/sys/arch/mvme88k/Makefile7
-rw-r--r--regress/sys/arch/mvme88k/usertrap/Makefile20
-rw-r--r--regress/sys/arch/mvme88k/usertrap/answer13
-rw-r--r--regress/sys/arch/mvme88k/usertrap/testsuite.sh50
-rw-r--r--regress/sys/arch/mvme88k/usertrap/trap.c542
5 files changed, 632 insertions, 0 deletions
diff --git a/regress/sys/arch/mvme88k/Makefile b/regress/sys/arch/mvme88k/Makefile
new file mode 100644
index 00000000000..f5d7f1067ee
--- /dev/null
+++ b/regress/sys/arch/mvme88k/Makefile
@@ -0,0 +1,7 @@
+# $OpenBSD: Makefile,v 1.1 2003/09/01 19:45:25 miod Exp $
+
+SUBDIR+= usertrap
+
+install:
+
+.include <bsd.subdir.mk>
diff --git a/regress/sys/arch/mvme88k/usertrap/Makefile b/regress/sys/arch/mvme88k/usertrap/Makefile
new file mode 100644
index 00000000000..025ae66113e
--- /dev/null
+++ b/regress/sys/arch/mvme88k/usertrap/Makefile
@@ -0,0 +1,20 @@
+# $OpenBSD: Makefile,v 1.1 2003/09/01 19:45:28 miod Exp $
+
+PROG= trap
+
+.if ${MACHINE_ARCH} != "m88k"
+REGRESS_SKIP="yes"
+.endif
+
+REGRESS_TARGETS= do-trap
+
+do-trap: ${PROG}
+ sh ${.CURDIR}/testsuite.sh >out 2>&1
+ @if diff -u out ${.CURDIR}/answer; then \
+ echo SUCCESS; \
+ else \
+ echo FAIL; \
+ exit 1; \
+ fi
+
+.include <bsd.regress.mk>
diff --git a/regress/sys/arch/mvme88k/usertrap/answer b/regress/sys/arch/mvme88k/usertrap/answer
new file mode 100644
index 00000000000..615188bc681
--- /dev/null
+++ b/regress/sys/arch/mvme88k/usertrap/answer
@@ -0,0 +1,13 @@
+Privilege violation: Illegal instruction
+Privilege violation: Illegal instruction
+Privilege violation: Illegal instruction
+Alternate system call: Bad system call
+Alternate system call: Bad system call
+DDB breakpoint: Illegal instruction
+DDB trace: Illegal instruction
+DDB entry: Illegal instruction
+System call: Bad system call
+BUG:
+Software divide by zero: Floating point exception
+Single step: Trace trap
+Breakpoint: Trace trap
diff --git a/regress/sys/arch/mvme88k/usertrap/testsuite.sh b/regress/sys/arch/mvme88k/usertrap/testsuite.sh
new file mode 100644
index 00000000000..1f46acf6d61
--- /dev/null
+++ b/regress/sys/arch/mvme88k/usertrap/testsuite.sh
@@ -0,0 +1,50 @@
+#! /bin/sh
+# $OpenBSD: testsuite.sh,v 1.1 2003/09/01 19:45:28 miod Exp $
+
+# Simple test program to check what happens when userland tries to trap.
+# Written by Miodrag Vallat 2003 AD -- public domain
+
+PROG=./trap
+
+ulimit -c 0
+
+echo -n "Privilege violation: "
+${PROG} 0
+echo -n "Privilege violation: "
+${PROG} 1
+echo -n "Privilege violation: "
+${PROG} 127
+echo -n "Alternate system call: "
+${PROG} 128
+echo -n "Alternate system call: "
+${PROG} 129
+echo -n "DDB breakpoint: "
+${PROG} 130
+echo -n "DDB trace: "
+${PROG} 131
+echo -n "DDB entry: "
+${PROG} 132
+#echo -n "SIGSYS: "
+#${PROG} 255
+#echo -n "SIGSYS: "
+#${PROG} 256
+#echo -n "SIGSYS: "
+#${PROG} 400
+echo -n "System call: "
+${PROG} 450
+#echo -n "SIGSYS: "
+#${PROG} 495
+echo -n "BUG: "
+${PROG} 496
+# since there won't be any output...
+echo
+#echo -n "SIGTRAP: "
+#${PROG} 502
+echo -n "Software divide by zero: "
+${PROG} 503
+echo -n "Single step: "
+${PROG} 504
+echo -n "Breakpoint: "
+${PROG} 511
+
+exit 0
diff --git a/regress/sys/arch/mvme88k/usertrap/trap.c b/regress/sys/arch/mvme88k/usertrap/trap.c
new file mode 100644
index 00000000000..0c8e81a96a1
--- /dev/null
+++ b/regress/sys/arch/mvme88k/usertrap/trap.c
@@ -0,0 +1,542 @@
+/* $OpenBSD: trap.c,v 1.1 2003/09/01 19:45:28 miod Exp $ */
+
+/*
+ * Simple test program to check what happens when userland tries to trap.
+ * Written by Miodrag Vallat 2003 AD -- public domain
+ */
+
+#include <stdio.h>
+
+#define TRAP(num) \
+ case num: \
+ __asm__ __volatile__ ("tb0 0, r0, " __STRING(num) ); \
+ break;
+
+int
+main(int argc, char *argv[])
+{
+ int trapnum = 503; /* software divide by zero */
+
+ if (argc > 1)
+ trapnum = atoi(argv[1]);
+
+ switch (trapnum) {
+TRAP(0x000)
+TRAP(0x001)
+TRAP(0x002)
+TRAP(0x003)
+TRAP(0x004)
+TRAP(0x005)
+TRAP(0x006)
+TRAP(0x007)
+TRAP(0x008)
+TRAP(0x009)
+TRAP(0x00a)
+TRAP(0x00b)
+TRAP(0x00c)
+TRAP(0x00d)
+TRAP(0x00e)
+TRAP(0x00f)
+TRAP(0x010)
+TRAP(0x011)
+TRAP(0x012)
+TRAP(0x013)
+TRAP(0x014)
+TRAP(0x015)
+TRAP(0x016)
+TRAP(0x017)
+TRAP(0x018)
+TRAP(0x019)
+TRAP(0x01a)
+TRAP(0x01b)
+TRAP(0x01c)
+TRAP(0x01d)
+TRAP(0x01e)
+TRAP(0x01f)
+TRAP(0x020)
+TRAP(0x021)
+TRAP(0x022)
+TRAP(0x023)
+TRAP(0x024)
+TRAP(0x025)
+TRAP(0x026)
+TRAP(0x027)
+TRAP(0x028)
+TRAP(0x029)
+TRAP(0x02a)
+TRAP(0x02b)
+TRAP(0x02c)
+TRAP(0x02d)
+TRAP(0x02e)
+TRAP(0x02f)
+TRAP(0x030)
+TRAP(0x031)
+TRAP(0x032)
+TRAP(0x033)
+TRAP(0x034)
+TRAP(0x035)
+TRAP(0x036)
+TRAP(0x037)
+TRAP(0x038)
+TRAP(0x039)
+TRAP(0x03a)
+TRAP(0x03b)
+TRAP(0x03c)
+TRAP(0x03d)
+TRAP(0x03e)
+TRAP(0x03f)
+TRAP(0x040)
+TRAP(0x041)
+TRAP(0x042)
+TRAP(0x043)
+TRAP(0x044)
+TRAP(0x045)
+TRAP(0x046)
+TRAP(0x047)
+TRAP(0x048)
+TRAP(0x049)
+TRAP(0x04a)
+TRAP(0x04b)
+TRAP(0x04c)
+TRAP(0x04d)
+TRAP(0x04e)
+TRAP(0x04f)
+TRAP(0x050)
+TRAP(0x051)
+TRAP(0x052)
+TRAP(0x053)
+TRAP(0x054)
+TRAP(0x055)
+TRAP(0x056)
+TRAP(0x057)
+TRAP(0x058)
+TRAP(0x059)
+TRAP(0x05a)
+TRAP(0x05b)
+TRAP(0x05c)
+TRAP(0x05d)
+TRAP(0x05e)
+TRAP(0x05f)
+TRAP(0x060)
+TRAP(0x061)
+TRAP(0x062)
+TRAP(0x063)
+TRAP(0x064)
+TRAP(0x065)
+TRAP(0x066)
+TRAP(0x067)
+TRAP(0x068)
+TRAP(0x069)
+TRAP(0x06a)
+TRAP(0x06b)
+TRAP(0x06c)
+TRAP(0x06d)
+TRAP(0x06e)
+TRAP(0x06f)
+TRAP(0x070)
+TRAP(0x071)
+TRAP(0x072)
+TRAP(0x073)
+TRAP(0x074)
+TRAP(0x075)
+TRAP(0x076)
+TRAP(0x077)
+TRAP(0x078)
+TRAP(0x079)
+TRAP(0x07a)
+TRAP(0x07b)
+TRAP(0x07c)
+TRAP(0x07d)
+TRAP(0x07e)
+TRAP(0x07f)
+TRAP(0x080)
+TRAP(0x081)
+TRAP(0x082)
+TRAP(0x083)
+TRAP(0x084)
+TRAP(0x085)
+TRAP(0x086)
+TRAP(0x087)
+TRAP(0x088)
+TRAP(0x089)
+TRAP(0x08a)
+TRAP(0x08b)
+TRAP(0x08c)
+TRAP(0x08d)
+TRAP(0x08e)
+TRAP(0x08f)
+TRAP(0x090)
+TRAP(0x091)
+TRAP(0x092)
+TRAP(0x093)
+TRAP(0x094)
+TRAP(0x095)
+TRAP(0x096)
+TRAP(0x097)
+TRAP(0x098)
+TRAP(0x099)
+TRAP(0x09a)
+TRAP(0x09b)
+TRAP(0x09c)
+TRAP(0x09d)
+TRAP(0x09e)
+TRAP(0x09f)
+TRAP(0x0a0)
+TRAP(0x0a1)
+TRAP(0x0a2)
+TRAP(0x0a3)
+TRAP(0x0a4)
+TRAP(0x0a5)
+TRAP(0x0a6)
+TRAP(0x0a7)
+TRAP(0x0a8)
+TRAP(0x0a9)
+TRAP(0x0aa)
+TRAP(0x0ab)
+TRAP(0x0ac)
+TRAP(0x0ad)
+TRAP(0x0ae)
+TRAP(0x0af)
+TRAP(0x0b0)
+TRAP(0x0b1)
+TRAP(0x0b2)
+TRAP(0x0b3)
+TRAP(0x0b4)
+TRAP(0x0b5)
+TRAP(0x0b6)
+TRAP(0x0b7)
+TRAP(0x0b8)
+TRAP(0x0b9)
+TRAP(0x0ba)
+TRAP(0x0bb)
+TRAP(0x0bc)
+TRAP(0x0bd)
+TRAP(0x0be)
+TRAP(0x0bf)
+TRAP(0x0c0)
+TRAP(0x0c1)
+TRAP(0x0c2)
+TRAP(0x0c3)
+TRAP(0x0c4)
+TRAP(0x0c5)
+TRAP(0x0c6)
+TRAP(0x0c7)
+TRAP(0x0c8)
+TRAP(0x0c9)
+TRAP(0x0ca)
+TRAP(0x0cb)
+TRAP(0x0cc)
+TRAP(0x0cd)
+TRAP(0x0ce)
+TRAP(0x0cf)
+TRAP(0x0d0)
+TRAP(0x0d1)
+TRAP(0x0d2)
+TRAP(0x0d3)
+TRAP(0x0d4)
+TRAP(0x0d5)
+TRAP(0x0d6)
+TRAP(0x0d7)
+TRAP(0x0d8)
+TRAP(0x0d9)
+TRAP(0x0da)
+TRAP(0x0db)
+TRAP(0x0dc)
+TRAP(0x0dd)
+TRAP(0x0de)
+TRAP(0x0df)
+TRAP(0x0e0)
+TRAP(0x0e1)
+TRAP(0x0e2)
+TRAP(0x0e3)
+TRAP(0x0e4)
+TRAP(0x0e5)
+TRAP(0x0e6)
+TRAP(0x0e7)
+TRAP(0x0e8)
+TRAP(0x0e9)
+TRAP(0x0ea)
+TRAP(0x0eb)
+TRAP(0x0ec)
+TRAP(0x0ed)
+TRAP(0x0ee)
+TRAP(0x0ef)
+TRAP(0x0f0)
+TRAP(0x0f1)
+TRAP(0x0f2)
+TRAP(0x0f3)
+TRAP(0x0f4)
+TRAP(0x0f5)
+TRAP(0x0f6)
+TRAP(0x0f7)
+TRAP(0x0f8)
+TRAP(0x0f9)
+TRAP(0x0fa)
+TRAP(0x0fb)
+TRAP(0x0fc)
+TRAP(0x0fd)
+TRAP(0x0fe)
+TRAP(0x0ff)
+TRAP(0x100)
+TRAP(0x101)
+TRAP(0x102)
+TRAP(0x103)
+TRAP(0x104)
+TRAP(0x105)
+TRAP(0x106)
+TRAP(0x107)
+TRAP(0x108)
+TRAP(0x109)
+TRAP(0x10a)
+TRAP(0x10b)
+TRAP(0x10c)
+TRAP(0x10d)
+TRAP(0x10e)
+TRAP(0x10f)
+TRAP(0x110)
+TRAP(0x111)
+TRAP(0x112)
+TRAP(0x113)
+TRAP(0x114)
+TRAP(0x115)
+TRAP(0x116)
+TRAP(0x117)
+TRAP(0x118)
+TRAP(0x119)
+TRAP(0x11a)
+TRAP(0x11b)
+TRAP(0x11c)
+TRAP(0x11d)
+TRAP(0x11e)
+TRAP(0x11f)
+TRAP(0x120)
+TRAP(0x121)
+TRAP(0x122)
+TRAP(0x123)
+TRAP(0x124)
+TRAP(0x125)
+TRAP(0x126)
+TRAP(0x127)
+TRAP(0x128)
+TRAP(0x129)
+TRAP(0x12a)
+TRAP(0x12b)
+TRAP(0x12c)
+TRAP(0x12d)
+TRAP(0x12e)
+TRAP(0x12f)
+TRAP(0x130)
+TRAP(0x131)
+TRAP(0x132)
+TRAP(0x133)
+TRAP(0x134)
+TRAP(0x135)
+TRAP(0x136)
+TRAP(0x137)
+TRAP(0x138)
+TRAP(0x139)
+TRAP(0x13a)
+TRAP(0x13b)
+TRAP(0x13c)
+TRAP(0x13d)
+TRAP(0x13e)
+TRAP(0x13f)
+TRAP(0x140)
+TRAP(0x141)
+TRAP(0x142)
+TRAP(0x143)
+TRAP(0x144)
+TRAP(0x145)
+TRAP(0x146)
+TRAP(0x147)
+TRAP(0x148)
+TRAP(0x149)
+TRAP(0x14a)
+TRAP(0x14b)
+TRAP(0x14c)
+TRAP(0x14d)
+TRAP(0x14e)
+TRAP(0x14f)
+TRAP(0x150)
+TRAP(0x151)
+TRAP(0x152)
+TRAP(0x153)
+TRAP(0x154)
+TRAP(0x155)
+TRAP(0x156)
+TRAP(0x157)
+TRAP(0x158)
+TRAP(0x159)
+TRAP(0x15a)
+TRAP(0x15b)
+TRAP(0x15c)
+TRAP(0x15d)
+TRAP(0x15e)
+TRAP(0x15f)
+TRAP(0x160)
+TRAP(0x161)
+TRAP(0x162)
+TRAP(0x163)
+TRAP(0x164)
+TRAP(0x165)
+TRAP(0x166)
+TRAP(0x167)
+TRAP(0x168)
+TRAP(0x169)
+TRAP(0x16a)
+TRAP(0x16b)
+TRAP(0x16c)
+TRAP(0x16d)
+TRAP(0x16e)
+TRAP(0x16f)
+TRAP(0x170)
+TRAP(0x171)
+TRAP(0x172)
+TRAP(0x173)
+TRAP(0x174)
+TRAP(0x175)
+TRAP(0x176)
+TRAP(0x177)
+TRAP(0x178)
+TRAP(0x179)
+TRAP(0x17a)
+TRAP(0x17b)
+TRAP(0x17c)
+TRAP(0x17d)
+TRAP(0x17e)
+TRAP(0x17f)
+TRAP(0x180)
+TRAP(0x181)
+TRAP(0x182)
+TRAP(0x183)
+TRAP(0x184)
+TRAP(0x185)
+TRAP(0x186)
+TRAP(0x187)
+TRAP(0x188)
+TRAP(0x189)
+TRAP(0x18a)
+TRAP(0x18b)
+TRAP(0x18c)
+TRAP(0x18d)
+TRAP(0x18e)
+TRAP(0x18f)
+TRAP(0x190)
+TRAP(0x191)
+TRAP(0x192)
+TRAP(0x193)
+TRAP(0x194)
+TRAP(0x195)
+TRAP(0x196)
+TRAP(0x197)
+TRAP(0x198)
+TRAP(0x199)
+TRAP(0x19a)
+TRAP(0x19b)
+TRAP(0x19c)
+TRAP(0x19d)
+TRAP(0x19e)
+TRAP(0x19f)
+TRAP(0x1a0)
+TRAP(0x1a1)
+TRAP(0x1a2)
+TRAP(0x1a3)
+TRAP(0x1a4)
+TRAP(0x1a5)
+TRAP(0x1a6)
+TRAP(0x1a7)
+TRAP(0x1a8)
+TRAP(0x1a9)
+TRAP(0x1aa)
+TRAP(0x1ab)
+TRAP(0x1ac)
+TRAP(0x1ad)
+TRAP(0x1ae)
+TRAP(0x1af)
+TRAP(0x1b0)
+TRAP(0x1b1)
+TRAP(0x1b2)
+TRAP(0x1b3)
+TRAP(0x1b4)
+TRAP(0x1b5)
+TRAP(0x1b6)
+TRAP(0x1b7)
+TRAP(0x1b8)
+TRAP(0x1b9)
+TRAP(0x1ba)
+TRAP(0x1bb)
+TRAP(0x1bc)
+TRAP(0x1bd)
+TRAP(0x1be)
+TRAP(0x1bf)
+TRAP(0x1c0)
+TRAP(0x1c1)
+TRAP(0x1c2)
+TRAP(0x1c3)
+TRAP(0x1c4)
+TRAP(0x1c5)
+TRAP(0x1c6)
+TRAP(0x1c7)
+TRAP(0x1c8)
+TRAP(0x1c9)
+TRAP(0x1ca)
+TRAP(0x1cb)
+TRAP(0x1cc)
+TRAP(0x1cd)
+TRAP(0x1ce)
+TRAP(0x1cf)
+TRAP(0x1d0)
+TRAP(0x1d1)
+TRAP(0x1d2)
+TRAP(0x1d3)
+TRAP(0x1d4)
+TRAP(0x1d5)
+TRAP(0x1d6)
+TRAP(0x1d7)
+TRAP(0x1d8)
+TRAP(0x1d9)
+TRAP(0x1da)
+TRAP(0x1db)
+TRAP(0x1dc)
+TRAP(0x1dd)
+TRAP(0x1de)
+TRAP(0x1df)
+TRAP(0x1e0)
+TRAP(0x1e1)
+TRAP(0x1e2)
+TRAP(0x1e3)
+TRAP(0x1e4)
+TRAP(0x1e5)
+TRAP(0x1e6)
+TRAP(0x1e7)
+TRAP(0x1e8)
+TRAP(0x1e9)
+TRAP(0x1ea)
+TRAP(0x1eb)
+TRAP(0x1ec)
+TRAP(0x1ed)
+TRAP(0x1ee)
+TRAP(0x1ef)
+TRAP(0x1f0)
+TRAP(0x1f1)
+TRAP(0x1f2)
+TRAP(0x1f3)
+TRAP(0x1f4)
+TRAP(0x1f5)
+TRAP(0x1f6)
+TRAP(0x1f7)
+TRAP(0x1f8)
+TRAP(0x1f9)
+TRAP(0x1fa)
+TRAP(0x1fb)
+TRAP(0x1fc)
+TRAP(0x1fd)
+TRAP(0x1fe)
+TRAP(0x1ff)
+ default:
+ printf("invalid trap number %x\n", trapnum);
+ return 1;
+ }
+
+ return 0;
+}