diff options
author | andrew <andrew@FreeBSD.org> | 2015-07-08 15:32:59 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2015-07-08 15:32:59 +0000 |
commit | 7497a22d310355fa7bd12e17b17b8e69d3d963da (patch) | |
tree | cd0fc647898ddffe4f628e05e599a0269a104885 | |
parent | 7a31b1fe9ae87af7e04c743b0344798c937a2b21 (diff) | |
download | FreeBSD-src-7497a22d310355fa7bd12e17b17b8e69d3d963da.zip FreeBSD-src-7497a22d310355fa7bd12e17b17b8e69d3d963da.tar.gz |
Add support for ipi_all_but_self on arm64.
Obtained from: ABT Systems Ltd
Sponsored by: The freeBSD Foundation
-rw-r--r-- | sys/arm64/arm64/intr_machdep.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/arm64/arm64/intr_machdep.c b/sys/arm64/arm64/intr_machdep.c index 7ff6f11..4a69187 100644 --- a/sys/arm64/arm64/intr_machdep.c +++ b/sys/arm64/arm64/intr_machdep.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include <sys/cpuset.h> #include <sys/interrupt.h> #include <sys/queue.h> +#include <sys/smp.h> #include <machine/cpufunc.h> #include <machine/intr.h> @@ -473,9 +474,16 @@ arm_init_secondary(void) void ipi_all_but_self(u_int ipi) { + cpuset_t other_cpus; - /* ARM64TODO: We should support this */ - panic("ipi_all_but_self"); + other_cpus = all_cpus; + CPU_CLR(PCPU_GET(cpuid), &other_cpus); + + /* ARM64TODO: This will be fixed with arm_intrng */ + ipi += 16; + + CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi); + PIC_IPI_SEND(root_pic, other_cpus, ipi); } void |