diff --git a/hw/serial.c b/hw/serial.c
index 9102edb..b0ac52f 100644
--- a/hw/serial.c
+++ b/hw/serial.c
@@ -401,7 +401,8 @@ static void serial_ioport_write(void *opaque, uint32_t addr,
                      s->poll_msl = 0;
                 }
             }
-            if (s->lsr & UART_LSR_THRE) {
+            if (s->ier & UART_IER_THRI &&
+                s->lsr & UART_LSR_THRE) {
                 s->thr_ipending = 1;
                 serial_update_irq(s);
             }
