summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authordt <dt@FreeBSD.org>1999-06-08 16:42:19 +0000
committerdt <dt@FreeBSD.org>1999-06-08 16:42:19 +0000
commit6f2e7884b67738b227642fd6afda105bdbc49a5d (patch)
tree98f5a2388a46feee5780a0197e7b69d155d3a467 /sys/powerpc
parentb00495cccd07075e873857235aa138a2be990b3d (diff)
downloadFreeBSD-src-6f2e7884b67738b227642fd6afda105bdbc49a5d.zip
FreeBSD-src-6f2e7884b67738b227642fd6afda105bdbc49a5d.tar.gz
Keep fpcurproc locked in memory, so that we always can save the FP state
correctly. This should fix the "pmap_changebit didn't" panic that some people see. Reviewed by: dfr
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/aim/vm_machdep.c6
-rw-r--r--sys/powerpc/powerpc/vm_machdep.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/powerpc/aim/vm_machdep.c b/sys/powerpc/aim/vm_machdep.c
index 929d9fb..f5f3cdf 100644
--- a/sys/powerpc/aim/vm_machdep.c
+++ b/sys/powerpc/aim/vm_machdep.c
@@ -38,7 +38,7 @@
*
* from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91
* Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
- * $Id: vm_machdep.c,v 1.13 1999/04/20 22:53:54 dt Exp $
+ * $Id: vm_machdep.c,v 1.14 1999/04/23 19:53:38 dt Exp $
*/
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -240,8 +240,10 @@ void
cpu_exit(p)
register struct proc *p;
{
- if (p == fpcurproc)
+ if (p == fpcurproc) {
+ PRELE(fpcurproc);
fpcurproc = NULL;
+ }
(void) splhigh();
cnt.v_swtch++;
diff --git a/sys/powerpc/powerpc/vm_machdep.c b/sys/powerpc/powerpc/vm_machdep.c
index 929d9fb..f5f3cdf 100644
--- a/sys/powerpc/powerpc/vm_machdep.c
+++ b/sys/powerpc/powerpc/vm_machdep.c
@@ -38,7 +38,7 @@
*
* from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91
* Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
- * $Id: vm_machdep.c,v 1.13 1999/04/20 22:53:54 dt Exp $
+ * $Id: vm_machdep.c,v 1.14 1999/04/23 19:53:38 dt Exp $
*/
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -240,8 +240,10 @@ void
cpu_exit(p)
register struct proc *p;
{
- if (p == fpcurproc)
+ if (p == fpcurproc) {
+ PRELE(fpcurproc);
fpcurproc = NULL;
+ }
(void) splhigh();
cnt.v_swtch++;
OpenPOWER on IntegriCloud