On 11/04/2017 01:18 PM, Philippe Mathieu-Daudé wrote: > On 11/04/2017 05:55 AM, Laurent Vivier wrote: >> Le 03/11/2017 à 22:51, Philippe Mathieu-Daudé a écrit : >>>> On 11/03/2017 05:26 PM, Laurent Vivier wrote: >>>>> This series fixes some errors found by >>>>> enabling USE_SOFTFLOAT_STRUCT_TYPES. >>> [...] >>>> >>>> I'm getting those errors: >>>> >>>> $ make subdir-arm-softmmu -j2 >>>> >>>> /source/qemu/migration/vmstate-types.c:430:5: error: conversion to >>>> non-scalar type requested >>>> qemu_put_be64(f, float64_val(*v)); >>>> ^~~~~~~~~~~~~ >>>> make: *** [migration/vmstate-types.o] Error 1 > [...] >> >> These series doesn't fix all the problems, only the easiest to fix... >> >> for this one, you need: >> >> diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c >> index 48184c380d..0c273d616a 100644 >> --- a/migration/vmstate-types.c >> +++ b/migration/vmstate-types.c >> @@ -425,7 +425,7 @@ static int get_float64(QEMUFile *f, void *pv, size_t >> size, >> static int put_float64(QEMUFile *f, void *pv, size_t size, VMStateField >> *field, >> QJSON *vmdesc) >> { >> - uint64_t *v = pv; >> + float64 *v = pv; >> >> qemu_put_be64(f, float64_val(*v)); >> return 0; > > If you respin with this one you can add my Reviewed-by + Tested-by. > > Another error: > > $ make subdir-aarch64-softmmu > [...] > CC target/arm/helper-a64.o > /source/qemu/target/arm/helper-a64.c: In function ‘helper_simd_tbl’: > /source/qemu/target/arm/helper-a64.c:162:38: error: incompatible type > for argument 1 of ‘extract64’ > uint64_t val = extract64(env->vfp.regs[elt], bitidx, 8); > ^~~ > In file included from /source/qemu/include/qemu/bitmap.h:16:0, > from /source/qemu/include/hw/qdev-core.h:6, > from /source/qemu/include/qom/cpu.h:23, > from /source/qemu/target/arm/cpu-qom.h:23, > from /source/qemu/target/arm/cpu.h:39, > from /source/qemu/target/arm/helper-a64.c:21: > /source/qemu/include/qemu/bitops.h:316:24: note: expected ‘uint64_t {aka > long unsigned int}’ but argument is of type ‘float64 {aka struct > <anonymous>}’ > static inline uint64_t extract64(uint64_t value, int start, int length) > ^~~~~~~~~ > make: *** [target/arm/helper-a64.o] Error 1
OK with: - uint64_t val = extract64(env->vfp.regs[elt], bitidx, 8); + uint64_t val = extract64(float64_val(env->vfp.regs[elt]), bitidx, 8);