summaryrefslogtreecommitdiff
path: root/sys/arch/arm
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2016-08-11 00:28:07 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2016-08-11 00:28:07 +0000
commit84f45aab4c78d25c3fd9f890d0aa2245722fe3cd (patch)
tree74c56a602a29bcdd29471eb623b6b4ad0920e6b7 /sys/arch/arm
parent08a5fbe425befb167b985c367a7a2b0f11c92f5d (diff)
The ARMv7 ARM says that the TLB may hold translation table entries at any
level of the translation table, including entries that point to further levels of the tables. This means that we have to do a TLB flush whenever we invalidate an L1 slot too. Doing so fixes the pmap_fault_fixup issue on Cortex-A7 processors.
Diffstat (limited to 'sys/arch/arm')
-rw-r--r--sys/arch/arm/arm/pmap7.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/arch/arm/arm/pmap7.c b/sys/arch/arm/arm/pmap7.c
index fbd7a1328e4..9c614480108 100644
--- a/sys/arch/arm/arm/pmap7.c
+++ b/sys/arch/arm/arm/pmap7.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap7.c,v 1.36 2016/08/09 13:13:51 kettenis Exp $ */
+/* $OpenBSD: pmap7.c,v 1.37 2016/08/11 00:28:06 kettenis Exp $ */
/* $NetBSD: pmap.c,v 1.147 2004/01/18 13:03:50 scw Exp $ */
/*
@@ -850,6 +850,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2_bucket *l2b, u_int count)
if (l1pd == (L1_C_DOM(pm->pm_domain) | L1_TYPE_C)) {
*pl1pd = L1_TYPE_INV;
PTE_SYNC(pl1pd);
+ pmap_tlb_flushID_SE(pm, l1idx << L1_S_SHIFT);
}
/*