diff options
author | 2013-02-14 05:50:49 +0000 | |
---|---|---|
committer | 2013-02-14 05:50:49 +0000 | |
commit | b98b1ac0b3caf58dc19d6fad9bdf13d150097f8b (patch) | |
tree | 760f2b4126ae768a708bc868f654f04bef6158d5 /sys | |
parent | Make libpthread compatible with an ld.so that does TCB allocation: (diff) | |
download | wireguard-openbsd-b98b1ac0b3caf58dc19d6fad9bdf13d150097f8b.tar.xz wireguard-openbsd-b98b1ac0b3caf58dc19d6fad9bdf13d150097f8b.zip |
Be sure to writeback D$ in addition to invalidate I$ in pmap_proc_iflush(),
or I$ may reload with stale data. It used to work without this because the
kernel used to run in write-through mode.
Repairs gdb single-stepping.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/m88k/m88k/pmap.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/arch/m88k/m88k/pmap.c b/sys/arch/m88k/m88k/pmap.c index f259b8e3a54..fcfb7cb8427 100644 --- a/sys/arch/m88k/m88k/pmap.c +++ b/sys/arch/m88k/m88k/pmap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pmap.c,v 1.68 2011/10/25 18:38:06 miod Exp $ */ +/* $OpenBSD: pmap.c,v 1.69 2013/02/14 05:50:49 miod Exp $ */ /* * Copyright (c) 2001-2004, 2010, Miodrag Vallat. @@ -1644,6 +1644,8 @@ pmap_proc_iflush(struct proc *p, vaddr_t va, vsize_t len) ci = curcpu(); #endif /* CPU_INFO_FOREACH(cpu, ci) */ { + if (KERNEL_APR_CMODE == CACHE_DFL) + cmmu_dcache_wb(ci->ci_cpuid, pa, count); cmmu_icache_inv(ci->ci_cpuid, pa, count); } } |