On 03.03.26, 12:20, "Peter Maydell" <[email protected] 
<mailto:[email protected]>> wrote:

> On Fri, 27 Feb 2026 at 12:55, Martin Kröning
> <[email protected] 
> <mailto:[email protected]>> wrote:
> >
> > These functions are needed to support semihosting on CPUs that support
> > runtime-configurable endianness. They should not be used in other contexts.
> >
> > Signed-off-by: Martin Kröning <[email protected] 
> > <mailto:[email protected]>>
> > ---
> > include/exec/tswap.h | 36 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 36 insertions(+)
> >
> > diff --git a/include/exec/tswap.h b/include/exec/tswap.h
> > index 9e94fa0021..6d9301129d 100644
> > --- a/include/exec/tswap.h
> > +++ b/include/exec/tswap.h
> > @@ -10,6 +10,7 @@
> >
> > #include "qemu/bswap.h"
> > #include "qemu/target-info.h"
> > +#include "hw/core/cpu.h"
> >
> > /*
> > * If we're in target-specific code, we can hard-code the swapping
> > @@ -72,4 +73,39 @@ static inline void tswap64s(uint64_t *s)
> > }
> > #endif
> >
> > +/*
> > + * If we're in semihosting code, have to swap depending on the currently
> > + * configured endianness of the CPU. These functions should not be used in
> > + * other contexts.
> > + */
> > +#define cpu_internal_needs_bswap(cpu) \
> > + (HOST_BIG_ENDIAN != cpu_internal_is_big_endian(cpu))
> > +
> > +static inline uint16_t cpu_internal_tswap16(CPUState *cpu, uint16_t s)
> > +{
> > + if (target_needs_bswap() || cpu_internal_needs_bswap(cpu)) {
> 
> 
> I don't think these should have the target_needs_bswap()
> check in them. Otherwise for a normally big-endian CPU on
> a little-endian host where the CPU is currently in
> little-endian mode, target_needs_bswap() will return true
> and we'll swap the data, even though we should not
> (because cpu_internal_needs_bswap() returns false).

You are right. Thanks for catching that.
Should I send a new series immediately or wait for further reviews?

Cheers,
Martin

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to