summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1996-08-12 00:55:18 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1996-08-12 00:55:18 +0000
commite7def6a18451ccfbe6b6b586b2f19318e0fb39a8 (patch)
treee6de4f024b091065e91b0ef06d490015851fec0f /sys
parent60adf95fdb995006194cd42201613c5d0e8c2213 (diff)
merge 1.2 mmu_pagein decl; 1.3-5 4/300 writethrough vac bug
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/sparc/sparc/pmap.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/arch/sparc/sparc/pmap.c b/sys/arch/sparc/sparc/pmap.c
index 226bf7f6715..07e1bc3be80 100644
--- a/sys/arch/sparc/sparc/pmap.c
+++ b/sys/arch/sparc/sparc/pmap.c
@@ -1645,7 +1645,8 @@ region_free(pm, smeg)
int
mmu_pagein(pm, va, prot)
register struct pmap *pm;
- register int va, prot;
+ register int va;
+ vm_prot_t prot;
{
register int *pte;
register int vr, vs, pmeg, i, s, bits;
@@ -4722,7 +4723,13 @@ pmap_changeprot4_4c(pm, va, prot, wired)
setcontext(ctx);
goto useless;
}
- if (vactype == VAC_WRITEBACK &&
+
+ /*
+ * the latter check deals with a writethrough cache
+ * problem on the 4/300
+ */
+ if ((vactype==VAC_WRITEBACK ||
+ (vactype==VAC_WRITETHROUGH && cputyp==CPU_SUN4)) &&
(tpte & (PG_U|PG_NC|PG_TYPE)) == (PG_U|PG_OBMEM))
cache_flush_page((int)va);
} else {