From fa277022da80c9662ca1f71008237cedffb02b81 Mon Sep 17 00:00:00 2001 From: dyson Date: Sun, 25 Feb 1996 03:02:53 +0000 Subject: Fix a problem with tracking the modified bit. Eliminate the ugly inline-asm code, and speed up the page-table-page tracking. --- sys/amd64/amd64/trap.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'sys/amd64/amd64/trap.c') diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 8b44962..e270a58 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $Id: trap.c,v 1.70 1996/01/04 21:11:03 wollman Exp $ + * $Id: trap.c,v 1.71 1996/01/19 03:57:42 dyson Exp $ */ /* @@ -486,7 +486,7 @@ trap_pfault(frame, usermode) if (va < VM_MIN_KERNEL_ADDRESS) { vm_offset_t v; - vm_page_t ptepg; + vm_page_t mpte; if (p == NULL || (!usermode && va < VM_MAXUSER_ADDRESS && @@ -534,12 +534,12 @@ trap_pfault(frame, usermode) if (*((int *)vtopte(v)) == 0) (void) vm_fault(map, trunc_page(v), VM_PROT_WRITE, FALSE); - pmap_use_pt( vm_map_pmap(map), va); + mpte = pmap_use_pt( vm_map_pmap(map), va); /* Fault in the user page: */ rv = vm_fault(map, va, ftype, FALSE); - pmap_unuse_pt( vm_map_pmap(map), va); + pmap_unuse_pt( vm_map_pmap(map), va, mpte); --p->p_lock; } else { @@ -622,6 +622,7 @@ trap_pfault(frame, usermode) if (map != kernel_map) { vm_offset_t v; + vm_page_t mpte; /* * Keep swapout from messing with us during this @@ -652,12 +653,12 @@ trap_pfault(frame, usermode) (void) vm_fault(map, trunc_page(v), VM_PROT_WRITE, FALSE); - pmap_use_pt( vm_map_pmap(map), va); + mpte = pmap_use_pt( vm_map_pmap(map), va); /* Fault in the user page: */ rv = vm_fault(map, va, ftype, FALSE); - pmap_unuse_pt( vm_map_pmap(map), va); + pmap_unuse_pt( vm_map_pmap(map), va, mpte); --p->p_lock; } else { -- cgit v1.1