aboutsummaryrefslogtreecommitdiff
path: root/sys/i386/i386/db_interface.c
diff options
context:
space:
mode:
authorJake Burkholder <jake@FreeBSD.org>2003-03-30 01:16:19 +0000
committerJake Burkholder <jake@FreeBSD.org>2003-03-30 01:16:19 +0000
commitaea57872f0c13d536ac29d42d3b84490faceb30e (patch)
treef5fa1fa09e8bf4752a0fa176c9ff2c1a664484b9 /sys/i386/i386/db_interface.c
parent6900a17c75ebe154aa8674701a0fa32121fa357d (diff)
downloadsrc-aea57872f0c13d536ac29d42d3b84490faceb30e.tar.gz
src-aea57872f0c13d536ac29d42d3b84490faceb30e.zip
- Convert all uses of pmap_pte and get_ptbase to pmap_pte_quick. When
accessing an alternate address space this causes 1 page table page at a time to be mapped in, rather than using the recursive mapping technique to map in an entire alternate address space. The recursive mapping technique changes large portions of the address space and requires global tlb flushes, which seem to cause problems when PAE is enabled. This will also allow IPIs to be avoided when mapping in new page table pages using the same technique as is used for pmap_copy_page and pmap_zero_page. Sponsored by: DARPA, Network Associates Laboratories
Notes
Notes: svn path=/head/; revision=112836
Diffstat (limited to 'sys/i386/i386/db_interface.c')
-rw-r--r--sys/i386/i386/db_interface.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/i386/i386/db_interface.c b/sys/i386/i386/db_interface.c
index e2b936bb1f0d..a26a555af779 100644
--- a/sys/i386/i386/db_interface.c
+++ b/sys/i386/i386/db_interface.c
@@ -262,7 +262,7 @@ db_write_bytes(vm_offset_t addr, size_t size, char *data)
if (addr > trunc_page((vm_offset_t)btext) - size &&
addr < round_page((vm_offset_t)etext)) {
- ptep0 = pmap_pte(kernel_pmap, addr);
+ ptep0 = pmap_pte_quick(kernel_pmap, addr);
oldmap0 = *ptep0;
*ptep0 |= PG_RW;
@@ -270,14 +270,14 @@ db_write_bytes(vm_offset_t addr, size_t size, char *data)
if ((*ptep0 & PG_PS) == 0) {
addr1 = trunc_page(addr + size - 1);
if (trunc_page(addr) != addr1) {
- ptep1 = pmap_pte(kernel_pmap, addr1);
+ ptep1 = pmap_pte_quick(kernel_pmap, addr1);
oldmap1 = *ptep1;
*ptep1 |= PG_RW;
}
} else {
addr1 = trunc_4mpage(addr + size - 1);
if (trunc_4mpage(addr) != addr1) {
- ptep1 = pmap_pte(kernel_pmap, addr1);
+ ptep1 = pmap_pte_quick(kernel_pmap, addr1);
oldmap1 = *ptep1;
*ptep1 |= PG_RW;
}