restore_flags(flags); 
local_irq_restore(flags); 
gpio_poll(struct file *file,	  poll_table *wait){	unsigned int mask = 0;	struct gpio_private *priv = (struct gpio_private *)file->private_data;	unsigned long data;	poll_wait(file, &priv->alarm_wq, wait);	if (priv->minor == GPIO_MINOR_A) {		unsigned long flags;		unsigned long tmp;		data = *R_PORT_PA_DATA;		/* PA has support for high level interrupt -		 * lets activate for those low and with highalarm set		 */		tmp = ~data & priv->highalarm & 0xFF;		tmp = (tmp << R_IRQ_MASK1_SET__pa0__BITNR);		save_flags(flags); cli();		gpio_pa_irq_enabled_mask |= tmp;		*R_IRQ_MASK1_SET = tmp;		restore_flags(flags);	} else if (priv->minor == GPIO_MINOR_B)		data = *R_PORT_PB_DATA;	else if (priv->minor == GPIO_MINOR_G)		data = *R_PORT_G_DATA;	else		return 0;		if ((data & priv->highalarm) ||	    (~data & priv->lowalarm)) {		mask = POLLIN|POLLRDNORM;	}		DP(printk("gpio_poll ready: mask 0x%08X\n", mask));	return mask;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7e9204265b4ec6680fad9abc7a78b94087983916/gpio.c/buggy/arch/cris/arch-v10/drivers/gpio.c