tcg: fix size of local variables in tcg_gen_bswap64_i64
[qemu] / hw / serial.c
index 6f7b30e..a22770f 100644 (file)
@@ -197,12 +197,10 @@ static void serial_update_irq(SerialState *s)
          * 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)) {
@@ -712,9 +710,14 @@ static void serial_reset(void *opaque)
 static void serial_init_core(SerialState *s, qemu_irq irq, int baudbase,
                             CharDriverState *chr)
 {
+    if (!chr) {
+        fprintf(stderr, "Can't create serial device, empty char device\n");
+       exit(1);
+    }
+
     s->irq = irq;
     s->baudbase = baudbase;
-    s->chr = chr ?: qemu_chr_open("null", "null", NULL);
+    s->chr = chr;
 
     s->modem_status_poll = qemu_new_timer(vm_clock, (QEMUTimerCB *) serial_update_msl, s);