sh: intc: IRQ auto-distribution support.
[deliverable/linux.git] / arch / sh / include / asm / irq.h
1 #ifndef __ASM_SH_IRQ_H
2 #define __ASM_SH_IRQ_H
3
4 #include <asm/machvec.h>
5
6 /*
7 * A sane default based on a reasonable vector table size, platforms are
8 * advised to cap this at the hard limit that they're interested in
9 * through the machvec.
10 */
11 #define NR_IRQS 256
12 #define NR_IRQS_LEGACY 8 /* Legacy external IRQ0-7 */
13
14 /*
15 * This is a special IRQ number for indicating that no IRQ has been
16 * triggered and to simply ignore the IRQ dispatch. This is a special
17 * case that can happen with IRQ auto-distribution when multiple CPUs
18 * are woken up and signalled in parallel.
19 */
20 #define NO_IRQ_IGNORE ((unsigned int)-1)
21
22 /*
23 * Convert back and forth between INTEVT and IRQ values.
24 */
25 #ifdef CONFIG_CPU_HAS_INTEVT
26 #define evt2irq(evt) (((evt) >> 5) - 16)
27 #define irq2evt(irq) (((irq) + 16) << 5)
28 #else
29 #define evt2irq(evt) (evt)
30 #define irq2evt(irq) (irq)
31 #endif
32
33 /*
34 * Simple Mask Register Support
35 */
36 extern void make_maskreg_irq(unsigned int irq);
37 extern unsigned short *irq_mask_register;
38
39 /*
40 * PINT IRQs
41 */
42 void init_IRQ_pint(void);
43 void make_imask_irq(unsigned int irq);
44
45 static inline int generic_irq_demux(int irq)
46 {
47 return irq;
48 }
49
50 #define irq_demux(irq) sh_mv.mv_irq_demux(irq)
51
52 void init_IRQ(void);
53 asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs);
54
55 #ifdef CONFIG_IRQSTACKS
56 extern void irq_ctx_init(int cpu);
57 extern void irq_ctx_exit(int cpu);
58 # define __ARCH_HAS_DO_SOFTIRQ
59 #else
60 # define irq_ctx_init(cpu) do { } while (0)
61 # define irq_ctx_exit(cpu) do { } while (0)
62 #endif
63
64 #ifdef CONFIG_INTC_BALANCING
65 extern unsigned int irq_lookup(unsigned int irq);
66 extern void irq_finish(unsigned int irq);
67 #else
68 #define irq_lookup(irq) (irq)
69 #define irq_finish(irq) do { } while (0)
70 #endif
71
72 #include <asm-generic/irq.h>
73 #ifdef CONFIG_CPU_SH5
74 #include <cpu/irq.h>
75 #endif
76
77 #endif /* __ASM_SH_IRQ_H */
This page took 0.030897 seconds and 5 git commands to generate.