The FCR write handler cleared bit 1 of the status register (sr) instead of the SH_SERIAL_FLAG_RDF flag in the flags field. This meant the "receive data full" condition was never actually cleared when the guest reset the FIFO.
Reported-by: Pavee Hui <[email protected]> Fixes: 63242a007a18 ("SH4: Serial controller improvement") Signed-off-by: Marc-André Lureau <[email protected]> --- hw/char/sh_serial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index 10f96e3a44bc..30a22ea2d1c0 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -175,7 +175,7 @@ static void sh_serial_write(void *opaque, hwaddr offs, } if (val & (1 << 1)) { sh_serial_clear_fifo(s); - s->sr &= ~(1 << 1); + s->flags &= ~SH_SERIAL_FLAG_RDF; } return; -- 2.56.0.rc0.29.g47ce80527c56
