diff options
author | dyson <dyson@FreeBSD.org> | 1996-06-05 06:36:21 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1996-06-05 06:36:21 +0000 |
commit | 6f64e94d554354d2bd843d5cd9ddf78faaeeff3f (patch) | |
tree | 3761040bfb5adbffaba36e51504c3005cf2606c7 | |
parent | f5e325015ade3f5008bd57e33f132f5c52974f37 (diff) | |
download | FreeBSD-src-6f64e94d554354d2bd843d5cd9ddf78faaeeff3f.zip FreeBSD-src-6f64e94d554354d2bd843d5cd9ddf78faaeeff3f.tar.gz |
I missed a case of the page table page dirty-bit fix.
-rw-r--r-- | sys/amd64/amd64/pmap.c | 6 | ||||
-rw-r--r-- | sys/i386/i386/pmap.c | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 42c0a61..2b48725 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $Id: pmap.c,v 1.98 1996/06/02 22:28:53 dyson Exp $ + * $Id: pmap.c,v 1.99 1996/06/05 03:31:26 dyson Exp $ */ /* @@ -1026,8 +1026,10 @@ pmap_remove_pte(pmap, ptq, va) printf("pmap_remove: modified page not writable: va: 0x%lx, pte: 0x%lx\n", va, (int) oldpte); } #endif + if (va < clean_sva || va >= clean_eva) { - PHYS_TO_VM_PAGE(oldpte)->dirty = VM_PAGE_BITS_ALL; + if ((va < UPT_MIN_ADDRESS) || (va >= UPT_MAX_ADDRESS)) + PHYS_TO_VM_PAGE(oldpte)->dirty = VM_PAGE_BITS_ALL; } } ppv = pa_to_pvh(oldpte); diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 42c0a61..2b48725 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $Id: pmap.c,v 1.98 1996/06/02 22:28:53 dyson Exp $ + * $Id: pmap.c,v 1.99 1996/06/05 03:31:26 dyson Exp $ */ /* @@ -1026,8 +1026,10 @@ pmap_remove_pte(pmap, ptq, va) printf("pmap_remove: modified page not writable: va: 0x%lx, pte: 0x%lx\n", va, (int) oldpte); } #endif + if (va < clean_sva || va >= clean_eva) { - PHYS_TO_VM_PAGE(oldpte)->dirty = VM_PAGE_BITS_ALL; + if ((va < UPT_MIN_ADDRESS) || (va >= UPT_MAX_ADDRESS)) + PHYS_TO_VM_PAGE(oldpte)->dirty = VM_PAGE_BITS_ALL; } } ppv = pa_to_pvh(oldpte); |