|
@@ -588,6 +588,15 @@ set_hcr:
|
|
|
msr vpidr_el2, x0
|
|
|
msr vmpidr_el2, x1
|
|
|
|
|
|
+ /*
|
|
|
+ * When VHE is not in use, early init of EL2 and EL1 needs to be
|
|
|
+ * done here.
|
|
|
+ * When VHE _is_ in use, EL1 will not be used in the host and
|
|
|
+ * requires no configuration, and all non-hyp-specific EL2 setup
|
|
|
+ * will be done via the _EL1 system register aliases in __cpu_setup.
|
|
|
+ */
|
|
|
+ cbnz x2, 1f
|
|
|
+
|
|
|
/* sctlr_el1 */
|
|
|
mov x0, #0x0800 // Set/clear RES{1,0} bits
|
|
|
CPU_BE( movk x0, #0x33d0, lsl #16 ) // Set EE and E0E on BE systems
|
|
@@ -597,6 +606,7 @@ CPU_LE( movk x0, #0x30d0, lsl #16 ) // Clear EE and E0E on LE systems
|
|
|
/* Coprocessor traps. */
|
|
|
mov x0, #0x33ff
|
|
|
msr cptr_el2, x0 // Disable copro. traps to EL2
|
|
|
+1:
|
|
|
|
|
|
#ifdef CONFIG_COMPAT
|
|
|
msr hstr_el2, xzr // Disable CP15 traps to EL2
|
|
@@ -734,7 +744,8 @@ ENDPROC(__secondary_switched)
|
|
|
|
|
|
.macro update_early_cpu_boot_status status, tmp1, tmp2
|
|
|
mov \tmp2, #\status
|
|
|
- str_l \tmp2, __early_cpu_boot_status, \tmp1
|
|
|
+ adr_l \tmp1, __early_cpu_boot_status
|
|
|
+ str \tmp2, [\tmp1]
|
|
|
dmb sy
|
|
|
dc ivac, \tmp1 // Invalidate potentially stale cache line
|
|
|
.endm
|