Commit c9a33054bf589f1d78315100c645713b04bddc31
1 parent
75554a3c
Add a comment about masking of CTI interrupt in 16550A UART.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5264 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
3 additions
and
0 deletions
hw/serial.c
| @@ -192,6 +192,9 @@ static void serial_update_irq(SerialState *s) | @@ -192,6 +192,9 @@ static void serial_update_irq(SerialState *s) | ||
| 192 | if ((s->ier & UART_IER_RLSI) && (s->lsr & UART_LSR_INT_ANY)) { | 192 | if ((s->ier & UART_IER_RLSI) && (s->lsr & UART_LSR_INT_ANY)) { |
| 193 | tmp_iir = UART_IIR_RLSI; | 193 | tmp_iir = UART_IIR_RLSI; |
| 194 | } else if ((s->ier & UART_IER_RDI) && s->timeout_ipending) { | 194 | } else if ((s->ier & UART_IER_RDI) && s->timeout_ipending) { |
| 195 | + /* Note that(s->ier & UART_IER_RDI) can mask this interrupt, | ||
| 196 | + * this is not in the specification but is observed on existing | ||
| 197 | + * hardware. */ | ||
| 195 | tmp_iir = UART_IIR_CTI; | 198 | tmp_iir = UART_IIR_CTI; |
| 196 | } else if ((s->ier & UART_IER_RDI) && (s->lsr & UART_LSR_DR)) { | 199 | } else if ((s->ier & UART_IER_RDI) && (s->lsr & UART_LSR_DR)) { |
| 197 | if (!(s->fcr & UART_FCR_FE)) { | 200 | if (!(s->fcr & UART_FCR_FE)) { |