summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2007-07-14 22:41:55 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2007-07-14 22:41:55 +0000
commit75794e3db978d84f32b4dfd1285c03786a530b40 (patch)
tree016d966c65e57df9be7b3f3b2fc0239914857057
parent6db01c26b98393c0014063b74351e6c51b12a20b (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.c10
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