diff options
author | 2004-01-28 13:04:57 +0000 | |
---|---|---|
committer | 2004-01-28 13:04:57 +0000 | |
commit | 534797d04d6d428202cb9c54277ccee58d6f68ce (patch) | |
tree | d812e73911135c7eabdc4f2f326fec6f617b187a | |
parent | Document the tftp bootloader, mention that the full-blown Sun-compatible (diff) | |
download | wireguard-openbsd-534797d04d6d428202cb9c54277ccee58d6f68ce.tar.xz wireguard-openbsd-534797d04d6d428202cb9c54277ccee58d6f68ce.zip |
Use write-back mappings whenever possible again, but make sure that
vmapbuf() returns write-through mappings.
-rw-r--r-- | sys/arch/mvme88k/mvme88k/pmap.c | 24 | ||||
-rw-r--r-- | sys/arch/mvme88k/mvme88k/vm_machdep.c | 4 |
2 files changed, 6 insertions, 22 deletions
diff --git a/sys/arch/mvme88k/mvme88k/pmap.c b/sys/arch/mvme88k/mvme88k/pmap.c index 705ce86a085..669a867d53a 100644 --- a/sys/arch/mvme88k/mvme88k/pmap.c +++ b/sys/arch/mvme88k/mvme88k/pmap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pmap.c,v 1.109 2004/01/15 23:36:08 miod Exp $ */ +/* $OpenBSD: pmap.c,v 1.110 2004/01/28 13:04:57 miod Exp $ */ /* * Copyright (c) 2001, 2002, 2003 Miodrag Vallat * Copyright (c) 1998-2001 Steve Murphree, Jr. @@ -64,11 +64,6 @@ #include <machine/pmap_table.h> /* - * Define this to allow write-back caching. Use at your own risk. - */ -#undef PMAP_USE_WRITEBACK - -/* * VM externals */ extern vaddr_t avail_start, avail_end; @@ -1094,9 +1089,7 @@ pmap_zero_page(struct vm_page *pg) * So be sure to have the pa flushed after the filling. */ bzero((void *)va, PAGE_SIZE); -#ifdef PMAP_USE_WRITEBACK cmmu_flush_data_cache(cpu, pa, PAGE_SIZE); -#endif SPLX(spl); } @@ -1149,10 +1142,7 @@ pmap_create(void) (paddr_t *)&stpa) == FALSE) panic("pmap_create: pmap_extract failed!"); pmap->pm_apr = (atop(stpa) << PG_SHIFT) | - CACHE_GLOBAL | CACHE_WT | APR_V; -#ifdef PMAP_USE_WRITEBACK - pmap->pm_apr &= ~CACHE_WT; /* enable writeback */ -#endif + CACHE_GLOBAL | APR_V; #ifdef DEBUG if (!PAGE_ALIGNED(stpa)) @@ -1165,11 +1155,9 @@ pmap_create(void) } #endif -#ifdef PMAP_USE_WRITEBACK /* memory for page tables should not be writeback or local */ pmap_cache_ctrl(kernel_pmap, (vaddr_t)segdt, (vaddr_t)segdt + s, CACHE_GLOBAL | CACHE_WT); -#endif /* * Initialize SDT_ENTRIES. @@ -1795,11 +1783,9 @@ pmap_expand(pmap_t pmap, vaddr_t v) if (pmap_extract(kernel_pmap, pdt_vaddr, &pdt_paddr) == FALSE) panic("pmap_expand: pmap_extract failed"); -#ifdef PMAP_USE_WRITEBACK /* memory for page tables should not be writeback or local */ pmap_cache_ctrl(kernel_pmap, pdt_vaddr, pdt_vaddr + PAGE_SIZE, CACHE_GLOBAL | CACHE_WT); -#endif PMAP_LOCK(pmap, spl); @@ -2401,7 +2387,7 @@ pmap_copy_page(struct vm_page *srcpg, struct vm_page *dstpg) CHECK_PAGE_ALIGN(dst, "pmap_copy_page - dst"); dstva = (vaddr_t)(phys_map_vaddr + 2 * (cpu << PAGE_SHIFT)); - srcva = (vaddr_t)(phys_map_vaddr + PAGE_SIZE + 2 * (cpu << PAGE_SHIFT)); + srcva = dstva + PAGE_SIZE; dstpte = pmap_pte(kernel_pmap, dstva); srcpte = pmap_pte(kernel_pmap, srcva); @@ -2424,13 +2410,9 @@ pmap_copy_page(struct vm_page *srcpg, struct vm_page *dstpg) * So be sure to have the source pa flushed before the copy is * attempted, and the destination pa flushed afterwards. */ -#ifdef PMAP_USE_WRITEBACK cmmu_flush_data_cache(cpu, src, PAGE_SIZE); -#endif bcopy((const void *)srcva, (void *)dstva, PAGE_SIZE); -#ifdef PMAP_USE_WRITEBACK cmmu_flush_data_cache(cpu, dst, PAGE_SIZE); -#endif SPLX(spl); } diff --git a/sys/arch/mvme88k/mvme88k/vm_machdep.c b/sys/arch/mvme88k/mvme88k/vm_machdep.c index ad9e5171679..aef9f202341 100644 --- a/sys/arch/mvme88k/mvme88k/vm_machdep.c +++ b/sys/arch/mvme88k/mvme88k/vm_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vm_machdep.c,v 1.59 2004/01/12 07:46:17 miod Exp $ */ +/* $OpenBSD: vm_machdep.c,v 1.60 2004/01/28 13:04:58 miod Exp $ */ /* * Copyright (c) 1998 Steve Murphree, Jr. @@ -292,6 +292,8 @@ vmapbuf(bp, len) pmap_enter(vm_map_pmap(phys_map), kva, pa, VM_PROT_READ | VM_PROT_WRITE, VM_PROT_READ | VM_PROT_WRITE | PMAP_WIRED); + pmap_cache_ctrl(pmap_kernel(), kva, kva + PAGE_SIZE, + CACHE_WT | CACHE_GLOBAL); addr += PAGE_SIZE; kva += PAGE_SIZE; len -= PAGE_SIZE; |