Source-Changes-HG archive

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

[src/trunk]: src/sys/arch Add a third argument to pmap_bootstrap() which plat...



details:   https://anonhg.NetBSD.org/src/rev/b0cfaf059460
branches:  trunk
changeset: 526018:b0cfaf059460
user:      kleink <kleink%NetBSD.org@localhost>
date:      Tue Apr 23 12:41:04 2002 +0000

description:
Add a third argument to pmap_bootstrap() which platform-specific
initialization can use to specify additional segment registers to be set
up in the kernel pmap.

diffstat:

 sys/arch/amigappc/amigappc/machdep.c   |   4 ++--
 sys/arch/bebox/bebox/machdep.c         |   4 ++--
 sys/arch/macppc/macppc/machdep.c       |   4 ++--
 sys/arch/mvmeppc/mvmeppc/machdep.c     |   4 ++--
 sys/arch/ofppc/ofppc/machdep.c         |   4 ++--
 sys/arch/powerpc/include/mpc6xx/pmap.h |  13 +++++++++++--
 sys/arch/powerpc/mpc6xx/pmap.c         |  15 +++++++++++++--
 sys/arch/prep/prep/machdep.c           |   4 ++--
 sys/arch/sandpoint/sandpoint/machdep.c |   4 ++--
 9 files changed, 38 insertions(+), 18 deletions(-)

diffs (189 lines):

diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/amigappc/amigappc/machdep.c
--- a/sys/arch/amigappc/amigappc/machdep.c      Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/amigappc/amigappc/machdep.c      Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.17 2001/12/04 18:54:11 is Exp $ */
+/* $NetBSD: machdep.c,v 1.18 2002/04/23 12:41:04 kleink Exp $ */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -252,7 +252,7 @@
        /*
         * Initialize pmap module
         */
-       pmap_bootstrap(startkernel, endkernel);
+       pmap_bootstrap(startkernel, endkernel, NULL);
 }
 
 
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/bebox/bebox/machdep.c
--- a/sys/arch/bebox/bebox/machdep.c    Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/bebox/bebox/machdep.c    Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.70 2002/02/26 23:56:52 kleink Exp $      */
+/*     $NetBSD: machdep.c,v 1.71 2002/04/23 12:41:04 kleink Exp $      */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -348,7 +348,7 @@
        /*
         * Initialize pmap module.
         */
-       pmap_bootstrap(startkernel, endkernel);
+       pmap_bootstrap(startkernel, endkernel, NULL);
 
 #ifdef DDB
        ddb_init((int)((u_int)endsym - (u_int)startsym), startsym, endsym);
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/macppc/macppc/machdep.c
--- a/sys/arch/macppc/macppc/machdep.c  Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/macppc/macppc/machdep.c  Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.110 2002/03/02 00:44:08 matt Exp $       */
+/*     $NetBSD: machdep.c,v 1.111 2002/04/23 12:41:05 kleink Exp $     */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -391,7 +391,7 @@
        /*
         * Initialize pmap module.
         */
-       pmap_bootstrap(startkernel, endkernel);
+       pmap_bootstrap(startkernel, endkernel, NULL);
 
        restore_ofmap(ofmap, ofmaplen);
 }
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/mvmeppc/mvmeppc/machdep.c
--- a/sys/arch/mvmeppc/mvmeppc/machdep.c        Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/mvmeppc/mvmeppc/machdep.c        Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.2 2002/03/02 11:01:50 scw Exp $  */
+/*     $NetBSD: machdep.c,v 1.3 2002/04/23 12:41:06 kleink Exp $       */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -336,7 +336,7 @@
        /*
         * Initialize pmap module.
         */
-       pmap_bootstrap(startkernel, endkernel);
+       pmap_bootstrap(startkernel, endkernel, NULL);
 
 #ifdef DDB
        ddb_init((int)((u_long)endsym - (u_long)startsym), startsym, endsym);
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/ofppc/ofppc/machdep.c
--- a/sys/arch/ofppc/ofppc/machdep.c    Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/ofppc/ofppc/machdep.c    Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.73 2001/10/29 19:04:26 thorpej Exp $     */
+/*     $NetBSD: machdep.c,v 1.74 2002/04/23 12:41:07 kleink Exp $      */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -266,7 +266,7 @@
        /*
         * Initialize pmap module.
         */
-       pmap_bootstrap(startkernel, endkernel);
+       pmap_bootstrap(startkernel, endkernel, NULL);
 
 #ifdef DDB
        ddb_init((int)((u_int)endsym - (u_int)startsym), startsym, endsym);
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/powerpc/include/mpc6xx/pmap.h
--- a/sys/arch/powerpc/include/mpc6xx/pmap.h    Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/powerpc/include/mpc6xx/pmap.h    Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap.h,v 1.3 2001/06/28 20:31:37 matt Exp $    */
+/*     $NetBSD: pmap.h,v 1.4 2002/04/23 12:41:07 kleink Exp $  */
 
 /*-
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -73,7 +73,16 @@
 #define        pmap_resident_count(pmap)       ((pmap)->pm_stats.resident_count)
 #define        pmap_wired_count(pmap)          ((pmap)->pm_stats.wired_count)
 
-void pmap_bootstrap (vaddr_t kernelstart, vaddr_t kernelend);
+/*
+ * pmap_bootstrap interface
+ */
+struct segtab {
+       sr_t    st_sr[16];      /* SR contents */
+       int     st_mask;        /* st_sr allocation bitmask */
+};
+
+void pmap_bootstrap (vaddr_t kernelstart, vaddr_t kernelend,
+    const struct segtab *);
 boolean_t pmap_extract (struct pmap *, vaddr_t, paddr_t *);
 boolean_t pmap_query_bit (struct vm_page *, int);
 boolean_t pmap_clear_bit (struct vm_page *, int);
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/powerpc/mpc6xx/pmap.c
--- a/sys/arch/powerpc/mpc6xx/pmap.c    Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/powerpc/mpc6xx/pmap.c    Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap.c,v 1.41 2002/04/19 20:56:56 kleink Exp $ */
+/*     $NetBSD: pmap.c,v 1.42 2002/04/23 12:41:07 kleink Exp $ */
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -2635,7 +2635,8 @@
  * is really initialized.
  */
 void
-pmap_bootstrap(paddr_t kernelstart, paddr_t kernelend)
+pmap_bootstrap(paddr_t kernelstart, paddr_t kernelend,
+    const struct segtab *kernsegs)
 {
        struct mem_region *mp, tmp;
        paddr_t s, e;
@@ -2903,6 +2904,16 @@
        __asm __volatile ("mtsr %0,%1"
                      :: "n"(KERNEL2_SR), "r"(KERNEL2_SEGMENT));
 #endif
+       if (kernsegs != NULL) {
+               for (i = 0; i < 16; i++) {
+                       if (kernsegs->st_mask & (1 << i)) {
+                               pmap_kernel()->pm_sr[i] = kernsegs->st_sr[i];
+                               __asm __volatile ("mtsrin %0,%1"
+                                   :: "r"(i << ADDR_SR_SHFT),
+                                      "r"(kernsegs->st_sr[i]));
+                       }
+               }
+       }
        __asm __volatile ("sync; mtsdr1 %0; isync"
                      :: "r"((u_int)pmap_pteg_table | (pmap_pteg_mask >> 10)));
        tlbia();
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/prep/prep/machdep.c
--- a/sys/arch/prep/prep/machdep.c      Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/prep/prep/machdep.c      Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.36 2002/03/02 14:25:02 kleink Exp $      */
+/*     $NetBSD: machdep.c,v 1.37 2002/04/23 12:41:08 kleink Exp $      */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -371,7 +371,7 @@
        /*
         * Initialize pmap module.
         */
-       pmap_bootstrap(startkernel, endkernel);
+       pmap_bootstrap(startkernel, endkernel, NULL);
 
 #ifdef DDB
        ddb_init((int)((u_long)endsym - (u_long)startsym), startsym, endsym);
diff -r 5caddc36d756 -r b0cfaf059460 sys/arch/sandpoint/sandpoint/machdep.c
--- a/sys/arch/sandpoint/sandpoint/machdep.c    Tue Apr 23 12:07:52 2002 +0000
+++ b/sys/arch/sandpoint/sandpoint/machdep.c    Tue Apr 23 12:41:04 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.17 2002/03/05 19:06:38 briggs Exp $      */
+/*     $NetBSD: machdep.c,v 1.18 2002/04/23 12:41:08 kleink Exp $      */
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -356,7 +356,7 @@
        /*
         * Initialize pmap module.
         */
-       pmap_bootstrap(startkernel, endkernel);
+       pmap_bootstrap(startkernel, endkernel, NULL);
 
 #ifdef DDB
        ddb_init((int)((u_int)endsym - (u_int)startsym), startsym, endsym);



Home | Main Index | Thread Index | Old Index