unsigned long flags; 
static irqreturn_t b44_interrupt(int irq, void *dev_id, struct pt_regs *regs){	struct net_device *dev = dev_id;	struct b44 *bp = netdev_priv(dev);	unsigned long flags;	u32 istat, imask;	int handled = 0;	spin_lock_irqsave(&bp->lock, flags);	istat = br32(bp, B44_ISTAT);	imask = br32(bp, B44_IMASK);	/* ??? What the fuck is the purpose of the interrupt mask	 * ??? register if we have to mask it out by hand anyways?	 */	istat &= imask;	if (istat) {		handled = 1;		if (netif_rx_schedule_prep(dev)) {			/* NOTE: These writes are posted by the readback of			 *       the ISTAT register below.			 */			bp->istat = istat;			__b44_disable_ints(bp);			__netif_rx_schedule(dev);		} else {			printk(KERN_ERR PFX "%s: Error, poll already scheduled\n",			       dev->name);		}		bw32(bp, B44_ISTAT, istat);		br32(bp, B44_ISTAT);	}	spin_unlock_irqrestore(&bp->lock, flags);	return IRQ_RETVAL(handled);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/65b984f26f16e97168ee29e53145055412f38a23/b44.c/buggy/drivers/net/b44.c