summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2022-11-07 18:56:21 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2022-11-07 18:56:21 +0000
commitb45fb2b71b77e6fa3d35663296360975f321252c (patch)
tree1b76ca97542f4b68f8e3a48c123677d6e6136e3b /sys
parent8ca5f8fdf98eb80afc305bb293dda64558273b51 (diff)
Implement the "halt" IPI.
ok patrick@
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/arm64/dev/aplintc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/arch/arm64/dev/aplintc.c b/sys/arch/arm64/dev/aplintc.c
index c663ed04cfc..3c60feaa38b 100644
--- a/sys/arch/arm64/dev/aplintc.c
+++ b/sys/arch/arm64/dev/aplintc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: aplintc.c,v 1.13 2022/08/22 12:34:55 tobhe Exp $ */
+/* $OpenBSD: aplintc.c,v 1.14 2022/11/07 18:56:20 kettenis Exp $ */
/*
* Copyright (c) 2021 Mark Kettenis
*
@@ -635,6 +635,9 @@ aplintc_handle_ipi(struct aplintc_softc *sc)
#ifdef DDB
db_enter();
#endif
+ } else if (sc->sc_ipi_reason[ci->ci_cpuid] == ARM_IPI_HALT) {
+ sc->sc_ipi_reason[ci->ci_cpuid] = ARM_IPI_NOP;
+ cpu_halt();
}
sc->sc_ipi_count.ec_count++;