@@ -47,6 +47,8 @@ __invalid:
47
47
b .
48
48
49
49
/ *
50
+ * Only uses x0..x3 so as to not clobber callee - saved SMCCC registers.
51
+ *
50
52
* x0: SMCCC function ID
51
53
* x1: struct kvm_nvhe_init_params PA
52
54
* /
@@ -70,9 +72,9 @@ __do_hyp_init:
70
72
eret
71
73
72
74
1 : mov x0 , x1
73
- mov x4 , lr
74
- bl ___kvm_hyp_init
75
- mov lr , x4
75
+ mov x3 , lr
76
+ bl ___kvm_hyp_init // Clobbers x0..x2
77
+ mov lr , x3
76
78
77
79
/ * Hello , World! * /
78
80
mov x0 , #SMCCC_RET_SUCCESS
@@ -82,8 +84,8 @@ SYM_CODE_END(__kvm_hyp_init)
82
84
/ *
83
85
* Initialize the hypervisor in EL2.
84
86
*
85
- * Only uses x0..x3 so as to not clobber callee - saved SMCCC registers
86
- * and leave x4 for the caller.
87
+ * Only uses x0..x2 so as to not clobber callee - saved SMCCC registers
88
+ * and leave x3 for the caller.
87
89
*
88
90
* x0: struct kvm_nvhe_init_params PA
89
91
* /
@@ -112,9 +114,9 @@ alternative_else_nop_endif
112
114
/ *
113
115
* Set the PS bits in TCR_EL2.
114
116
* /
115
- ldr x1 , [ x0 , #NVHE_INIT_TCR_EL2 ]
116
- tcr_compute_pa_size x1 , #TCR_EL2_PS_SHIFT , x2 , x3
117
- msr tcr_el2 , x1
117
+ ldr x0 , [ x0 , #NVHE_INIT_TCR_EL2 ]
118
+ tcr_compute_pa_size x0 , #TCR_EL2_PS_SHIFT , x1 , x2
119
+ msr tcr_el2 , x0
118
120
119
121
isb
120
122
@@ -193,7 +195,7 @@ SYM_CODE_START_LOCAL(__kvm_hyp_init_cpu)
193
195
194
196
/ * Enable MMU , set vectors and stack. * /
195
197
mov x0 , x28
196
- bl ___kvm_hyp_init // Clobbers x0..x3
198
+ bl ___kvm_hyp_init // Clobbers x0..x2
197
199
198
200
/ * Leave idmap. * /
199
201
mov x0 , x29
0 commit comments