SRSR_MREQint)))) { 
SRSR_MREQint)))) { 
static irqreturn_t sx_interrupt(int irq, void *dev_id, struct pt_regs *regs){	unsigned char status;	unsigned char ack;	struct specialix_board *bp;	unsigned long loop = 0;	int saved_reg;	unsigned long flags;	func_enter();	bp = dev_id;	spin_lock_irqsave(&bp->lock, flags);	dprintk (SX_DEBUG_FLOW, "enter %s port %d room: %ld\n", __FUNCTION__, port_No(sx_get_port(bp, "INT")), SERIAL_XMIT_SIZE - sx_get_port(bp, "ITN")->xmit_cnt - 1);	if (!bp || !(bp->flags & SX_BOARD_ACTIVE)) {		dprintk (SX_DEBUG_IRQ, "sx: False interrupt. irq %d.\n", irq);		spin_unlock_irqrestore(&bp->lock, flags);		func_exit();		return IRQ_NONE;	}	saved_reg = bp->reg;	while ((++loop < 16) && (status = (sx_in(bp, CD186x_SRSR) &	                                   (SRSR_RREQint |		                            SRSR_TREQint |	                                    SRSR_MREQint)))) {			if (status & SRSR_RREQint) {			ack = sx_in(bp, CD186x_RRAR);			if (ack == (SX_ID | GIVR_IT_RCV))				sx_receive(bp);			else if (ack == (SX_ID | GIVR_IT_REXC))				sx_receive_exc(bp);			else				printk(KERN_ERR "sx%d: status: 0x%x Bad receive ack 0x%02x.\n",				       board_No(bp), status, ack);				} else if (status & SRSR_TREQint) {			ack = sx_in(bp, CD186x_TRAR);			if (ack == (SX_ID | GIVR_IT_TX))				sx_transmit(bp);			else				printk(KERN_ERR "sx%d: status: 0x%x Bad transmit ack 0x%02x. port: %d\n",				       board_No(bp), status, ack, port_No (sx_get_port (bp, "Int")));		} else if (status & SRSR_MREQint) {			ack = sx_in(bp, CD186x_MRAR);			if (ack == (SX_ID | GIVR_IT_MODEM)) 				sx_check_modem(bp);			else				printk(KERN_ERR "sx%d: status: 0x%x Bad modem ack 0x%02x.\n",				       board_No(bp), status, ack);				} 		sx_out(bp, CD186x_EOIR, 0);   /* Mark end of interrupt */	}	bp->reg = saved_reg;	outb (bp->reg, bp->base + SX_ADDR_REG);	spin_unlock_irqrestore(&bp->lock, flags);	func_exit();	return IRQ_HANDLED;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d61780c0d384939ef31c46b47442854d5def4623/specialix.c/buggy/drivers/char/specialix.c