Commit 60e336dbb837ef4d5053433f9ee391feb102be36

Authored by bellard
1 parent 8d11df9e

serial interrupt fix (Hampa Hug)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1049 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 5 additions and 2 deletions
hw/serial.c
@@ -133,7 +133,10 @@ static void serial_ioport_write(void *opaque, uint32_t addr, uint32_t val) @@ -133,7 +133,10 @@ static void serial_ioport_write(void *opaque, uint32_t addr, uint32_t val)
133 if (s->lcr & UART_LCR_DLAB) { 133 if (s->lcr & UART_LCR_DLAB) {
134 s->divider = (s->divider & 0x00ff) | (val << 8); 134 s->divider = (s->divider & 0x00ff) | (val << 8);
135 } else { 135 } else {
136 - s->ier = val; 136 + s->ier = val & 0x0f;
  137 + if (s->lsr & UART_LSR_THRE) {
  138 + s->thr_ipending = 1;
  139 + }
137 serial_update_irq(s); 140 serial_update_irq(s);
138 } 141 }
139 break; 142 break;
@@ -143,7 +146,7 @@ static void serial_ioport_write(void *opaque, uint32_t addr, uint32_t val) @@ -143,7 +146,7 @@ static void serial_ioport_write(void *opaque, uint32_t addr, uint32_t val)
143 s->lcr = val; 146 s->lcr = val;
144 break; 147 break;
145 case 4: 148 case 4:
146 - s->mcr = val; 149 + s->mcr = val & 0x1f;
147 break; 150 break;
148 case 5: 151 case 5:
149 break; 152 break;