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