hw/char/cmsdk-apb-uart.c: Correctly clear INTSTATUS bits on writes
The CMSDK APB UART INTSTATUS register bits are all write-one-to-clear. We were getting this correct for the TXO and RXO bits (which need special casing because their state lives in the STATE register), but had forgotten to handle the normal bits for RX and TX which we do store in our s->intstatus field. Perform the W1C operation on the bits in s->intstatus too. Fixes: https://bugs.launchpad.net/qemu/+bug/1760262 Cc: qemu-stable@nongnu.org Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20180410134203.17552-1-peter.maydell@linaro.org
This commit is contained in:
parent
6523eaca37
commit
6670b494fd
@ -274,6 +274,7 @@ static void uart_write(void *opaque, hwaddr offset, uint64_t value,
|
||||
* is then reflected into the intstatus value by the update function).
|
||||
*/
|
||||
s->state &= ~(value & (R_INTSTATUS_TXO_MASK | R_INTSTATUS_RXO_MASK));
|
||||
s->intstatus &= ~value;
|
||||
cmsdk_apb_uart_update(s);
|
||||
break;
|
||||
case A_BAUDDIV:
|
||||
|
Loading…
Reference in New Issue
Block a user