diff options
Diffstat (limited to 'include/linux/irq.h')
| -rw-r--r-- | include/linux/irq.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index fbf6d901e9c2..48d3cb3b6a47 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -320,7 +320,9 @@ handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *, | |||
| 320 | * Monolithic do_IRQ implementation. | 320 | * Monolithic do_IRQ implementation. |
| 321 | * (is an explicit fastcall, because i386 4KSTACKS calls it from assembly) | 321 | * (is an explicit fastcall, because i386 4KSTACKS calls it from assembly) |
| 322 | */ | 322 | */ |
| 323 | #ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ | ||
| 323 | extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs); | 324 | extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs); |
| 325 | #endif | ||
| 324 | 326 | ||
| 325 | /* | 327 | /* |
| 326 | * Architectures call this to let the generic IRQ layer | 328 | * Architectures call this to let the generic IRQ layer |
| @@ -332,10 +334,14 @@ static inline void generic_handle_irq(unsigned int irq, struct pt_regs *regs) | |||
| 332 | { | 334 | { |
| 333 | struct irq_desc *desc = irq_desc + irq; | 335 | struct irq_desc *desc = irq_desc + irq; |
| 334 | 336 | ||
| 337 | #ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ | ||
| 338 | desc->handle_irq(irq, desc, regs); | ||
| 339 | #else | ||
| 335 | if (likely(desc->handle_irq)) | 340 | if (likely(desc->handle_irq)) |
| 336 | desc->handle_irq(irq, desc, regs); | 341 | desc->handle_irq(irq, desc, regs); |
| 337 | else | 342 | else |
| 338 | __do_IRQ(irq, regs); | 343 | __do_IRQ(irq, regs); |
| 344 | #endif | ||
| 339 | } | 345 | } |
| 340 | 346 | ||
| 341 | /* Handling of unhandled and spurious interrupts: */ | 347 | /* Handling of unhandled and spurious interrupts: */ |
