Commit 60e336dbb837ef4d5053433f9ee391feb102be36
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; |