summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>1999-08-03 15:35:24 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>1999-08-03 15:35:24 +0000
commitc9137483443acc917326af2ee2cd2deb4699bf59 (patch)
tree847a4af151a21be341219db48b38614454a59164 /sys
parente4ad7ec5153f083d6c217951f62c45f7b5bef1bf (diff)
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