diff options
author | 1999-08-03 15:35:23 +0000 | |
---|---|---|
committer | 1999-08-03 15:35:23 +0000 | |
commit | d844e22f00ebba1e90a0339f8c3a23b61270e8ab (patch) | |
tree | 9725ad43462029f51391070421f7c09ba1e702a5 /sys | |
parent | * rf_reconstruct.c: adopt nilkas' suggestion regard statics and (diff) | |
download | wireguard-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.c | 13 |
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 |