diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1996-08-12 00:55:18 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1996-08-12 00:55:18 +0000 |
commit | e7def6a18451ccfbe6b6b586b2f19318e0fb39a8 (patch) | |
tree | e6de4f024b091065e91b0ef06d490015851fec0f /sys | |
parent | 60adf95fdb995006194cd42201613c5d0e8c2213 (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.c | 11 |
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 { |