blob: 1bd9510de1b9ced64b1947f2734ddbf4c8ce4f5d [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef __ASM_ARM_IRQ_H
2#define __ASM_ARM_IRQ_H
3
Rob Herringa2be01b2012-01-03 15:17:23 -06004#define NR_IRQS_LEGACY 16
5
6#ifndef CONFIG_SPARSE_IRQ
Russell Kinga09e64f2008-08-05 16:14:15 +01007#include <mach/irqs.h>
Rob Herringa2be01b2012-01-03 15:17:23 -06008#else
9#define NR_IRQS NR_IRQS_LEGACY
10#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070011
12#ifndef irq_canonicalize
13#define irq_canonicalize(i) (i)
14#endif
15
Linus Torvalds1da177e2005-04-16 15:20:36 -070016/*
17 * Use this value to indicate lack of interrupt
18 * capability
19 */
20#ifndef NO_IRQ
21#define NO_IRQ ((unsigned int)(-1))
22#endif
23
Arnaud Patard431d2cd2006-12-27 22:56:44 +010024#ifndef __ASSEMBLY__
25struct irqaction;
viresh kumaraedceb22010-03-29 05:29:57 +010026struct pt_regs;
Russell Kinga054a812005-11-02 22:24:33 +000027extern void migrate_irqs(void);
Russell King446616d2008-09-06 10:56:27 +010028
29extern void asm_do_IRQ(unsigned int, struct pt_regs *);
Russell King - ARM Linuxa4841e32011-07-11 22:25:43 +010030void handle_IRQ(unsigned int, struct pt_regs *);
Russell King446616d2008-09-06 10:56:27 +010031void init_IRQ(void);
32
Catalin Marinasf36a3bb12013-01-18 15:20:06 +000033#ifdef CONFIG_MULTI_IRQ_HANDLER
34extern void (*handle_arch_irq)(struct pt_regs *);
35extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
36#endif
37
Russell King96f0e002014-09-03 23:57:13 +010038#ifdef CONFIG_SMP
39extern void arch_trigger_all_cpu_backtrace(bool);
40#define arch_trigger_all_cpu_backtrace(x) arch_trigger_all_cpu_backtrace(x)
41#endif
42
Boris Ostrovskyb4ff8382015-11-20 11:25:04 -050043static inline int nr_legacy_irqs(void)
44{
45 return NR_IRQS_LEGACY;
46}
47
Linus Torvalds1da177e2005-04-16 15:20:36 -070048#endif
49
Arnaud Patard431d2cd2006-12-27 22:56:44 +010050#endif
51