diff options
author | dt <dt@FreeBSD.org> | 1999-06-08 16:42:19 +0000 |
---|---|---|
committer | dt <dt@FreeBSD.org> | 1999-06-08 16:42:19 +0000 |
commit | 6f2e7884b67738b227642fd6afda105bdbc49a5d (patch) | |
tree | 98f5a2388a46feee5780a0197e7b69d155d3a467 /sys/powerpc | |
parent | b00495cccd07075e873857235aa138a2be990b3d (diff) | |
download | FreeBSD-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.c | 6 | ||||
-rw-r--r-- | sys/powerpc/powerpc/vm_machdep.c | 6 |
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++; |