Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/next68k/next68k Move physmem calculations before np...



details:   https://anonhg.NetBSD.org/src/rev/c4bcab30a062
branches:  trunk
changeset: 325747:c4bcab30a062
user:      tsutsui <tsutsui%NetBSD.org@localhost>
date:      Sun Jan 05 06:30:48 2014 +0000

description:
Move physmem calculations before nptpage initialization.

Should fix next68k specific part of PR port-m68k/45915
(panic: pmap_enter_ptpage: can't get KPT page), and
this is the last possible m68k MD part of this PR.

Note this change is not tested on the actual machine (yet),
but as noted in comment next68k/pmap_bootstrap.c is based on
the mvme68k one which has been fixed by the similar diff.

Should be pulled up to all netbsd-6 branches.

diffstat:

 sys/arch/next68k/next68k/pmap_bootstrap.c |  76 +++++++++++++++---------------
 1 files changed, 38 insertions(+), 38 deletions(-)

diffs (104 lines):

diff -r a0b40a72e0f6 -r c4bcab30a062 sys/arch/next68k/next68k/pmap_bootstrap.c
--- a/sys/arch/next68k/next68k/pmap_bootstrap.c Sun Jan 05 00:53:53 2014 +0000
+++ b/sys/arch/next68k/next68k/pmap_bootstrap.c Sun Jan 05 06:30:48 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap_bootstrap.c,v 1.42 2012/02/10 06:28:39 mhitch Exp $       */
+/*     $NetBSD: pmap_bootstrap.c,v 1.43 2014/01/05 06:30:48 tsutsui Exp $      */
 
 /*
  * This file was taken from mvme68k/mvme68k/pmap_bootstrap.c
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.42 2012/02/10 06:28:39 mhitch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.43 2014/01/05 06:30:48 tsutsui Exp $");
 
 #include "opt_m68k_arch.h"
 
@@ -111,6 +111,42 @@
 #endif
 
        /*
+        * Initialize the mem_clusters[] array for the crash dump
+        * code.  While we're at it, compute the total amount of
+        * physical memory in the system.
+        */
+       for (i = 0; i < VM_PHYSSEG_MAX; i++) {
+               if (RELOC(phys_seg_list[i].ps_start, paddr_t) ==
+                   RELOC(phys_seg_list[i].ps_end, paddr_t)) {
+                       /*
+                        * No more memory.
+                        */
+                       break;
+               }
+
+               /*
+                * Make sure these are properly rounded.
+                */
+               RELOC(phys_seg_list[i].ps_start, paddr_t) =
+                   m68k_round_page(RELOC(phys_seg_list[i].ps_start,
+                                         paddr_t));
+               RELOC(phys_seg_list[i].ps_end, paddr_t) =
+                   m68k_trunc_page(RELOC(phys_seg_list[i].ps_end,
+                                         paddr_t));
+
+               size = RELOC(phys_seg_list[i].ps_end, paddr_t) -
+                   RELOC(phys_seg_list[i].ps_start, paddr_t);
+
+               RELOC(mem_clusters[i].start, u_quad_t) =
+                   RELOC(phys_seg_list[i].ps_start, paddr_t);
+               RELOC(mem_clusters[i].size, u_quad_t) = size;
+
+               RELOC(physmem, int) += size >> PGSHIFT;
+
+               RELOC(mem_cluster_cnt, int) += 1;
+       }
+
+       /*
         * Calculate important physical addresses:
         *
         *      lwp0upa         lwp0 u-area             UPAGES pages
@@ -484,42 +520,6 @@
        RELOC(lwp0uarea, vaddr_t) = lwp0upa - firstpa;
 
        /*
-        * Initialize the mem_clusters[] array for the crash dump
-        * code.  While we're at it, compute the total amount of
-        * physical memory in the system.
-        */
-       for (i = 0; i < VM_PHYSSEG_MAX; i++) {
-               if (RELOC(phys_seg_list[i].ps_start, paddr_t) ==
-                   RELOC(phys_seg_list[i].ps_end, paddr_t)) {
-                       /*
-                        * No more memory.
-                        */
-                       break;
-               }
-
-               /*
-                * Make sure these are properly rounded.
-                */
-               RELOC(phys_seg_list[i].ps_start, paddr_t) =
-                   m68k_round_page(RELOC(phys_seg_list[i].ps_start,
-                                         paddr_t));
-               RELOC(phys_seg_list[i].ps_end, paddr_t) =
-                   m68k_trunc_page(RELOC(phys_seg_list[i].ps_end,
-                                         paddr_t));
-
-               size = RELOC(phys_seg_list[i].ps_end, paddr_t) -
-                   RELOC(phys_seg_list[i].ps_start, paddr_t);
-
-               RELOC(mem_clusters[i].start, u_quad_t) =
-                   RELOC(phys_seg_list[i].ps_start, paddr_t);
-               RELOC(mem_clusters[i].size, u_quad_t) = size;
-
-               RELOC(physmem, int) += size >> PGSHIFT;
-
-               RELOC(mem_cluster_cnt, int) += 1;
-       }
-
-       /*
         * Scoot the start of available on-board RAM forward to
         * account for:
         *



Home | Main Index | Thread Index | Old Index