Module Name: src
Committed By: skrll
Date: Sun Jan 21 08:48:21 UTC 2024
Modified Files:
src/sys/arch/riscv/fdt: intc_fdt.c
Log Message:
Make this compile without MULTIPROCESSOR
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/riscv/fdt/intc_fdt.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/riscv/fdt/intc_fdt.c
diff -u src/sys/arch/riscv/fdt/intc_fdt.c:1.5 src/sys/arch/riscv/fdt/intc_fdt.c:1.6
--- src/sys/arch/riscv/fdt/intc_fdt.c:1.5 Sun Jan 21 08:41:00 2024
+++ src/sys/arch/riscv/fdt/intc_fdt.c Sun Jan 21 08:48:21 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: intc_fdt.c,v 1.5 2024/01/21 08:41:00 skrll Exp $ */
+/* $NetBSD: intc_fdt.c,v 1.6 2024/01/21 08:48:21 skrll Exp $ */
/*-
* Copyright (c) 2023 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
#include "opt_multiprocessor.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intc_fdt.c,v 1.5 2024/01/21 08:41:00 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intc_fdt.c,v 1.6 2024/01/21 08:48:21 skrll Exp $");
#include <sys/param.h>
@@ -57,7 +57,6 @@ static const struct device_compatible_en
struct intc_irqhandler;
struct intc_irq;
-struct intc_softc;
typedef int (*intcih_t)(void *);
@@ -121,6 +120,20 @@ static const char * const intc_sources[I
"(reserved)"
};
+#ifndef MULTIPROCESSOR
+struct intc_fdt_softc *intc_sc;
+#endif
+
+
+static inline struct intc_fdt_softc *
+intc_getsc(struct cpu_info *ci)
+{
+#ifdef MULTIPROCESSOR
+ return ci->ci_intcsoftc;
+#else
+ return intc_sc;
+#endif
+}
static void *
intc_intr_establish(struct intc_fdt_softc *sc, u_int source, u_int ipl,
@@ -246,7 +259,7 @@ intc_intr_handler(struct trapframe *tf,
KASSERT(CAUSE_INTERRUPT_P(cause));
- struct intc_fdt_softc * const sc = ci->ci_intcsoftc;
+ struct intc_fdt_softc * const sc = intc_getsc(ci);
ci->ci_intr_depth++;
ci->ci_data.cpu_nintr++;
@@ -334,13 +347,15 @@ intc_attach(device_t parent, device_t se
sc->sc_dev = self;
sc->sc_ci = ci;
sc->sc_hartid = ci->ci_cpuid;
- ci->ci_intcsoftc = sc;
intc_intr_establish(sc, IRQ_SUPERVISOR_TIMER, IPL_SCHED, IST_MPSAFE,
riscv_timer_intr, NULL, "clock");
#ifdef MULTIPROCESSOR
+ ci->ci_intcsoftc = sc;
intc_intr_establish(sc, IRQ_SUPERVISOR_SOFTWARE, IPL_HIGH, IST_MPSAFE,
riscv_ipi_intr, NULL, "ipi");
+#else
+ intc_sc = sc;
#endif
}