summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2003-09-01 22:51:05 +0000
committermiod <miod@openbsd.org>2003-09-01 22:51:05 +0000
commitafef528f89afb2c4b8af245e404902da1572d646 (patch)
treea4033033a4c6b56475bc7d8d05c21987d6b4a179
parentfix leak (diff)
downloadwireguard-openbsd-afef528f89afb2c4b8af245e404902da1572d646.tar.xz
wireguard-openbsd-afef528f89afb2c4b8af245e404902da1572d646.zip
The most harmful bugs are always so blatant it takes hours to spot them...
Correctly setup the vector table for T_SIGSYS and T_SIGTRAP traps, and handle T_SIGSYS userland traps. This passes a complete usertrap regression test now.
-rw-r--r--sys/arch/mvme88k/mvme88k/locore_c_routines.c18
-rw-r--r--sys/arch/mvme88k/mvme88k/trap.c8
2 files changed, 16 insertions, 10 deletions
diff --git a/sys/arch/mvme88k/mvme88k/locore_c_routines.c b/sys/arch/mvme88k/mvme88k/locore_c_routines.c
index ca62159eae1..26f55c7cf51 100644
--- a/sys/arch/mvme88k/mvme88k/locore_c_routines.c
+++ b/sys/arch/mvme88k/mvme88k/locore_c_routines.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore_c_routines.c,v 1.31 2003/09/01 19:14:04 miod Exp $ */
+/* $OpenBSD: locore_c_routines.c,v 1.32 2003/09/01 22:51:05 miod Exp $ */
/*
* Mach Operating System
* Copyright (c) 1993-1991 Carnegie Mellon University
@@ -341,11 +341,11 @@ vector_init(m88k_exception_vector_area *vector, unsigned *vector_init_list)
switch (cputyp) {
#ifdef M88110
case CPU_88110:
- while (num <= SIGSYS_MAX)
- SET_VECTOR(num++, m88110_sigsys);
+ for (; num <= SIGSYS_MAX; num++)
+ SET_VECTOR(num, m88110_sigsys);
- while (num <= SIGTRAP_MAX)
- SET_VECTOR(num++, m88110_sigtrap);
+ for (; num <= SIGTRAP_MAX; num++)
+ SET_VECTOR(num, m88110_sigtrap);
SET_VECTOR(450, m88110_syscall_handler);
SET_VECTOR(MVMEPROM_VECTOR, m88110_bugtrap);
@@ -355,11 +355,11 @@ vector_init(m88k_exception_vector_area *vector, unsigned *vector_init_list)
#endif /* M88110 */
#ifdef M88100
case CPU_88100:
- while (num <= SIGSYS_MAX)
- SET_VECTOR(num++, sigsys);
+ for (; num <= SIGSYS_MAX; num++)
+ SET_VECTOR(num, sigsys);
- while (num <= SIGTRAP_MAX)
- SET_VECTOR(num++, sigtrap);
+ for (; num <= SIGTRAP_MAX; num++)
+ SET_VECTOR(num, sigtrap);
SET_VECTOR(450, syscall_handler);
SET_VECTOR(MVMEPROM_VECTOR, bugtrap);
diff --git a/sys/arch/mvme88k/mvme88k/trap.c b/sys/arch/mvme88k/mvme88k/trap.c
index d7bca4cf93d..5fc3a32e8c7 100644
--- a/sys/arch/mvme88k/mvme88k/trap.c
+++ b/sys/arch/mvme88k/mvme88k/trap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.41 2003/09/01 18:22:30 miod Exp $ */
+/* $OpenBSD: trap.c,v 1.42 2003/09/01 22:51:05 miod Exp $ */
/*
* Copyright (c) 1998 Steve Murphree, Jr.
* Copyright (c) 1996 Nivas Madhur
@@ -555,6 +555,9 @@ m88100_trap(unsigned type, struct m88100_saved_state *frame)
case T_FPEIFLT+T_USER:
sig = SIGFPE;
break;
+ case T_SIGSYS+T_USER:
+ sig = SIGSYS;
+ break;
case T_SIGTRAP+T_USER:
sig = SIGTRAP;
fault_type = TRAP_TRACE;
@@ -1045,6 +1048,9 @@ m88110_user_fault:
case T_FPEIFLT+T_USER:
sig = SIGFPE;
break;
+ case T_SIGSYS+T_USER:
+ sig = SIGSYS;
+ break;
case T_SIGTRAP+T_USER:
sig = SIGTRAP;
fault_type = TRAP_TRACE;