This source file includes following definitions.
- i8259_irqdispatch
- mach_irq_dispatch
- mach_init_irq
1
2
3
4
5
6 #include <linux/interrupt.h>
7
8 #include <asm/irq_cpu.h>
9 #include <asm/i8259.h>
10
11 #include <loongson.h>
12
13 static void i8259_irqdispatch(void)
14 {
15 int irq;
16
17 irq = i8259_irq();
18 if (irq >= 0)
19 do_IRQ(irq);
20 else
21 spurious_interrupt();
22 }
23
24 asmlinkage void mach_irq_dispatch(unsigned int pending)
25 {
26 if (pending & CAUSEF_IP7)
27 do_IRQ(MIPS_CPU_IRQ_BASE + 7);
28 else if (pending & CAUSEF_IP6)
29 do_perfcnt_IRQ();
30 else if (pending & CAUSEF_IP5)
31 i8259_irqdispatch();
32 else if (pending & CAUSEF_IP2)
33 bonito_irqdispatch();
34 else
35 spurious_interrupt();
36 }
37
38 static struct irqaction cascade_irqaction = {
39 .handler = no_action,
40 .name = "cascade",
41 .flags = IRQF_NO_THREAD,
42 };
43
44 void __init mach_init_irq(void)
45 {
46
47
48
49
50
51
52
53 LOONGSON_INTEDGE = LOONGSON_ICU_SYSTEMERR | LOONGSON_ICU_MASTERERR |
54 LOONGSON_ICU_RETRYERR | LOONGSON_ICU_MBOXES;
55
56
57 mips_cpu_irq_init();
58 init_i8259_irqs();
59 bonito_irq_init();
60
61
62 setup_irq(MIPS_CPU_IRQ_BASE + 2, &cascade_irqaction);
63
64 setup_irq(MIPS_CPU_IRQ_BASE + 5, &cascade_irqaction);
65 }