The "miscellaneous commands" part of the register is 3 bits wide. Spotted by Coverity and confirmed in the datasheet, downloadable from http://cache.freescale.com/files/32bit/doc/ref_manual/MCF5307BUM.pdf (figure 14-6).
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- hw/char/mcf_uart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index 98fd44e..cda22ee 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -126,7 +126,7 @@ static void mcf_uart_do_tx(mcf_uart_state *s) static void mcf_do_command(mcf_uart_state *s, uint8_t cmd) { /* Misc command. */ - switch ((cmd >> 4) & 3) { + switch ((cmd >> 4) & 7) { case 0: /* No-op. */ break; case 1: /* Reset mode register pointer. */ -- 2.4.3