Module Name:    src
Committed By:   skrll
Date:           Sun Mar 19 12:46:21 UTC 2017

Modified Files:
        src/sys/arch/cats/cats: cats_machdep.c

Log Message:
Support __HAVE_MM_MD_DIRECT_MAPPED_PHYS


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/sys/arch/cats/cats/cats_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/cats/cats/cats_machdep.c
diff -u src/sys/arch/cats/cats/cats_machdep.c:1.82 src/sys/arch/cats/cats/cats_machdep.c:1.83
--- src/sys/arch/cats/cats/cats_machdep.c:1.82	Fri Apr  4 07:33:53 2014
+++ src/sys/arch/cats/cats/cats_machdep.c	Sun Mar 19 12:46:21 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: cats_machdep.c,v 1.82 2014/04/04 07:33:53 skrll Exp $	*/
+/*	$NetBSD: cats_machdep.c,v 1.83 2017/03/19 12:46:21 skrll Exp $	*/
 
 /*
  * Copyright (c) 1997,1998 Mark Brinicombe.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cats_machdep.c,v 1.82 2014/04/04 07:33:53 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cats_machdep.c,v 1.83 2017/03/19 12:46:21 skrll Exp $");
 
 #include "opt_ddb.h"
 #include "opt_modular.h"
@@ -301,12 +301,41 @@ initarm(void *arm_bootargs)
 	 */
 	process_kernel_args(ebsabootinfo.bt_args);
 
-	arm32_bootmem_init(ebsabootinfo.bt_memstart,
-	    ebsabootinfo.bt_memend - ebsabootinfo.bt_memstart,
+	psize_t ram_size = ebsabootinfo.bt_memend - ebsabootinfo.bt_memstart;
+	/*
+	 * If MEMSIZE specified less than what we really have, limit ourselves
+	 * to that.
+	*/
+#ifdef MEMSIZE
+	if (ram_size == 0 || ram_size > (unsigned)MEMSIZE * 1024 * 1024)
+		ram_size = (unsigned)MEMSIZE * 1024 * 1024;
+	DPRINTF("ram_size = 0x%x\n", (int)ram_size);
+#else
+	KASSERTMSG(ram_size > 0, "RAM size unknown and MEMSIZE undefined");
+#endif
+
+#ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS
+	const bool mapallmem_p = true;
+
+#ifndef PMAP_NEED_ALLOC_POOLPAGE
+	if (ram_size > KERNEL_VM_BASE - KERNEL_BASE) {
+		printf("%s: dropping RAM size from %luMB to %uMB\n",
+		    __func__, (unsigned long) (ram_size >> 20),
+		    (KERNEL_VM_BASE - KERNEL_BASE) >> 20);
+		ram_size = KERNEL_VM_BASE - KERNEL_BASE;
+        }
+#endif
+#else
+        const bool mapallmem_p = false;
+#endif
+
+	printf("ram_size = 0x%08lx\n", ram_size);
+
+	arm32_bootmem_init(ebsabootinfo.bt_memstart, ram_size,
 	    ebsabootinfo.bt_memstart);
 
 	arm32_kernel_vm_init(KERNEL_VM_BASE, ARM_VECTORS_LOW, 0, cats_devmap,
-	    false);
+	    mapallmem_p);
 
 	printf("init subsystems: patch ");
 

Reply via email to