Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-4]: src/sys/arch/alpha/alpha Pull up revision 1.116 (requested ...



details:   https://anonhg.NetBSD.org/src/rev/0f136eb3c82b
branches:  netbsd-1-4
changeset: 469755:0f136eb3c82b
user:      he <he%NetBSD.org@localhost>
date:      Sat Nov 27 16:02:09 1999 +0000

description:
Pull up revision 1.116 (requested by mycroft):
  Fix bugs in pmap_protect():
   o do not overrun eva by L1SEG_SIZE - PAGE_SIZE.
   o do not advance sva twice for each valid l3 or l2 page.

diffstat:

 sys/arch/alpha/alpha/pmap.c |  19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)

diffs (44 lines):

diff -r 44351ee2bf28 -r 0f136eb3c82b sys/arch/alpha/alpha/pmap.c
--- a/sys/arch/alpha/alpha/pmap.c       Sat Nov 27 15:56:16 1999 +0000
+++ b/sys/arch/alpha/alpha/pmap.c       Sat Nov 27 16:02:09 1999 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.88.2.4 1999/06/18 16:49:45 perry Exp $ */
+/* $NetBSD: pmap.c,v 1.88.2.5 1999/11/27 16:02:09 he Exp $ */
 
 /*-
  * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc.
@@ -155,7 +155,7 @@
 
 #include <sys/cdefs.h>                 /* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.88.2.4 1999/06/18 16:49:45 perry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.88.2.5 1999/11/27 16:02:09 he Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1496,19 +1496,16 @@
        isactive = PMAP_ISACTIVE(pmap);
 
        l1pte = pmap_l1pte(pmap, sva);
-       for (; sva < eva;
-            sva = alpha_trunc_l1seg(sva) + ALPHA_L1SEG_SIZE, l1pte++) {
+       for (; sva < eva; sva = l1eva, l1pte++) {
+               l1eva = alpha_trunc_l1seg(sva) + ALPHA_L1SEG_SIZE;
                if (pmap_pte_v(l1pte)) {
                        l2pte = pmap_l2pte(pmap, sva, l1pte);
-                       for (l1eva = alpha_trunc_l1seg(sva) + ALPHA_L1SEG_SIZE;
-                            sva < l1eva;
-                            sva = alpha_trunc_l2seg(sva) + ALPHA_L2SEG_SIZE,
-                             l2pte++) {
+                       for (; sva < l1eva && sva < eva; sva = l2eva, l2pte++) {
+                               l2eva =
+                                   alpha_trunc_l2seg(sva) + ALPHA_L2SEG_SIZE;
                                if (pmap_pte_v(l2pte)) {
                                        l3pte = pmap_l3pte(pmap, sva, l2pte);
-                                       for (l2eva = alpha_trunc_l2seg(sva) +
-                                                ALPHA_L2SEG_SIZE;
-                                            sva < l2eva;
+                                       for (; sva < l2eva && sva < eva;
                                             sva += PAGE_SIZE, l3pte++) {
                                                if (pmap_pte_v(l3pte) &&
                                                    pmap_pte_prot_chg(l3pte,



Home | Main Index | Thread Index | Old Index