struct DEVICE *dev = dev_id; 
struct net_device *dev = dev_id; 
static irqreturn_t uli526x_interrupt(int irq, void *dev_id, struct pt_regs *regs){	struct DEVICE *dev = dev_id;	struct uli526x_board_info *db = netdev_priv(dev);	unsigned long ioaddr = dev->base_addr;	unsigned long flags;       //ULI526X_DBUG(0, "uli526x_interrupt()", 0);	if (!dev) {		ULI526X_DBUG(1, "uli526x_interrupt() without DEVICE arg", 0);		return IRQ_NONE;	}	//outl(0, ioaddr + DCR7);	spin_lock_irqsave(&db->lock, flags);	outl(0, ioaddr + DCR7);	/* Got ULI526X status */	db->cr5_data = inl(ioaddr + DCR5);	outl(db->cr5_data, ioaddr + DCR5);	if ( !(db->cr5_data & 0x180c1) ) {		spin_unlock_irqrestore(&db->lock, flags);		outl(db->cr7_data, ioaddr + DCR7);		return IRQ_HANDLED;	}	/* Disable all interrupt in CR7 to solve the interrupt edge problem */	//outl(0, ioaddr + DCR7);	/* Check system status */	if (db->cr5_data & 0x2000) {		/* system bus error happen */		ULI526X_DBUG(1, "System bus error happen. CR5=", db->cr5_data);		db->reset_fatal++;		db->wait_reset = 1;	/* Need to RESET */		spin_unlock_irqrestore(&db->lock, flags);		return IRQ_HANDLED;	}	 /* Received the coming packet */	if ( (db->cr5_data & 0x40) && db->rx_avail_cnt )		uli526x_rx_packet(dev, db);	/* reallocate rx descriptor buffer */	if (db->rx_avail_cnt<RX_DESC_CNT)		allocate_rx_buffer(db);	/* Free the transmitted descriptor */	if ( db->cr5_data & 0x01)		uli526x_free_tx_pkt(dev, db);	/* Restore CR7 to enable interrupt mask */	outl(db->cr7_data, ioaddr + DCR7);	spin_unlock_irqrestore(&db->lock, flags);	return IRQ_HANDLED;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/945a787675cc5ba362f5d4ce135d2a2c20be5985/uli526x.c/buggy/drivers/net/tulip/uli526x.c