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 | 133 | if (s->lcr & UART_LCR_DLAB) { |
134 | 134 | s->divider = (s->divider & 0x00ff) | (val << 8); |
135 | 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 | 140 | serial_update_irq(s); |
138 | 141 | } |
139 | 142 | break; |
... | ... | @@ -143,7 +146,7 @@ static void serial_ioport_write(void *opaque, uint32_t addr, uint32_t val) |
143 | 146 | s->lcr = val; |
144 | 147 | break; |
145 | 148 | case 4: |
146 | - s->mcr = val; | |
149 | + s->mcr = val & 0x1f; | |
147 | 150 | break; |
148 | 151 | case 5: |
149 | 152 | break; | ... | ... |