diff options
author | 2003-09-01 22:51:05 +0000 | |
---|---|---|
committer | 2003-09-01 22:51:05 +0000 | |
commit | afef528f89afb2c4b8af245e404902da1572d646 (patch) | |
tree | a4033033a4c6b56475bc7d8d05c21987d6b4a179 | |
parent | fix leak (diff) | |
download | wireguard-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.c | 18 | ||||
-rw-r--r-- | sys/arch/mvme88k/mvme88k/trap.c | 8 |
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; |