summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2004-01-28 13:04:57 +0000
committermiod <miod@openbsd.org>2004-01-28 13:04:57 +0000
commit534797d04d6d428202cb9c54277ccee58d6f68ce (patch)
treed812e73911135c7eabdc4f2f326fec6f617b187a
parentDocument the tftp bootloader, mention that the full-blown Sun-compatible (diff)
downloadwireguard-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.c24
-rw-r--r--sys/arch/mvme88k/mvme88k/vm_machdep.c4
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;