mirror of
https://github.com/qemu/qemu.git
synced 2024-11-29 23:03:41 +08:00
target/arm: Migrate MPU_RNR register state for M profile cores
The PMSAv7 region number register is migrated for R profile cores using the cpreg scheme, but M profile doesn't use cpregs, and so we weren't migrating the MPU_RNR register state at all. Fix that by adding a migration subsection for the M profile case. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 1501153150-19984-6-git-send-email-peter.maydell@linaro.org
This commit is contained in:
parent
69ceea64bf
commit
f1a4694078
@ -171,6 +171,29 @@ static const VMStateDescription vmstate_pmsav7 = {
|
||||
}
|
||||
};
|
||||
|
||||
static bool pmsav7_rnr_needed(void *opaque)
|
||||
{
|
||||
ARMCPU *cpu = opaque;
|
||||
CPUARMState *env = &cpu->env;
|
||||
|
||||
/* For R profile cores pmsav7.rnr is migrated via the cpreg
|
||||
* "RGNR" definition in helper.h. For M profile we have to
|
||||
* migrate it separately.
|
||||
*/
|
||||
return arm_feature(env, ARM_FEATURE_M);
|
||||
}
|
||||
|
||||
static const VMStateDescription vmstate_pmsav7_rnr = {
|
||||
.name = "cpu/pmsav7-rnr",
|
||||
.version_id = 1,
|
||||
.minimum_version_id = 1,
|
||||
.needed = pmsav7_rnr_needed,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_UINT32(env.pmsav7.rnr, ARMCPU),
|
||||
VMSTATE_END_OF_LIST()
|
||||
}
|
||||
};
|
||||
|
||||
static int get_cpsr(QEMUFile *f, void *opaque, size_t size,
|
||||
VMStateField *field)
|
||||
{
|
||||
@ -377,6 +400,11 @@ const VMStateDescription vmstate_arm_cpu = {
|
||||
&vmstate_iwmmxt,
|
||||
&vmstate_m,
|
||||
&vmstate_thumb2ee,
|
||||
/* pmsav7_rnr must come before pmsav7 so that we have the
|
||||
* region number before we test it in the VMSTATE_VALIDATE
|
||||
* in vmstate_pmsav7.
|
||||
*/
|
||||
&vmstate_pmsav7_rnr,
|
||||
&vmstate_pmsav7,
|
||||
NULL
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user