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