@@ -761,6 +761,16 @@ ENDPROC(__secondary_too_slow)
.endm
/*
+ * Macro to park the cpu in an infinite loop.
+ */
+ .macro early_park_cpu
+.Lepc_\@:
+ wfe
+ wfi
+ b .Lepc_\@
+ .endm
+
+/*
* Enable the MMU.
*
* x0 = SCTLR_EL1 value for turning on the MMU.
@@ -810,10 +820,7 @@ ENTRY(__cpu_secondary_check52bitva)
update_early_cpu_boot_status \
CPU_STUCK_IN_KERNEL | CPU_STUCK_REASON_52_BIT_VA, x0, x1
-1: wfe
- wfi
- b 1b
-
+ early_park_cpu
#endif
2: ret
ENDPROC(__cpu_secondary_check52bitva)
@@ -822,10 +829,7 @@ __no_granule_support:
/* Indicate that this CPU can't boot and is stuck in the kernel */
update_early_cpu_boot_status \
CPU_STUCK_IN_KERNEL | CPU_STUCK_REASON_NO_GRAN, x1, x2
-1:
- wfe
- wfi
- b 1b
+ early_park_cpu
ENDPROC(__no_granule_support)
#ifdef CONFIG_RELOCATABLE
A macro early_park_cpu is added to park the faulted cpu in an infinite loop. Currently, this macro is substituted in two instances and is reused in the subsequent pointer authentication patch. Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com> --- Changes since RFC v2: - New patch in this version for code reuse. arch/arm64/kernel/head.S | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-)