aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/irq.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r--include/linux/irq.h40
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
25struct irq_desc; 26struct irq_desc;
26typedef void fastcall (*irq_flow_handler_t)(unsigned int irq, 27typedef 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)
258extern int no_irq_affinity; 258extern int no_irq_affinity;
259 259
260/* Handle irq action chains: */ 260/* Handle irq action chains: */
261extern int handle_IRQ_event(unsigned int irq, struct pt_regs *regs, 261extern 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 */
268extern void fastcall 267extern void fastcall handle_level_irq(unsigned int irq, struct irq_desc *desc);
269handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs); 268extern void fastcall handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc);
270extern void fastcall 269extern void fastcall handle_edge_irq(unsigned int irq, struct irq_desc *desc);
271handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc, 270extern void fastcall handle_simple_irq(unsigned int irq, struct irq_desc *desc);
272 struct pt_regs *regs); 271extern void fastcall handle_percpu_irq(unsigned int irq, struct irq_desc *desc);
273extern void fastcall 272extern void fastcall handle_bad_irq(unsigned int irq, struct irq_desc *desc);
274handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs);
275extern void fastcall
276handle_simple_irq(unsigned int irq, struct irq_desc *desc,
277 struct pt_regs *regs);
278extern void fastcall
279handle_percpu_irq(unsigned int irq, struct irq_desc *desc,
280 struct pt_regs *regs);
281extern void fastcall
282handle_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
295extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs); 285extern 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 */
304static inline void generic_handle_irq(unsigned int irq, struct pt_regs *regs) 294static 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: */
319extern void note_interrupt(unsigned int irq, struct irq_desc *desc, 309extern 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 :*/
323void check_irq_resend(struct irq_desc *desc, unsigned int irq); 313void check_irq_resend(struct irq_desc *desc, unsigned int irq);