summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormickey <mickey@openbsd.org>1999-08-03 15:35:23 +0000
committermickey <mickey@openbsd.org>1999-08-03 15:35:23 +0000
commitd844e22f00ebba1e90a0339f8c3a23b61270e8ab (patch)
tree9725ad43462029f51391070421f7c09ba1e702a5 /sys
parent* rf_reconstruct.c: adopt nilkas' suggestion regard statics and (diff)
downloadwireguard-openbsd-d844e22f00ebba1e90a0339f8c3a23b61270e8ab.tar.xz
wireguard-openbsd-d844e22f00ebba1e90a0339f8c3a23b61270e8ab.zip
flush caches and tlb on mapping removal
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/hppa/hppa/pmap.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/arch/hppa/hppa/pmap.c b/sys/arch/hppa/hppa/pmap.c
index b308e25ac98..2a4390dba9c 100644
--- a/sys/arch/hppa/hppa/pmap.c
+++ b/sys/arch/hppa/hppa/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.18 1999/08/03 00:53:30 mickey Exp $ */
+/* $OpenBSD: pmap.c,v 1.19 1999/08/03 15:35:23 mickey Exp $ */
/*
* Copyright (c) 1998,1999 Michael Shalayeff
@@ -547,6 +547,17 @@ pmap_remove_pv(pmap, va, pv)
s = splimp();
/*
+ * Clear it from cache and TLB
+ */
+ ficache(pv->pv_space, pv->pv_va, PAGE_SIZE);
+ pitlb(pv->pv_space, pv->pv_va);
+
+ fdcache(pv->pv_space, pv->pv_va, PAGE_SIZE);
+ pdtlb(pv->pv_space, pv->pv_va);
+
+ pmap_clear_va(pv->pv_space, pv->pv_va);
+
+ /*
* If it is the first entry on the list, it is actually
* in the header and we must copy the following entry up
* to the header. Otherwise we must search the list for