diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-11-23 13:14:32 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-11-23 13:14:32 +0000 |
commit | 907044087f9c7b245614fc2dd52b16b7999adc01 (patch) | |
tree | b8e7b65a4795c261da236776b3e63bda4f0859e1 /sys/arch/mvme68k | |
parent | e9d572527c57972b051369ca20539a0e1ef2c6ed (diff) |
userret() parameter botch; prototype userret(); make ddb easier to enter
Diffstat (limited to 'sys/arch/mvme68k')
-rw-r--r-- | sys/arch/mvme68k/mvme68k/trap.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/sys/arch/mvme68k/mvme68k/trap.c b/sys/arch/mvme68k/mvme68k/trap.c index 28677c440bc..3c81ef7b474 100644 --- a/sys/arch/mvme68k/mvme68k/trap.c +++ b/sys/arch/mvme68k/mvme68k/trap.c @@ -1,4 +1,4 @@ -/* $Id: trap.c,v 1.3 1995/11/07 08:50:27 deraadt Exp $ */ +/* $Id: trap.c,v 1.4 1995/11/23 13:14:31 deraadt Exp $ */ /* * Copyright (c) 1995 Theo de Raadt @@ -163,6 +163,10 @@ void (*sir_routines[NSIR])(); void *sir_args[NSIR]; u_char next_sir; +int writeback __P((struct frame *fp, int docachepush)); +static inline void userret __P((struct proc *p, struct frame *fp, + u_quad_t oticks, u_int faultaddr, int fromtrap)); + /* * trap and syscall both need the following work done before returning * to user mode. @@ -254,9 +258,6 @@ trap(type, code, v, frame) struct frame frame; { extern char fubail[], subail[]; -#ifdef DDB - extern int trap0, trap1, trap2, trap12, trap15, illinst; -#endif register struct proc *p; register int i; u_int ucode; @@ -439,13 +440,8 @@ copyfault: case T_TRACE: /* kernel trace trap */ case T_TRAP15: /* SUN trace trap */ #ifdef DDB - if (type == T_TRAP15 || - (frame.f_pc != trap0 && frame.f_pc != trap1 && - frame.f_pc != trap2 && frame.f_pc != trap12 && - frame.f_pc != trap15 && frame.f_pc != illinst)) { - if (kdb_trap(type, &frame)) - return; - } + if (kdb_trap(type, &frame)) + return; #endif frame.f_sr &= ~PSL_T; i = SIGTRAP; @@ -461,7 +457,7 @@ copyfault: * DONT trap on it.. */ if (p->p_emul == &emul_sunos) { - userret(p, frame.f_pc, sticks); + userret(p, &frame, sticks, v, 1); return; } #endif @@ -644,6 +640,7 @@ char wberrstr[] = "WARNING: pid %d(%s) writeback [%s] failed, pc=%x fa=%x wba=%x wbd=%x\n"; #endif +int writeback(fp, docachepush) struct frame *fp; int docachepush; |