Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/mvme68k/mvme68k Move physmem calculations before np...
details: https://anonhg.NetBSD.org/src/rev/d44fbcacb1a6
branches: trunk
changeset: 790107:d44fbcacb1a6
user: tsutsui <tsutsui%NetBSD.org@localhost>
date: Thu Sep 19 12:04:36 2013 +0000
description:
Move physmem calculations before nptpage initialization.
Fixes mvme68k specific part of PR port-m68k/45915
(panic: pmap_enter_ptpage: can't get KPT page).
Reported and confirmed by Andrew Gillham on his MVME177:
http://mail-index.NetBSD.org/port-mvme68k/2013/09/17/msg000082.html
Should be pulled up to all netbsd-6 branches.
diffstat:
sys/arch/mvme68k/mvme68k/pmap_bootstrap.c | 76 +++++++++++++++---------------
1 files changed, 38 insertions(+), 38 deletions(-)
diffs (104 lines):
diff -r 08bb10c415a6 -r d44fbcacb1a6 sys/arch/mvme68k/mvme68k/pmap_bootstrap.c
--- a/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c Thu Sep 19 01:49:07 2013 +0000
+++ b/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c Thu Sep 19 12:04:36 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap_bootstrap.c,v 1.51 2012/02/10 06:28:39 mhitch Exp $ */
+/* $NetBSD: pmap_bootstrap.c,v 1.52 2013/09/19 12:04:36 tsutsui Exp $ */
/*
* Copyright (c) 1991, 1993
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.51 2012/02/10 06:28:39 mhitch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.52 2013/09/19 12:04:36 tsutsui Exp $");
#include "opt_m68k_arch.h"
@@ -100,6 +100,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
@@ -409,42 +445,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