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 */
}
/*