diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/irq.h | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 6f463606c318..b947d46e4b18 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -22,6 +22,12 @@ | |||
22 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | 24 | ||
25 | struct irq_desc; | ||
26 | typedef void fastcall (*irq_flow_handler_t)(unsigned int irq, | ||
27 | struct irq_desc *desc, | ||
28 | struct pt_regs *regs); | ||
29 | |||
30 | |||
25 | /* | 31 | /* |
26 | * IRQ line status. | 32 | * IRQ line status. |
27 | * | 33 | * |
@@ -139,9 +145,7 @@ struct irq_chip { | |||
139 | * Pad this out to 32 bytes for cache and indexing reasons. | 145 | * Pad this out to 32 bytes for cache and indexing reasons. |
140 | */ | 146 | */ |
141 | struct irq_desc { | 147 | struct irq_desc { |
142 | void fastcall (*handle_irq)(unsigned int irq, | 148 | irq_flow_handler_t handle_irq; |
143 | struct irq_desc *desc, | ||
144 | struct pt_regs *regs); | ||
145 | struct irq_chip *chip; | 149 | struct irq_chip *chip; |
146 | void *handler_data; | 150 | void *handler_data; |
147 | void *chip_data; | 151 | void *chip_data; |
@@ -281,9 +285,7 @@ handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs); | |||
281 | * Get a descriptive string for the highlevel handler, for | 285 | * Get a descriptive string for the highlevel handler, for |
282 | * /proc/interrupts output: | 286 | * /proc/interrupts output: |
283 | */ | 287 | */ |
284 | extern const char * | 288 | extern const char *handle_irq_name(irq_flow_handler_t handle); |
285 | handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *, | ||
286 | struct pt_regs *)); | ||
287 | 289 | ||
288 | /* | 290 | /* |
289 | * Monolithic do_IRQ implementation. | 291 | * Monolithic do_IRQ implementation. |
@@ -335,22 +337,15 @@ extern struct irq_chip dummy_irq_chip; | |||
335 | 337 | ||
336 | extern void | 338 | extern void |
337 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, | 339 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, |
338 | void fastcall (*handle)(unsigned int, | 340 | irq_flow_handler_t handle); |
339 | struct irq_desc *, | ||
340 | struct pt_regs *)); | ||
341 | extern void | 341 | extern void |
342 | __set_irq_handler(unsigned int irq, | 342 | __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained); |
343 | void fastcall (*handle)(unsigned int, struct irq_desc *, | ||
344 | struct pt_regs *), | ||
345 | int is_chained); | ||
346 | 343 | ||
347 | /* | 344 | /* |
348 | * Set a highlevel flow handler for a given IRQ: | 345 | * Set a highlevel flow handler for a given IRQ: |
349 | */ | 346 | */ |
350 | static inline void | 347 | static inline void |
351 | set_irq_handler(unsigned int irq, | 348 | set_irq_handler(unsigned int irq, irq_flow_handler_t handle) |
352 | void fastcall (*handle)(unsigned int, struct irq_desc *, | ||
353 | struct pt_regs *)) | ||
354 | { | 349 | { |
355 | __set_irq_handler(irq, handle, 0); | 350 | __set_irq_handler(irq, handle, 0); |
356 | } | 351 | } |
@@ -362,8 +357,7 @@ set_irq_handler(unsigned int irq, | |||
362 | */ | 357 | */ |
363 | static inline void | 358 | static inline void |
364 | set_irq_chained_handler(unsigned int irq, | 359 | set_irq_chained_handler(unsigned int irq, |
365 | void fastcall (*handle)(unsigned int, struct irq_desc *, | 360 | irq_flow_handler_t handle) |
366 | struct pt_regs *)) | ||
367 | { | 361 | { |
368 | __set_irq_handler(irq, handle, 1); | 362 | __set_irq_handler(irq, handle, 1); |
369 | } | 363 | } |