On 01/22/2018 06:16 AM, Peter Maydell wrote: >> +/* The first two words of each Zreg is stored in VFP state. */ >> +static const VMStateDescription vmstate_zreg_hi_reg = { >> + .name = "cpu/sve/zreg_hi", >> + .version_id = 1, >> + .minimum_version_id = 1, >> + .fields = (VMStateField[]) { >> + VMSTATE_UINT64_SUB_ARRAY(d, ARMVectorReg, 2, ARM_MAX_VQ - 2), >> + VMSTATE_END_OF_LIST() >> + } >> +}; >> + >> +static const VMStateDescription vmstate_preg_reg = { >> + .name = "cpu/sve/preg", >> + .version_id = 1, >> + .minimum_version_id = 1, >> + .fields = (VMStateField[]) { >> + VMSTATE_UINT64_ARRAY(p, ARMPredicateReg, 2 * ARM_MAX_VQ / 8), >> + VMSTATE_END_OF_LIST() >> + } >> +}; >> + >> +static const VMStateDescription vmstate_sve = { >> + .name = "cpu/sve", >> + .version_id = 1, >> + .minimum_version_id = 1, >> + .needed = sve_needed, >> + .fields = (VMStateField[]) { >> + VMSTATE_STRUCT_ARRAY(env.vfp.zregs, ARMCPU, 32, 0, >> + vmstate_zreg_hi_reg, ARMVectorReg), >> + VMSTATE_STRUCT_ARRAY(env.vfp.pregs, ARMCPU, 17, 0, >> + vmstate_preg_reg, ARMPredicateReg), > > Is it the QEMU_ALIGNED attribute that means we need to do the pregs > via a STRUCT_ARRAY rather than being able to use a UINT64_2DARRAY ?
I didn't try; I was copying from the x86 code. r~