summaryrefslogtreecommitdiff
path: root/sys/arch/alpha
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2000-06-05 11:03:06 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2000-06-05 11:03:06 +0000
commita9373777186bac0acc8148d4108429a9fc82c3c7 (patch)
tree42ea358aca2501d0078055c9026a71cb55ab667c /sys/arch/alpha
parent7f0672f1404b8202f54f66098bec7fd4b3e6725b (diff)
Changes to exit handling.
cpu_exit no longer frees the vmspace and u-area. This is now handled by a separate kernel thread "reaper". This is to avoid sleeping locks in the critical path of cpu_exit where we're not allowed to sleep. From NetBSD
Diffstat (limited to 'sys/arch/alpha')
-rw-r--r--sys/arch/alpha/alpha/locore.s10
-rw-r--r--sys/arch/alpha/alpha/vm_machdep.c4
2 files changed, 5 insertions, 9 deletions
diff --git a/sys/arch/alpha/alpha/locore.s b/sys/arch/alpha/alpha/locore.s
index 5567c507053..3ec60e37fec 100644
--- a/sys/arch/alpha/alpha/locore.s
+++ b/sys/arch/alpha/alpha/locore.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.11 1999/11/13 21:33:44 deraadt Exp $ */
+/* $OpenBSD: locore.s,v 1.12 2000/06/05 11:02:54 art Exp $ */
/* $NetBSD: locore.s,v 1.27 1996/12/03 19:54:16 cgd Exp $ */
/*
@@ -833,11 +833,9 @@ LEAF(switch_exit, 1)
* the saved regs.
*/
- /* blow away the old user struct */
- ldq a0, kernel_map
- ldq a1, P_ADDR(s2)
- ldiq a2, (UPAGES * NBPG)
- CALL(kmem_free)
+ /* Schedule the vmspace and stack to be freed. */
+ mov s2, a0
+ CALL(exit2)
/* and jump into the middle of cpu_switch. */
#ifdef NEW_PMAP
diff --git a/sys/arch/alpha/alpha/vm_machdep.c b/sys/arch/alpha/alpha/vm_machdep.c
index 9009bc0cbe2..fe182b2fe0e 100644
--- a/sys/arch/alpha/alpha/vm_machdep.c
+++ b/sys/arch/alpha/alpha/vm_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vm_machdep.c,v 1.12 1999/09/14 11:41:18 kstailey Exp $ */
+/* $OpenBSD: vm_machdep.c,v 1.13 2000/06/05 11:02:55 art Exp $ */
/* $NetBSD: vm_machdep.c,v 1.21 1996/11/13 21:13:15 cgd Exp $ */
/*
@@ -116,8 +116,6 @@ cpu_exit(p)
if (p == fpcurproc)
fpcurproc = NULL;
- vmspace_free(p->p_vmspace);
-
(void) splhigh();
switch_exit(p);
/* NOTREACHED */