git: d95b62db76b9 - main - arm64: Add a wfe function

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Mon, 21 Sep 2026 15:26:05 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=d95b62db76b9bb4d51bc5e555b26a3aaf8afa44a

commit d95b62db76b9bb4d51bc5e555b26a3aaf8afa44a
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2026-09-18 11:27:25 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2026-09-18 11:27:25 +0000

    arm64: Add a wfe function
    
    And replace inline assembly
    
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D59482
---
 sys/arm64/arm64/mp_machdep.c | 6 +++---
 sys/arm64/include/cpufunc.h  | 6 ++++++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/sys/arm64/arm64/mp_machdep.c b/sys/arm64/arm64/mp_machdep.c
index 0bdd2ecfd8a7..30f4b30e64a7 100644
--- a/sys/arm64/arm64/mp_machdep.c
+++ b/sys/arm64/arm64/mp_machdep.c
@@ -265,7 +265,7 @@ init_secondary(uint64_t cpu)
 
 	/* Wait for devices to be ready */
 	while (!atomic_load_int(&aps_after_dev))
-		__asm __volatile("wfe");
+		wfe();
 
 	install_cpu_errata();
 	enable_cpu_feat(CPU_FEAT_AFTER_DEV);
@@ -275,7 +275,7 @@ init_secondary(uint64_t cpu)
 
 	/* Wait until we can run the scheduler */
 	while (!atomic_load_int(&aps_ready))
-		__asm __volatile("wfe");
+		wfe();
 
 	/* Initialize curthread */
 	KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread"));
@@ -508,7 +508,7 @@ enable_cpu_spin(uint64_t cpu, vm_paddr_t entry, vm_paddr_t release_paddr)
 
 	/* Wait for the target CPU to start */
 	while (atomic_load_64(&ap_cpuid) != 0)
-		__asm __volatile("wfe");
+		wfe();
 
 	return (0);
 }
diff --git a/sys/arm64/include/cpufunc.h b/sys/arm64/include/cpufunc.h
index f600b30edf5f..91e6ad3d8cde 100644
--- a/sys/arm64/include/cpufunc.h
+++ b/sys/arm64/include/cpufunc.h
@@ -165,6 +165,12 @@ invalidate_local_icache(void)
 	    "isb               \n");
 }
 
+static __inline void
+wfe(void)
+{
+	__asm __volatile("wfe");
+}
+
 static __inline void
 wfet(uint64_t val)
 {