summaryrefslogtreecommitdiff
path: root/i386/intel/pmap.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2007-11-18 17:33:07 +0000
committerThomas Schwinge <tschwinge@gnu.org>2009-06-18 00:27:13 +0200
commit53aab0a6dc9da6687fd95db1a609785b01eec3ff (patch)
tree52c8a2715ebe161ca55c7e4598a46a4744acfd31 /i386/intel/pmap.c
parent0a9db9be1c17787ef586de7c1363b675a0a4d248 (diff)
2007-11-18 Samuel Thibault <samuel.thibault@ens-lyon.org>
* i386/intel/pmap.c (pmap_map_bd): Use INTEL_PTE_NCACHE|INTEL_PTE_WTHRU. Get pmap lock.
Diffstat (limited to 'i386/intel/pmap.c')
-rw-r--r--i386/intel/pmap.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c
index 7746c61..539e3f0 100644
--- a/i386/intel/pmap.c
+++ b/i386/intel/pmap.c
@@ -502,13 +502,17 @@ vm_offset_t pmap_map_bd(virt, start, end, prot)
{
register pt_entry_t template;
register pt_entry_t *pte;
+ int spl;
- template = pa_to_pte(start) | INTEL_PTE_VALID;
+ template = pa_to_pte(start)
+ | INTEL_PTE_NCACHE|INTEL_PTE_WTHRU
+ | INTEL_PTE_VALID;
if (CPU_HAS_FEATURE(CPU_FEATURE_PGE))
template |= INTEL_PTE_GLOBAL;
if (prot & VM_PROT_WRITE)
template |= INTEL_PTE_WRITE;
+ PMAP_READ_LOCK(pmap, spl);
while (start < end) {
pte = pmap_pte(kernel_pmap, virt);
if (pte == PT_ENTRY_NULL)
@@ -518,6 +522,7 @@ vm_offset_t pmap_map_bd(virt, start, end, prot)
virt += PAGE_SIZE;
start += PAGE_SIZE;
}
+ PMAP_READ_UNLOCK(pmap, spl);
return(virt);
}