if ((ch & port->ignore_status_mask & ~RXSTAT_OVERRUN) == 0) tty_insert_flip_char(tty, ch, flg); if ((ch & ~port->ignore_status_mask & RXSTAT_OVERRUN) == 0) tty_insert_flip_char(tty, 0, TTY_OVERRUN); 
uart_insert_char(port, ch, UARTDR_OVERR, ch, flg); 
static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *regs){	struct uart_port *port = dev_id;	struct tty_struct *tty = port->info->tty;	unsigned int status, ch, flg, ignored = 0;	status = clps_readl(SYSFLG(port));	while (!(status & SYSFLG_URXFE)) {		ch = clps_readl(UARTDR(port));		if (tty->flip.count >= TTY_FLIPBUF_SIZE)			goto ignore_char;		port->icount.rx++;		flg = TTY_NORMAL;		/*		 * Note that the error handling code is		 * out of the main execution path		 */		if (unlikely(ch & UART_ANY_ERR)) {			if (ch & UARTDR_PARERR)				port->icount.parity++;			else if (ch & UARTDR_FRMERR)				port->icount.frame++;			if (ch & UARTDR_OVERR)				port->icount.overrun++;			ch &= port->read_status_mask;			if (ch & UARTDR_PARERR)				flg = TTY_PARITY;			else if (ch & UARTDR_FRMERR)				flg = TTY_FRAME;#ifdef SUPPORT_SYSRQ			port->sysrq = 0;#endif		}		if (uart_handle_sysrq_char(port, ch, regs))			goto ignore_char;		/*		 * CHECK: does overrun affect the current character?		 * ASSUMPTION: it does not.		 */		if ((ch & port->ignore_status_mask & ~RXSTAT_OVERRUN) == 0)			tty_insert_flip_char(tty, ch, flg);		if ((ch & ~port->ignore_status_mask & RXSTAT_OVERRUN) == 0)			tty_insert_flip_char(tty, 0, TTY_OVERRUN);	ignore_char:		status = clps_readl(SYSFLG(port));	}	tty_flip_buffer_push(tty);	return IRQ_HANDLED;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/05ab3014636ff60a319d37cdf37dca594b015eec/clps711x.c/buggy/drivers/serial/clps711x.c