@@ -761,6 +761,17 @@ ENDPROC(__secondary_too_slow)
.endm
/*
+ * Macro to park the cpu in an infinite loop.
+ */
+ .macro early_park_cpu status
+ update_early_cpu_boot_status \status | CPU_STUCK_IN_KERNEL, x1, x2
+.Lepc_\@:
+ wfe
+ wfi
+ b .Lepc_\@
+ .endm
+
+/*
* Enable the MMU.
*
* x0 = SCTLR_EL1 value for turning on the MMU.
@@ -808,24 +819,14 @@ ENTRY(__cpu_secondary_check52bitva)
and x0, x0, #(0xf << ID_AA64MMFR2_LVA_SHIFT)
cbnz x0, 2f
- 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 CPU_STUCK_REASON_52_BIT_VA
#endif
2: ret
ENDPROC(__cpu_secondary_check52bitva)
__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 CPU_STUCK_REASON_NO_GRAN
ENDPROC(__no_granule_support)
#ifdef CONFIG_RELOCATABLE