diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2007-07-14 22:41:55 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2007-07-14 22:41:55 +0000 |
commit | 75794e3db978d84f32b4dfd1285c03786a530b40 (patch) | |
tree | 016d966c65e57df9be7b3f3b2fc0239914857057 | |
parent | 6db01c26b98393c0014063b74351e6c51b12a20b (diff) |
Make sigreturn(2) set the proper space ID for the instruction queue. Fixes
a few more pthreads regression tests.
ok miod@
-rw-r--r-- | sys/arch/hppa/hppa/machdep.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/arch/hppa/hppa/machdep.c b/sys/arch/hppa/hppa/machdep.c index 0628ebd1237..a8b5aae457d 100644 --- a/sys/arch/hppa/hppa/machdep.c +++ b/sys/arch/hppa/hppa/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.160 2007/07/10 17:28:32 kettenis Exp $ */ +/* $OpenBSD: machdep.c,v 1.161 2007/07/14 22:41:54 kettenis Exp $ */ /* * Copyright (c) 1999-2003 Michael Shalayeff @@ -1434,6 +1434,14 @@ sys_sigreturn(p, v, retval) tf->tf_iioq_head = ksc.sc_pcoqh | HPPA_PC_PRIV_USER; tf->tf_iioq_tail = ksc.sc_pcoqt | HPPA_PC_PRIV_USER; + if ((tf->tf_iioq_head & ~PAGE_MASK) == SYSCALLGATE) + tf->tf_iisq_head = HPPA_SID_KERNEL; + else + tf->tf_iisq_head = p->p_addr->u_pcb.pcb_space; + if ((tf->tf_iioq_tail & ~PAGE_MASK) == SYSCALLGATE) + tf->tf_iisq_tail = HPPA_SID_KERNEL; + else + tf->tf_iisq_tail = p->p_addr->u_pcb.pcb_space; tf->tf_ipsw = ksc.sc_ps; #ifdef DEBUG |