|
|
@@ -611,26 +611,6 @@ 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
|
|
|
-CPU_LE( movk x0, #0x30d0, lsl #16 ) // Clear EE and E0E on LE systems
|
|
|
- msr sctlr_el1, x0
|
|
|
-
|
|
|
- /* 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
|
|
|
#endif
|
|
|
@@ -667,6 +647,23 @@ CPU_LE( movk x0, #0x30d0, lsl #16 ) // Clear EE and E0E on LE systems
|
|
|
ret
|
|
|
|
|
|
install_el2_stub:
|
|
|
+ /*
|
|
|
+ * 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.
|
|
|
+ */
|
|
|
+ /* 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
|
|
|
+CPU_LE( movk x0, #0x30d0, lsl #16 ) // Clear EE and E0E on LE systems
|
|
|
+ msr sctlr_el1, x0
|
|
|
+
|
|
|
+ /* Coprocessor traps. */
|
|
|
+ mov x0, #0x33ff
|
|
|
+ msr cptr_el2, x0 // Disable copro. traps to EL2
|
|
|
+
|
|
|
/* Hypervisor stub */
|
|
|
adr_l x0, __hyp_stub_vectors
|
|
|
msr vbar_el2, x0
|