Module Name:    src
Committed By:   matt
Date:           Fri Mar 28 21:56:45 UTC 2014

Modified Files:
        src/sys/arch/arm/arm32: arm32_kvminit.c

Log Message:
ARM_MMU_EXTENDED support.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/arm32/arm32_kvminit.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/arm/arm32/arm32_kvminit.c
diff -u src/sys/arch/arm/arm32/arm32_kvminit.c:1.24 src/sys/arch/arm/arm32/arm32_kvminit.c:1.25
--- src/sys/arch/arm/arm32/arm32_kvminit.c:1.24	Wed Mar  5 02:17:21 2014
+++ src/sys/arch/arm/arm32/arm32_kvminit.c	Fri Mar 28 21:56:45 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: arm32_kvminit.c,v 1.24 2014/03/05 02:17:21 matt Exp $	*/
+/*	$NetBSD: arm32_kvminit.c,v 1.25 2014/03/28 21:56:45 matt Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003, 2005  Genetec Corporation.  All rights reserved.
@@ -122,7 +122,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: arm32_kvminit.c,v 1.24 2014/03/05 02:17:21 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: arm32_kvminit.c,v 1.25 2014/03/28 21:56:45 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -371,7 +371,7 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 {
 	struct bootmem_info * const bmi = &bootmem_info;
 #ifdef MULTIPROCESSOR
-	const size_t cpu_num = arm_cpu_max + 1;
+	const size_t cpu_num = arm_cpu_max;
 #else
 	const size_t cpu_num = 1;
 #endif
@@ -903,11 +903,12 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 	 * tables.
 	 */
 
-#if defined(VERBOSE_INIT_ARM) && 0
+#if defined(VERBOSE_INIT_ARM)
 	printf("TTBR0=%#x", armreg_ttbr_read());
 #ifdef _ARM_ARCH_6
-	printf(" TTBR1=%#x TTBCR=%#x",
-	    armreg_ttbr1_read(), armreg_ttbcr_read());
+	printf(" TTBR1=%#x TTBCR=%#x CONTEXTIDR=%#x",
+	    armreg_ttbr1_read(), armreg_ttbcr_read(),
+	    armreg_contextidr_read());
 #endif
 	printf("\n");
 #endif
@@ -931,6 +932,7 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 	/*
 	 * TTBCR should have been initialized by the MD start code.
 	 */
+	KASSERT((armreg_contextidr_read() & 0xff) == 0);
 	KASSERT(armreg_ttbcr_read() == __SHIFTIN(1, TTBCR_S_N));
 	/*
 	 * Disable lookups via TTBR0 until there is an activated pmap.
@@ -951,6 +953,20 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 #else
 	printf(" (TTBR0=%#x)", armreg_ttbr_read());
 #endif
+#endif
+
+#ifdef MULTIPROCESSOR
+	/*
+	 * Kick the secondaries to load the TTB.  After which they'll go
+	 * back to sleep to wait for the final kick so they will hatch.
+	 */
+#ifdef VERBOSE_INIT_ARM
+	printf(" hatchlings");
+#endif
+	cpu_boot_secondary_processors();
+#endif
+
+#ifdef VERBOSE_INIT_ARM
 	printf(" OK\n");
 #endif
 }

Reply via email to