static void uart_read_rx_fifo(UartState *s, uint32_t *c)

{

    if ((s->r[R_CR] & UART_CR_RX_DIS) || !(s->r[R_CR] & UART_CR_RX_EN)) {

        return;

    }



    if (s->rx_count) {

        uint32_t rx_rpos =

                (RX_FIFO_SIZE + s->rx_wpos - s->rx_count) % RX_FIFO_SIZE;

        *c = s->rx_fifo[rx_rpos];

        s->rx_count--;



        qemu_chr_accept_input(s->chr);

    } else {

        *c = 0;

    }



    uart_update_status(s);

}

static void uart_read_rx_fifo(UartState *s, uint32_t *c)

{

    if ((s->r[R_CR] & UART_CR_RX_DIS) || !(s->r[R_CR] & UART_CR_RX_EN)) {

        return;

    }



    if (s->rx_count) {

        uint32_t rx_rpos =

                (RX_FIFO_SIZE + s->rx_wpos - s->rx_count) % RX_FIFO_SIZE;

        *c = s->rx_fifo[rx_rpos];

        s->rx_count--;



        qemu_chr_accept_input(s->chr);

    } else {

        *c = 0;

    }



    uart_update_status(s);

}

static void FUNC_0(UartState *VAR_0, uint32_t *VAR_1)

{

    if ((VAR_0->r[R_CR] & UART_CR_RX_DIS) || !(VAR_0->r[R_CR] & UART_CR_RX_EN)) {

        return;

    }



    if (VAR_0->rx_count) {

        uint32_t rx_rpos =

                (RX_FIFO_SIZE + VAR_0->rx_wpos - VAR_0->rx_count) % RX_FIFO_SIZE;

        *VAR_1 = VAR_0->rx_fifo[rx_rpos];

        VAR_0->rx_count--;



        qemu_chr_accept_input(VAR_0->chr);

    } else {

        *VAR_1 = 0;

    }



    uart_update_status(VAR_0);

}

static void FUNC_0(UartState *VAR_0, uint32_t *VAR_1)
{ if ((VAR_0->r[R_CR] & UART_CR_RX_DIS) || !(VAR_0->r[R_CR] & UART_CR_RX_EN)) { return; } if (VAR_0->rx_count) { uint32_t rx_rpos =
(RX_FIFO_SIZE + VAR_0->rx_wpos - VAR_0->rx_count) % RX_FIFO_SIZE; *VAR_1 = VAR_0->rx_fifo[rx_rpos]; VAR_0->rx_count--; qemu_chr_accept_input(VAR_0->chr); } else { *VAR_1 = 0; } uart_update_status(VAR_0); }