Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/hp300/hp300 Pull code that maps the kernel segment ...



details:   https://anonhg.NetBSD.org/src/rev/fc2a60889577
branches:  trunk
changeset: 760283:fc2a60889577
user:      tsutsui <tsutsui%NetBSD.org@localhost>
date:      Sun Jan 02 05:18:04 2011 +0000

description:
Pull code that maps the kernel segment table cache invalidated for 040/060,
to reduce diffs from other m68k ports.

Tested on HP362 (030) and HP382 (040), and no visible performance difference.
(what should we do per "for the 68040 not strictly necessary but
 recommended by Motorola" comment?)

diffstat:

 sys/arch/hp300/hp300/pmap_bootstrap.c |  25 +++++++++++++++++++++----
 1 files changed, 21 insertions(+), 4 deletions(-)

diffs (56 lines):

diff -r 22f59e785505 -r fc2a60889577 sys/arch/hp300/hp300/pmap_bootstrap.c
--- a/sys/arch/hp300/hp300/pmap_bootstrap.c     Sun Jan 02 05:13:53 2011 +0000
+++ b/sys/arch/hp300/hp300/pmap_bootstrap.c     Sun Jan 02 05:18:04 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap_bootstrap.c,v 1.47 2010/12/25 14:43:00 tsutsui Exp $      */
+/*     $NetBSD: pmap_bootstrap.c,v 1.48 2011/01/02 05:18:04 tsutsui Exp $      */
 
 /*
  * Copyright (c) 1991, 1993
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.47 2010/12/25 14:43:00 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.48 2011/01/02 05:18:04 tsutsui Exp $");
 
 #include <sys/param.h>
 
@@ -365,11 +365,11 @@
        }
        /*
         * Validate PTEs for kernel data/bss, dynamic data allocated
-        * by us so far (nextpa - firstpa bytes), and pages for lwp0
+        * by us so far (kstpa - firstpa bytes), and pages for lwp0
         * u-area and page table allocated below (RW).
         */
        epte = (pt_entry_t *)kptpa;
-       epte = &epte[m68k_btop(nextpa - firstpa)];
+       epte = &epte[m68k_btop(kstpa - firstpa)];
        protopte = (protopte & ~PG_PROT) | PG_RW;
        /*
         * Enable copy-back caching of data pages
@@ -381,6 +381,23 @@
                protopte += PAGE_SIZE;
        }
        /*
+        * map the kernel segment table cache invalidated for
+        * these machines (for the 68040 not strictly necessary, but
+        * recommended by Motorola; for the 68060 mandatory)
+        */
+       epte = (pt_entry_t *)kptpa;
+       epte = &epte[m68k_btop(nextpa - firstpa)];
+       protopte = (protopte & ~PG_PROT) | PG_RW;
+       if (RELOC(mmutype, int) == MMU_68040) {
+               protopte &= ~PG_CCB;
+               protopte |= PG_CIN;
+       }
+       while (pte < epte) {
+               *pte++ = protopte;
+               protopte += PAGE_SIZE;
+       }
+
+       /*
         * Finally, validate the internal IO space PTEs (RW+CI).
         * We do this here since the 320/350 MMU registers (also
         * used, but to a lesser extent, on other models) are mapped



Home | Main Index | Thread Index | Old Index