pmap-v4.c (159359) | pmap-v4.c (159378) |
---|---|
1/* From: $NetBSD: pmap.c,v 1.148 2004/04/03 04:35:48 bsh Exp $ */ 2/*- 3 * Copyright 2004 Olivier Houchard. 4 * Copyright 2003 Wasabi Systems, Inc. 5 * All rights reserved. 6 * 7 * Written by Steve C. Woodford for Wasabi Systems, Inc. 8 * --- 133 unchanged lines hidden (view full) --- 142 * Special compilation symbols 143 * PMAP_DEBUG - Build in pmap_debug_level code 144 */ 145/* Include header files */ 146 147#include "opt_vm.h" 148 149#include <sys/cdefs.h> | 1/* From: $NetBSD: pmap.c,v 1.148 2004/04/03 04:35:48 bsh Exp $ */ 2/*- 3 * Copyright 2004 Olivier Houchard. 4 * Copyright 2003 Wasabi Systems, Inc. 5 * All rights reserved. 6 * 7 * Written by Steve C. Woodford for Wasabi Systems, Inc. 8 * --- 133 unchanged lines hidden (view full) --- 142 * Special compilation symbols 143 * PMAP_DEBUG - Build in pmap_debug_level code 144 */ 145/* Include header files */ 146 147#include "opt_vm.h" 148 149#include <sys/cdefs.h> |
150__FBSDID("$FreeBSD: head/sys/arm/arm/pmap.c 159359 2006-06-06 21:06:57Z cognet $"); | 150__FBSDID("$FreeBSD: head/sys/arm/arm/pmap.c 159378 2006-06-07 17:14:48Z alc $"); |
151#include <sys/param.h> 152#include <sys/systm.h> 153#include <sys/kernel.h> 154#include <sys/proc.h> 155#include <sys/malloc.h> 156#include <sys/msgbuf.h> 157#include <sys/vmmeter.h> 158#include <sys/mman.h> --- 3556 unchanged lines hidden (view full) --- 3715 * pmap and virtual address pair if that mapping permits the given 3716 * protection. 3717 * 3718 */ 3719vm_page_t 3720pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot) 3721{ 3722 struct l2_dtable *l2; | 151#include <sys/param.h> 152#include <sys/systm.h> 153#include <sys/kernel.h> 154#include <sys/proc.h> 155#include <sys/malloc.h> 156#include <sys/msgbuf.h> 157#include <sys/vmmeter.h> 158#include <sys/mman.h> --- 3556 unchanged lines hidden (view full) --- 3715 * pmap and virtual address pair if that mapping permits the given 3716 * protection. 3717 * 3718 */ 3719vm_page_t 3720pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot) 3721{ 3722 struct l2_dtable *l2; |
3723 pd_entry_t *pl1pd, l1pd; | 3723 pd_entry_t l1pd; |
3724 pt_entry_t *ptep, pte; 3725 vm_paddr_t pa; 3726 vm_page_t m = NULL; 3727 u_int l1idx; 3728 l1idx = L1_IDX(va); | 3724 pt_entry_t *ptep, pte; 3725 vm_paddr_t pa; 3726 vm_page_t m = NULL; 3727 u_int l1idx; 3728 l1idx = L1_IDX(va); |
3729 pl1pd = &pmap->pm_l1->l1_kva[l1idx]; 3730 l1pd = *pl1pd; | |
3731 3732 vm_page_lock_queues(); 3733 PMAP_LOCK(pmap); | 3729 3730 vm_page_lock_queues(); 3731 PMAP_LOCK(pmap); |
3732 l1pd = pmap->pm_l1->l1_kva[l1idx]; |
|
3734 if (l1pte_section_p(l1pd)) { 3735 /* 3736 * These should only happen for pmap_kernel() 3737 */ 3738 KASSERT(pmap == pmap_kernel(), ("huh")); 3739 pa = (l1pd & L1_S_FRAME) | (va & L1_S_OFFSET); 3740 if (l1pd & L1_S_PROT_W || (prot & VM_PROT_WRITE) == 0) { 3741 m = PHYS_TO_VM_PAGE(pa); --- 1108 unchanged lines hidden --- | 3733 if (l1pte_section_p(l1pd)) { 3734 /* 3735 * These should only happen for pmap_kernel() 3736 */ 3737 KASSERT(pmap == pmap_kernel(), ("huh")); 3738 pa = (l1pd & L1_S_FRAME) | (va & L1_S_OFFSET); 3739 if (l1pd & L1_S_PROT_W || (prot & VM_PROT_WRITE) == 0) { 3740 m = PHYS_TO_VM_PAGE(pa); --- 1108 unchanged lines hidden --- |