12 #include <linux/sched.h>
23 static unsigned int cached_irq_mask = 0xffff;
27 i8259_update_irq_hw(
unsigned int irq,
unsigned long mask)
30 if (irq & 8) mask >>= 8;
31 if (irq & 8) port = 0xA1;
38 spin_lock(&i8259_irq_lock);
39 i8259_update_irq_hw(d->
irq, cached_irq_mask &= ~(1 << d->
irq));
40 spin_unlock(&i8259_irq_lock);
44 __i8259a_disable_irq(
unsigned int irq)
46 i8259_update_irq_hw(irq, cached_irq_mask |= 1 << irq);
52 spin_lock(&i8259_irq_lock);
53 __i8259a_disable_irq(d->
irq);
54 spin_unlock(&i8259_irq_lock);
60 unsigned int irq = d->
irq;
62 spin_lock(&i8259_irq_lock);
63 __i8259a_disable_irq(irq);
67 outb(0xE0 | (irq - 8), 0xa0);
70 outb(0xE0 | irq, 0x20);
71 spin_unlock(&i8259_irq_lock);
94 for (i = 0; i < 16; i++) {
102 #if defined(CONFIG_ALPHA_GENERIC)
103 # define IACK_SC alpha_mv.iack_sc
104 #elif defined(CONFIG_ALPHA_APECS)
105 # define IACK_SC APECS_IACK_SC
106 #elif defined(CONFIG_ALPHA_LCA)
107 # define IACK_SC LCA_IACK_SC
108 #elif defined(CONFIG_ALPHA_CIA)
109 # define IACK_SC CIA_IACK_SC
110 #elif defined(CONFIG_ALPHA_PYXIS)
111 # define IACK_SC PYXIS_IACK_SC
112 #elif defined(CONFIG_ALPHA_TITAN)
113 # define IACK_SC TITAN_IACK_SC
114 #elif defined(CONFIG_ALPHA_TSUNAMI)
115 # define IACK_SC TSUNAMI_IACK_SC
116 #elif defined(CONFIG_ALPHA_IRONGATE)
117 # define IACK_SC IRONGATE_IACK_SC
132 int j = *(
vuip) IACK_SC;
138 #if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC)
157 pic =
inb(0x20) | (
inb(0xA0) << 8);