26 #include <linux/compiler.h>
29 #include <linux/sched.h>
32 #include <linux/random.h>
33 #include <linux/module.h>
42 0, 1, 1, 1, 1, 15, 1, 1, 1, 1,
43 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
44 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
45 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
46 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
47 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
48 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
52 static void hw0_irqdispatch(
int irq)
58 printk(
"hw0_irqdispatch: irq 0, spurious interrupt?\n");
65 static void timer_irqdispatch(
int irq)
70 printk(
"timer_irqdispatch: irq 0, spurious interrupt?\n");
95 static inline void modify_cp0_intmask(
unsigned clr_mask,
unsigned set_mask)
99 status &= ~((clr_mask & 0xFF) << 8);
100 status |= (set_mask & 0xFF) << 8;
105 static inline void mask_gic_int(
unsigned int irq_nr)
111 static inline void unmask_gic_int(
unsigned int irq_nr)
114 PNX8550_GIC_REQ(irq_nr) = (1<<26 | 1<<16) | (1<<28) | gic_prio[irq_nr];
117 static inline void mask_irq(
struct irq_data *
d)
119 unsigned int irq_nr = d->
irq;
122 modify_cp0_intmask(1 << irq_nr, 0);
128 modify_cp0_intmask(1 << 7, 0);
130 printk(
"mask_irq: irq %d doesn't exist!\n", irq_nr);
134 static inline void unmask_irq(
struct irq_data *d)
136 unsigned int irq_nr = d->
irq;
139 modify_cp0_intmask(0, 1 << irq_nr);
145 modify_cp0_intmask(0, 1 << 7);
147 printk(
"mask_irq: irq %d doesn't exist!\n", irq_nr);
159 return prev_priority;
162 static struct irq_chip level_irq_type = {
163 .name =
"PNX Level IRQ",
164 .irq_mask = mask_irq,
165 .irq_unmask = unmask_irq,
192 if (gic_int_line == 0 )
228 configPR |= 0x00000038;