Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
---
target/arm/machine.c | 107 ++++++++++++++++++++++---------------------
1 file changed, 56 insertions(+), 51 deletions(-)
diff --git a/target/arm/machine.c b/target/arm/machine.c
index 89127e5d83c..159a1f0e930 100644
--- a/target/arm/machine.c
+++ b/target/arm/machine.c
@@ -51,8 +51,8 @@ static bool vfp_fpcr_fpsr_needed(void *opaque)
(vfp_get_fpsr(env) & ~FPSCR_FPSR_MASK);
}
-static int get_fpscr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field)
+static bool load_fpscr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
@@ -62,78 +62,81 @@ static int get_fpscr(QEMUFile *f, void *opaque, size_t size,
/* 0 means we might have the data in the fpcr_fpsr subsection */
vfp_set_fpscr(env, val);
}
- return 0;
+ return true;
}
-static int put_fpscr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool save_fpscr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field,
+ JSONWriter *vmdesc, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
uint32_t fpscr = vfp_fpcr_fpsr_needed(opaque) ? 0 : vfp_get_fpscr(env);
qemu_put_be32(f, fpscr);
- return 0;
+ return true;
}
static const VMStateInfo vmstate_fpscr = {
.name = "fpscr",
- .get = get_fpscr,
- .put = put_fpscr,
+ .load = load_fpscr,
+ .save = save_fpscr,
};
-static int get_fpcr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field)
+static bool load_fpcr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
uint64_t val = qemu_get_be64(f);
vfp_set_fpcr(env, val);
- return 0;
+ return true;
}
-static int put_fpcr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool save_fpcr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field,
+ JSONWriter *vmdesc, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
qemu_put_be64(f, vfp_get_fpcr(env));
- return 0;
+ return true;
}
static const VMStateInfo vmstate_fpcr = {
.name = "fpcr",
- .get = get_fpcr,
- .put = put_fpcr,
+ .load = load_fpcr,
+ .save = save_fpcr,
};
-static int get_fpsr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field)
+static bool load_fpsr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
uint64_t val = qemu_get_be64(f);
vfp_set_fpsr(env, val);
- return 0;
+ return true;
}
-static int put_fpsr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool save_fpsr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field,
+ JSONWriter *vmdesc, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
qemu_put_be64(f, vfp_get_fpsr(env));
- return 0;
+ return true;
}
static const VMStateInfo vmstate_fpsr = {
.name = "fpsr",
- .get = get_fpsr,
- .put = put_fpsr,
+ .load = load_fpsr,
+ .save = save_fpsr,
};
static const VMStateDescription vmstate_vfp_fpcr_fpsr = {
@@ -755,8 +758,8 @@ static const VMStateDescription vmstate_m_security = {
}
};
-static int get_cpsr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field)
+static bool load_cpsr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
@@ -797,22 +800,22 @@ static int get_cpsr(QEMUFile *f, void *opaque, size_t
size,
}
/* Ignore the low bits, they are handled by vmstate_m. */
xpsr_write(env, val, ~XPSR_EXCP);
- return 0;
+ return true;
}
env->aarch64 = ((val & PSTATE_nRW) == 0);
if (is_a64(env)) {
pstate_write(env, val);
- return 0;
+ return true;
}
cpsr_write(env, val, 0xffffffff, CPSRWriteRaw);
- return 0;
+ return true;
}
-static int put_cpsr(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool save_cpsr(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, JSONWriter *vmdesc, Error
**errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
@@ -828,17 +831,17 @@ static int put_cpsr(QEMUFile *f, void *opaque, size_t
size,
}
qemu_put_be32(f, val);
- return 0;
+ return true;
}
static const VMStateInfo vmstate_cpsr = {
.name = "cpsr",
- .get = get_cpsr,
- .put = put_cpsr,
+ .load = load_cpsr,
+ .save = save_cpsr,
};
-static int get_pstate64(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field)
+static bool load_pstate64(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
@@ -850,11 +853,12 @@ static int get_pstate64(QEMUFile *f, void *opaque, size_t
size,
} else {
cpsr_write_from_spsr_elx(env, val);
}
- return 0;
+ return true;
}
-static int put_pstate64(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool save_pstate64(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field,
+ JSONWriter *vmdesc, Error **errp)
{
ARMCPU *cpu = opaque;
CPUARMState *env = &cpu->env;
@@ -866,7 +870,7 @@ static int put_pstate64(QEMUFile *f, void *opaque, size_t
size,
val = cpsr_read_for_spsr_elx(env);
}
qemu_put_be64(f, val);
- return 0;
+ return true;
}
static bool pstate64_needed(void *opaque)
@@ -901,8 +905,8 @@ static const VMStateDescription vmstate_pstate64 = {
.size = sizeof(uint64_t),
.info = &(const VMStateInfo) {
.name = "pstate64",
- .get = get_pstate64,
- .put = put_pstate64,
+ .load = load_pstate64,
+ .save = save_pstate64,
},
.flags = VMS_SINGLE,
.offset = 0,
@@ -911,17 +915,17 @@ static const VMStateDescription vmstate_pstate64 = {
},
};
-static int get_power(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field)
+static bool load_power(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, Error **errp)
{
ARMCPU *cpu = opaque;
bool powered_off = qemu_get_byte(f);
arm_set_cpu_power_state(cpu, powered_off ? PSCI_OFF : PSCI_ON);
- return 0;
+ return true;
}
-static int put_power(QEMUFile *f, void *opaque, size_t size,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool save_power(QEMUFile *f, void *opaque, size_t size,
+ const VMStateField *field, JSONWriter *vmdesc, Error
**errp)
{
ARMCPU *cpu = opaque;
@@ -931,16 +935,17 @@ static int put_power(QEMUFile *f, void *opaque, size_t
size,
cpu->power_state == PSCI_OFF) {
bool powered_off = (cpu->power_state == PSCI_OFF) ? true : false;
qemu_put_byte(f, powered_off);
- return 0;
+ return true;
} else {
- return 1;
+ error_setg(errp, "Migration should not happen during power
transition");
+ return false;
}
}
static const VMStateInfo vmstate_powered_off = {
.name = "powered_off",
- .get = get_power,
- .put = put_power,
+ .load = load_power,
+ .save = save_power,
};
static bool syndrome64_needed(void *opaque)
--
2.43.0