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 eee97bb81ba5..ef259569fd8c 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c | |||
@@ -355,14 +355,16 @@ void forward_interrupts(int pid) | |||
355 | */ | 355 | */ |
356 | unsigned int do_IRQ(int irq, union uml_pt_regs *regs) | 356 | unsigned int do_IRQ(int irq, union uml_pt_regs *regs) |
357 | { | 357 | { |
358 | irq_enter(); | 358 | struct pt_regs *old_regs = set_irq_regs((struct pt_regs *)regs); |
359 | __do_IRQ(irq, (struct pt_regs *)regs); | 359 | irq_enter(); |
360 | irq_exit(); | 360 | __do_IRQ(irq); |
361 | return 1; | 361 | irq_exit(); |
362 | set_irq_regs(old_regs); | ||
363 | return 1; | ||
362 | } | 364 | } |
363 | 365 | ||
364 | int um_request_irq(unsigned int irq, int fd, int type, | 366 | int um_request_irq(unsigned int irq, int fd, int type, |
365 | irqreturn_t (*handler)(int, void *, struct pt_regs *), | 367 | irq_handler_t handler, |
366 | unsigned long irqflags, const char * devname, | 368 | unsigned long irqflags, const char * devname, |
367 | void *dev_id) | 369 | void *dev_id) |
368 | { | 370 | { |
@@ -423,8 +425,7 @@ void __init init_IRQ(void) | |||
423 | } | 425 | } |
424 | } | 426 | } |
425 | 427 | ||
426 | int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *, | 428 | int init_aio_irq(int irq, char *name, irq_handler_t handler) |
427 | struct pt_regs *)) | ||
428 | { | 429 | { |
429 | int fds[2], err; | 430 | int fds[2], err; |
430 | 431 | ||