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~