Issuing loadvm under -M mac99 would fail for two reasons: firstly an incorrect version number for openpic would cause openpic_load() to abort, and secondly a cut/paste error when restoring the IVPR and IDR registers caused subsequent vmstate sections to become misaligned and abort early.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> --- hw/intc/openpic.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c index 8699a4a..4194cef 100644 --- a/hw/intc/openpic.c +++ b/hw/intc/openpic.c @@ -1366,7 +1366,7 @@ static int openpic_load(QEMUFile* f, void *opaque, int version_id) OpenPICState *opp = (OpenPICState *)opaque; unsigned int i, nb_cpus; - if (version_id != 1) { + if (version_id != 2) { return -EINVAL; } @@ -1399,12 +1399,10 @@ static int openpic_load(QEMUFile* f, void *opaque, int version_id) uint32_t val; val = qemu_get_be32(f); - write_IRQreg_idr(opp, i, val); - val = qemu_get_be32(f); write_IRQreg_ivpr(opp, i, val); + val = qemu_get_be32(f); + write_IRQreg_idr(opp, i, val); - qemu_get_be32s(f, &opp->src[i].ivpr); - qemu_get_be32s(f, &opp->src[i].idr); qemu_get_be32s(f, &opp->src[i].destmask); qemu_get_sbe32s(f, &opp->src[i].last_cpu); qemu_get_sbe32s(f, &opp->src[i].pending); -- 1.7.10.4