summaryrefslogtreecommitdiffstats
path: root/sys/amd64/amd64/db_interface.c
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2003-03-30 01:16:19 +0000
committerjake <jake@FreeBSD.org>2003-03-30 01:16:19 +0000
commitb88859c2da2181939198145777bde05e1f583403 (patch)
treef5fa1fa09e8bf4752a0fa176c9ff2c1a664484b9 /sys/amd64/amd64/db_interface.c
parent478d776b152499d1b9d8d51e64a83921460118f9 (diff)
downloadFreeBSD-src-b88859c2da2181939198145777bde05e1f583403.zip
FreeBSD-src-b88859c2da2181939198145777bde05e1f583403.tar.gz
- 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
Diffstat (limited to 'sys/amd64/amd64/db_interface.c')
-rw-r--r--sys/amd64/amd64/db_interface.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/amd64/amd64/db_interface.c b/sys/amd64/amd64/db_interface.c
index e2b936b..a26a555 100644
--- a/sys/amd64/amd64/db_interface.c
+++ b/sys/amd64/amd64/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;
}
OpenPOWER on IntegriCloud