diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2003-09-01 19:45:29 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2003-09-01 19:45:29 +0000 |
commit | bbdefd3115a4be273d97f268b3097091a1eada48 (patch) | |
tree | 8438f16465a4f533f24a8c473f19ce757e88ec85 /regress/sys/arch | |
parent | 8c643fa97dba3913c4dcf9288ab2a0086f149862 (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/Makefile | 7 | ||||
-rw-r--r-- | regress/sys/arch/mvme88k/usertrap/Makefile | 20 | ||||
-rw-r--r-- | regress/sys/arch/mvme88k/usertrap/answer | 13 | ||||
-rw-r--r-- | regress/sys/arch/mvme88k/usertrap/testsuite.sh | 50 | ||||
-rw-r--r-- | regress/sys/arch/mvme88k/usertrap/trap.c | 542 |
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; +} |