diff options
Diffstat (limited to 'sys/uvm/uvm_device.c')
-rw-r--r-- | sys/uvm/uvm_device.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/uvm/uvm_device.c b/sys/uvm/uvm_device.c index ac7085baa10..6cd818e924b 100644 --- a/sys/uvm/uvm_device.c +++ b/sys/uvm/uvm_device.c @@ -1,5 +1,5 @@ -/* $OpenBSD: uvm_device.c,v 1.7 2001/03/22 03:05:54 smart Exp $ */ -/* $NetBSD: uvm_device.c,v 1.16 1999/04/08 10:26:21 drochner Exp $ */ +/* $OpenBSD: uvm_device.c,v 1.8 2001/07/18 14:31:27 art Exp $ */ +/* $NetBSD: uvm_device.c,v 1.17 1999/10/24 16:29:23 ross Exp $ */ /* * @@ -414,6 +414,7 @@ udv_fault(ufi, vaddr, pps, npages, centeridx, fault_type, access_type, flags) int lcv, retval, mdpgno; dev_t device; int (*mapfn) __P((dev_t, int, int)); + vm_prot_t mapprot; UVMHIST_FUNC("udv_fault"); UVMHIST_CALLED(maphist); UVMHIST_LOG(maphist," flags=%d", flags,0,0,0); @@ -472,11 +473,12 @@ udv_fault(ufi, vaddr, pps, npages, centeridx, fault_type, access_type, flags) break; } paddr = pmap_phys_address(mdpgno); + mapprot = ufi->entry->protection; UVMHIST_LOG(maphist, " MAPPING: device: pm=0x%x, va=0x%x, pa=0x%x, at=%d", - ufi->orig_map->pmap, curr_va, (int)paddr, access_type); - pmap_enter(ufi->orig_map->pmap, curr_va, paddr, access_type, 0, - access_type); + ufi->orig_map->pmap, curr_va, (int)paddr, mapprot); + pmap_enter(ufi->orig_map->pmap, curr_va, paddr, mapprot, 0, + mapprot); } uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj, NULL); |