diff options
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r-- | include/linux/irq.h | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index b947d46e4b18..c64f3cc7e870 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -21,11 +21,11 @@ | |||
21 | 21 | ||
22 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/irq_regs.h> | ||
24 | 25 | ||
25 | struct irq_desc; | 26 | struct irq_desc; |
26 | typedef void fastcall (*irq_flow_handler_t)(unsigned int irq, | 27 | typedef void fastcall (*irq_flow_handler_t)(unsigned int irq, |
27 | struct irq_desc *desc, | 28 | struct irq_desc *desc); |
28 | struct pt_regs *regs); | ||
29 | 29 | ||
30 | 30 | ||
31 | /* | 31 | /* |
@@ -258,28 +258,18 @@ static inline int select_smp_affinity(unsigned int irq) | |||
258 | extern int no_irq_affinity; | 258 | extern int no_irq_affinity; |
259 | 259 | ||
260 | /* Handle irq action chains: */ | 260 | /* Handle irq action chains: */ |
261 | extern int handle_IRQ_event(unsigned int irq, struct pt_regs *regs, | 261 | extern int handle_IRQ_event(unsigned int irq, struct irqaction *action); |
262 | struct irqaction *action); | ||
263 | 262 | ||
264 | /* | 263 | /* |
265 | * Built-in IRQ handlers for various IRQ types, | 264 | * Built-in IRQ handlers for various IRQ types, |
266 | * callable via desc->chip->handle_irq() | 265 | * callable via desc->chip->handle_irq() |
267 | */ | 266 | */ |
268 | extern void fastcall | 267 | extern void fastcall handle_level_irq(unsigned int irq, struct irq_desc *desc); |
269 | handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs); | 268 | extern void fastcall handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc); |
270 | extern void fastcall | 269 | extern void fastcall handle_edge_irq(unsigned int irq, struct irq_desc *desc); |
271 | handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc, | 270 | extern void fastcall handle_simple_irq(unsigned int irq, struct irq_desc *desc); |
272 | struct pt_regs *regs); | 271 | extern void fastcall handle_percpu_irq(unsigned int irq, struct irq_desc *desc); |
273 | extern void fastcall | 272 | extern void fastcall handle_bad_irq(unsigned int irq, struct irq_desc *desc); |
274 | handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs); | ||
275 | extern void fastcall | ||
276 | handle_simple_irq(unsigned int irq, struct irq_desc *desc, | ||
277 | struct pt_regs *regs); | ||
278 | extern void fastcall | ||
279 | handle_percpu_irq(unsigned int irq, struct irq_desc *desc, | ||
280 | struct pt_regs *regs); | ||
281 | extern void fastcall | ||
282 | handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs); | ||
283 | 273 | ||
284 | /* | 274 | /* |
285 | * Get a descriptive string for the highlevel handler, for | 275 | * Get a descriptive string for the highlevel handler, for |
@@ -292,7 +282,7 @@ extern const char *handle_irq_name(irq_flow_handler_t handle); | |||
292 | * (is an explicit fastcall, because i386 4KSTACKS calls it from assembly) | 282 | * (is an explicit fastcall, because i386 4KSTACKS calls it from assembly) |
293 | */ | 283 | */ |
294 | #ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ | 284 | #ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ |
295 | extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs); | 285 | extern fastcall unsigned int __do_IRQ(unsigned int irq); |
296 | #endif | 286 | #endif |
297 | 287 | ||
298 | /* | 288 | /* |
@@ -301,23 +291,23 @@ extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs); | |||
301 | * irqchip-style controller then we call the ->handle_irq() handler, | 291 | * irqchip-style controller then we call the ->handle_irq() handler, |
302 | * and it calls __do_IRQ() if it's attached to an irqtype-style controller. | 292 | * and it calls __do_IRQ() if it's attached to an irqtype-style controller. |
303 | */ | 293 | */ |
304 | static inline void generic_handle_irq(unsigned int irq, struct pt_regs *regs) | 294 | static inline void generic_handle_irq(unsigned int irq) |
305 | { | 295 | { |
306 | struct irq_desc *desc = irq_desc + irq; | 296 | struct irq_desc *desc = irq_desc + irq; |
307 | 297 | ||
308 | #ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ | 298 | #ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ |
309 | desc->handle_irq(irq, desc, regs); | 299 | desc->handle_irq(irq, desc); |
310 | #else | 300 | #else |
311 | if (likely(desc->handle_irq)) | 301 | if (likely(desc->handle_irq)) |
312 | desc->handle_irq(irq, desc, regs); | 302 | desc->handle_irq(irq, desc); |
313 | else | 303 | else |
314 | __do_IRQ(irq, regs); | 304 | __do_IRQ(irq); |
315 | #endif | 305 | #endif |
316 | } | 306 | } |
317 | 307 | ||
318 | /* Handling of unhandled and spurious interrupts: */ | 308 | /* Handling of unhandled and spurious interrupts: */ |
319 | extern void note_interrupt(unsigned int irq, struct irq_desc *desc, | 309 | extern void note_interrupt(unsigned int irq, struct irq_desc *desc, |
320 | int action_ret, struct pt_regs *regs); | 310 | int action_ret); |
321 | 311 | ||
322 | /* Resending of interrupts :*/ | 312 | /* Resending of interrupts :*/ |
323 | void check_irq_resend(struct irq_desc *desc, unsigned int irq); | 313 | void check_irq_resend(struct irq_desc *desc, unsigned int irq); |