On Tue, Nov 5, 2024 at 2:35 AM Thomas Huth <th...@redhat.com> wrote: > > Casting a "uint32_t *" to a "uint8_t *" to get to the lowest 8-bit > part of the value does not work on big endian hosts. We've got to > take the proper detour through an 8-bit variable. > > Fixes: 53c1557b23 ("hw/char: sifive_uart: Print uart characters async") > Signed-off-by: Thomas Huth <th...@redhat.com>
Thanks! Applied to riscv-to-apply.next Alistair > --- > hw/char/sifive_uart.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/hw/char/sifive_uart.c b/hw/char/sifive_uart.c > index aeb45d3601..5ae2a29ed6 100644 > --- a/hw/char/sifive_uart.c > +++ b/hw/char/sifive_uart.c > @@ -174,10 +174,11 @@ sifive_uart_write(void *opaque, hwaddr addr, > { > SiFiveUARTState *s = opaque; > uint32_t value = val64; > + uint8_t ch = value; > > switch (addr) { > case SIFIVE_UART_TXFIFO: > - sifive_uart_write_tx_fifo(s, (uint8_t *) &value, 1); > + sifive_uart_write_tx_fifo(s, &ch, 1); > return; > case SIFIVE_UART_IE: > s->ie = val64; > -- > 2.47.0 > >