- Fix a serial emulation bug affecting (at least) FreeBSD 8's new

uart(4) driver.
- Bump PORTREVISION.

Reported by:	Olivier Cochard-Labbé <olivier@cochard.me>
Feature safe:	yes
This commit is contained in:
Juergen Lock 2009-09-18 19:29:24 +00:00
parent c943dce672
commit c7acb4aa30
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=241667
2 changed files with 19 additions and 1 deletions

View file

@ -7,7 +7,7 @@
PORTNAME= qemu PORTNAME= qemu
PORTVERSION= 0.10.6 PORTVERSION= 0.10.6
PORTREVISION= 2 PORTREVISION= 3
CATEGORIES= emulators CATEGORIES= emulators
MASTER_SITES= ${MASTER_SITE_SAVANNAH} \ MASTER_SITES= ${MASTER_SITE_SAVANNAH} \
http://bellard.org/qemu/ http://bellard.org/qemu/

View file

@ -0,0 +1,18 @@
Index: qemu/hw/serial.c
@@ -196,12 +195,10 @@ static void serial_update_irq(SerialStat
* this is not in the specification but is observed on existing
* hardware. */
tmp_iir = UART_IIR_CTI;
- } else if ((s->ier & UART_IER_RDI) && (s->lsr & UART_LSR_DR)) {
- if (!(s->fcr & UART_FCR_FE)) {
- tmp_iir = UART_IIR_RDI;
- } else if (s->recv_fifo.count >= s->recv_fifo.itl) {
- tmp_iir = UART_IIR_RDI;
- }
+ } else if ((s->ier & UART_IER_RDI) && (s->lsr & UART_LSR_DR) &&
+ (!(s->fcr & UART_FCR_FE) ||
+ s->recv_fifo.count >= s->recv_fifo.itl)) {
+ tmp_iir = UART_IIR_RDI;
} else if ((s->ier & UART_IER_THRI) && s->thr_ipending) {
tmp_iir = UART_IIR_THRI;
} else if ((s->ier & UART_IER_MSI) && (s->msr & UART_MSR_ANY_DELTA)) {