isr = (1 << (devp - devp->hd_hpets->hp_dev)); writeq(isr, &devp->hd_hpet->hpet_isr); 
if (devp->hd_flags & HPET_SHARED_IRQ) writel(isr, &devp->hd_hpet->hpet_isr); 
static irqreturn_t hpet_interrupt(int irq, void *data, struct pt_regs *regs){	struct hpet_dev *devp;	unsigned long isr;	devp = data;	spin_lock(&hpet_lock);	devp->hd_irqdata++;	/*	 * For non-periodic timers, increment the accumulator.	 * This has the effect of treating non-periodic like periodic.	 */	if ((devp->hd_flags & (HPET_IE | HPET_PERIODIC)) == HPET_IE) {		unsigned long m, t;		t = devp->hd_ireqfreq;		m = read_counter(&devp->hd_hpet->hpet_mc);		write_counter(t + m + devp->hd_hpets->hp_delta,			      &devp->hd_timer->hpet_compare);	}	isr = (1 << (devp - devp->hd_hpets->hp_dev));	writeq(isr, &devp->hd_hpet->hpet_isr);	spin_unlock(&hpet_lock);	spin_lock(&hpet_task_lock);	if (devp->hd_task)		devp->hd_task->ht_func(devp->hd_task->ht_data);	spin_unlock(&hpet_task_lock);	wake_up_interruptible(&devp->hd_waitqueue);	kill_fasync(&devp->hd_async_queue, SIGIO, POLL_IN);	return IRQ_HANDLED;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0d29086177aaa1e7d14e6ebb7fc067b3ca6d5c11/hpet.c/buggy/drivers/char/hpet.c