Module Name:    src
Committed By:   ryo
Date:           Tue Nov  7 09:05:06 UTC 2017

Modified Files:
        src/sys/arch/arm/broadcom: bcm2835_intr.c
        src/sys/arch/evbarm/rpi: rpi_machdep.c

Log Message:
on RPI2, fix compile failure without options MULTIPROCESSOR.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/broadcom/bcm2835_intr.c
cvs rdiff -u -r1.81 -r1.82 src/sys/arch/evbarm/rpi/rpi_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/arm/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.13 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.14
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.13	Sun Oct 15 09:33:25 2017
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Tue Nov  7 09:05:05 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.13 2017/10/15 09:33:25 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.14 2017/11/07 09:05:05 ryo Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.13 2017/10/15 09:33:25 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.14 2017/11/07 09:05:05 ryo Exp $");
 
 #define _INTR_PRIVATE
 
@@ -204,10 +204,11 @@ bcm2835_icu_attach(device_t parent, devi
 #if defined(BCM2836)
 #if defined(MULTIPROCESSOR)
 	aprint_normal(": Multiprocessor");
-#endif
-
 	bcm2836mp_intr_init(curcpu());
+#else
+	pic_add(&bcm2836mp_pic[0], BCM2836_INT_BASECPUN(0));
 #endif
+#endif /* BCM2836 */
 	pic_add(sc->sc_pic, BCM2835_INT_BASE);
 
 	aprint_normal("\n");

Index: src/sys/arch/evbarm/rpi/rpi_machdep.c
diff -u src/sys/arch/evbarm/rpi/rpi_machdep.c:1.81 src/sys/arch/evbarm/rpi/rpi_machdep.c:1.82
--- src/sys/arch/evbarm/rpi/rpi_machdep.c:1.81	Sat Nov  4 14:47:06 2017
+++ src/sys/arch/evbarm/rpi/rpi_machdep.c	Tue Nov  7 09:05:05 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpi_machdep.c,v 1.81 2017/11/04 14:47:06 jmcneill Exp $	*/
+/*	$NetBSD: rpi_machdep.c,v 1.82 2017/11/07 09:05:05 ryo Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.81 2017/11/04 14:47:06 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.82 2017/11/07 09:05:05 ryo Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -38,6 +38,7 @@ __KERNEL_RCSID(0, "$NetBSD: rpi_machdep.
 #include "opt_ddb.h"
 #include "opt_evbarm_boardtype.h"
 #include "opt_kgdb.h"
+#include "opt_multiprocessor.h"
 #include "opt_rpi.h"
 #include "opt_vcprop.h"
 
@@ -448,7 +449,7 @@ static uint8_t cursor_mask[8 * 64], curs
 
 /*
  * Return true if this model Raspberry Pi has Bluetooth/Wi-Fi support
- */ 
+ */
 static bool
 rpi_rev_has_btwifi(uint32_t rev)
 {
@@ -584,7 +585,7 @@ rpi_bootparams(void)
 		size_t n = vcprop_tag_resplen(&vptp_mem->tag) /
 		    sizeof(struct vcprop_memory);
 
-    		bootconfig.dramblocks = 0;
+		bootconfig.dramblocks = 0;
 
 		for (int i = 0; i < n && i < DRAM_BLOCKS; i++) {
 			bootconfig.dram[i].address = vptp_mem->mem[i].base;
@@ -626,22 +627,30 @@ rpi_bootparams(void)
 static void
 rpi_bootstrap(void)
 {
-#if defined(BCM2836)
-	arm_cpu_max = 4;
-	extern int cortex_mmuinfo;
+#ifdef BCM2836
+#define RPI_CPU_MAX	4
 
-#ifdef VERBOSE_INIT_ARM
-	printf("%s: %d cpus present\n", __func__, arm_cpu_max);
-#endif
+#ifdef MULTIPROCESSOR
+	extern int cortex_mmuinfo;
 
+	arm_cpu_max = RPI_CPU_MAX;
 	cortex_mmuinfo = armreg_ttbr_read();
+
 #ifdef VERBOSE_INIT_ARM
+	printf("%s: %d cpus present\n", __func__, arm_cpu_max);
 	printf("%s: cortex_mmuinfo %x\n", __func__, cortex_mmuinfo);
 #endif
+#endif /* MULTIPROCESSOR */
 
+	/*
+	 * Even if no options MULTIPROCESSOR,
+	 * It is need to initialize the secondary CPU,
+	 * and go into wfi loop (cortex_mpstart),
+	 * otherwise system would be freeze...
+	 */
 	extern void cortex_mpstart(void);
 
-	for (size_t i = 1; i < arm_cpu_max; i++) {
+	for (size_t i = 1; i < RPI_CPU_MAX; i++) {
 		bus_space_tag_t iot = &bcm2835_bs_tag;
 		bus_space_handle_t ioh = BCM2836_ARM_LOCAL_VBASE;
 
@@ -659,7 +668,9 @@ rpi_bootstrap(void)
 				break;
 		}
 	}
+#endif /* BCM2836 */
 
+#ifdef MULTIPROCESSOR
 	/* Wake up APs in case firmware has placed them in WFE state */
 	__asm __volatile("sev");
 
@@ -675,7 +686,7 @@ rpi_bootstrap(void)
 			    __func__, i);
 		}
 	}
-#endif
+#endif /* MULTIPROCESSOR */
 }
 
 /*

Reply via email to