Revision a624b086

b/hw/hw.h
299 299
    VMS_VBUFFER          = 0x100,  /* Buffer with size in int32_t field */
300 300
    VMS_MULTIPLY         = 0x200,  /* multiply "size" field by field_size */
301 301
    VMS_VARRAY_UINT8     = 0x400,  /* Array with size in uint8_t field*/
302
    VMS_VARRAY_UINT32    = 0x800,  /* Array with size in uint32_t field*/
302 303
};
303 304

  
304 305
typedef struct {
......
438 439
    .offset     = vmstate_offset_pointer(_state, _field, _type),     \
439 440
}
440 441

  
442
#define VMSTATE_VARRAY_UINT32(_field, _state, _field_num, _version, _info, _type) {\
443
    .name       = (stringify(_field)),                               \
444
    .version_id = (_version),                                        \
445
    .num_offset = vmstate_offset_value(_state, _field_num, uint32_t),\
446
    .info       = &(_info),                                          \
447
    .size       = sizeof(_type),                                     \
448
    .flags      = VMS_VARRAY_UINT32|VMS_POINTER,                     \
449
    .offset     = vmstate_offset_pointer(_state, _field, _type),     \
450
}
451

  
441 452
#define VMSTATE_VARRAY_UINT16_UNSAFE(_field, _state, _field_num, _version, _info, _type) {\
442 453
    .name       = (stringify(_field)),                               \
443 454
    .version_id = (_version),                                        \
b/savevm.c
1329 1329
                n_elems = field->num;
1330 1330
            } else if (field->flags & VMS_VARRAY_INT32) {
1331 1331
                n_elems = *(int32_t *)(opaque+field->num_offset);
1332
            } else if (field->flags & VMS_VARRAY_UINT32) {
1333
                n_elems = *(uint32_t *)(opaque+field->num_offset);
1332 1334
            } else if (field->flags & VMS_VARRAY_UINT16) {
1333 1335
                n_elems = *(uint16_t *)(opaque+field->num_offset);
1334 1336
            } else if (field->flags & VMS_VARRAY_UINT8) {

Also available in: Unified diff