diff options
Diffstat (limited to 'arch/um/kernel/irq.c')
| -rw-r--r-- | arch/um/kernel/irq.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 7c41dabe7a2..3c01c2bc979 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c @@ -355,14 +355,16 @@ void forward_interrupts(int pid)   */  unsigned int do_IRQ(int irq, union uml_pt_regs *regs)  { -       irq_enter(); -       __do_IRQ(irq); -       irq_exit(); -       return 1; +	struct pt_regs *old_regs = set_irq_regs((struct pt_regs *)regs); +	irq_enter(); +	__do_IRQ(irq); +	irq_exit(); +	set_irq_regs(old_regs); +	return 1;  }  int um_request_irq(unsigned int irq, int fd, int type, -		   irqreturn_t (*handler)(int, void *, struct pt_regs *), +		   irqreturn_t (*handler)(int, void *),  		   unsigned long irqflags, const char * devname,  		   void *dev_id)  { @@ -423,8 +425,7 @@ void __init init_IRQ(void)  	}  } -int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *, -							     struct pt_regs *)) +int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *))  {  	int fds[2], err;  |