Re: [PATCH 6/8] hw/i2c: fix VOUT_MODE representation on little-endian machines
Peter Maydell <[email protected]> Thu, 30 Jul 2026 13:39:48 +0100
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <CAFEAcA9X+jQu9DtPoszcoa=wdJSPuxZtvA0j1BFJ2bzNQkWWww@mail.gmail.com> |
On Thu, 30 Jul 2026 at 00:13, Titus Rwantare <[email protected]> wrote: > > From: Jason Fan <[email protected]> > > Even though VOUT_MODE is only one byte, bitfields are allocated in the > order specific to the host's endianness. > > Signed-off-by: Titus Rwantare <[email protected]> > Signed-off-by: Jason Fan <[email protected]> > --- > include/hw/i2c/pmbus_device.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/hw/i2c/pmbus_device.h b/include/hw/i2c/pmbus_device.h > index 9f3569e997..03b2c21c19 100644 > --- a/include/hw/i2c/pmbus_device.h > +++ b/include/hw/i2c/pmbus_device.h > @@ -449,10 +449,17 @@ typedef struct PMBusCoefficients { > /** > * VOUT_Mode bit fields > */ > +#if HOST_BIG_ENDIAN > typedef struct PMBusVoutMode { > uint8_t mode:3; > int8_t exp:5; > } PMBusVoutMode; > +# else > +typedef struct PMBusVoutMode { > + int8_t exp:5; > + uint8_t mode:3; > +} PMBusVoutMode; > +#endif This is why where possible we don't use C bitfields for guest data structures. Better to use the FIELD macros from include/hw/core/registerfields.h. thanks -- PMM