@@ -1080,7 +1080,7 @@ static int kvm_arch_put_sve(CPUState *cs)
return 0;
}
-int kvm_arch_put_registers(CPUState *cs, int level)
+static int kvm_arm_put_core_regs(CPUState *cs)
{
struct kvm_one_reg reg;
uint64_t val;
@@ -1200,6 +1200,19 @@ int kvm_arch_put_registers(CPUState *cs, int level)
return ret;
}
+ return 0;
+}
+
+int kvm_arch_put_registers(CPUState *cs, int level)
+{
+ int ret;
+ ARMCPU *cpu = ARM_CPU(cs);
+
+ ret = kvm_arm_put_core_regs(cs);
+ if (ret) {
+ return ret;
+ }
+
write_cpustate_to_list(cpu, true);
if (!write_list_to_kvmstate(cpu, level)) {
@@ -1293,7 +1306,7 @@ static int kvm_arch_get_sve(CPUState *cs)
return 0;
}
-int kvm_arch_get_registers(CPUState *cs)
+static int kvm_arm_get_core_regs(CPUState *cs)
{
struct kvm_one_reg reg;
uint64_t val;
@@ -1413,6 +1426,19 @@ int kvm_arch_get_registers(CPUState *cs)
}
vfp_set_fpcr(env, fpr);
+ return 0;
+}
+
+int kvm_arch_get_registers(CPUState *cs)
+{
+ int ret;
+ ARMCPU *cpu = ARM_CPU(cs);
+
+ ret = kvm_arm_get_core_regs(cs);
+ if (ret) {
+ return ret;
+ }
+
ret = kvm_get_vcpu_events(cpu);
if (ret) {
return ret;
The confidential guest support in KVM limits the number of registers that we can read and write. Split the get/put_registers function to prepare for it. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> --- target/arm/kvm64.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-)