Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/sparc/sparc Restore TLB flushes when removing level...
details: https://anonhg.NetBSD.org/src/rev/26d115a1377f
branches: trunk
changeset: 546559:26d115a1377f
user: pk <pk%NetBSD.org@localhost>
date: Thu May 01 14:14:46 2003 +0000
description:
Restore TLB flushes when removing level 2 & 3 page tables (these went missing
in revision 1.242).
diffstat:
sys/arch/sparc/sparc/pmap.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diffs (31 lines):
diff -r 73cbc17ee386 -r 26d115a1377f sys/arch/sparc/sparc/pmap.c
--- a/sys/arch/sparc/sparc/pmap.c Thu May 01 14:11:11 2003 +0000
+++ b/sys/arch/sparc/sparc/pmap.c Thu May 01 14:14:46 2003 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.250 2003/03/25 11:33:46 pk Exp $ */
+/* $NetBSD: pmap.c,v 1.251 2003/05/01 14:14:46 pk Exp $ */
/*
* Copyright (c) 1996
@@ -4224,7 +4224,11 @@
static void pgt_lvl23_remove4m(struct pmap *pm, struct regmap *rp,
struct segmap *sp, int vr, int vs)
{
+
/* Invalidate level 2 PTP entry */
+ if (pm->pm_ctx)
+ tlb_flush_segment(VSTOVA(vr,vs), pm->pm_ctxnum,
+ PMAP_CPUSET(pm));
setpgt4m(&rp->rg_seg_ptps[vs], SRMMU_TEINVALID);
pool_put(&L23_pool, sp->sg_pte);
sp->sg_pte = NULL;
@@ -4232,6 +4236,9 @@
/* If region is now empty, remove level 2 pagetable as well */
if (--rp->rg_nsegmap == 0) {
int n = 0;
+ if (pm->pm_ctx)
+ tlb_flush_region(VRTOVA(vr), pm->pm_ctxnum,
+ PMAP_CPUSET(pm));
#ifdef MULTIPROCESSOR
/* Invalidate level 1 PTP entries on all CPUs */
for (; n < ncpu; n++)
Home |
Main Index |
Thread Index |
Old Index