aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/alpha/kernel/irq.c5
-rw-r--r--arch/alpha/kernel/irq_alpha.c6
-rw-r--r--arch/alpha/kernel/irq_i8259.c6
-rw-r--r--arch/alpha/kernel/irq_impl.h4
-rw-r--r--arch/alpha/kernel/irq_pyxis.c2
-rw-r--r--arch/alpha/kernel/irq_srm.c2
-rw-r--r--arch/alpha/kernel/sys_alcor.c2
-rw-r--r--arch/alpha/kernel/sys_cabriolet.c2
-rw-r--r--arch/alpha/kernel/sys_dp264.c6
-rw-r--r--arch/alpha/kernel/sys_eb64p.c2
-rw-r--r--arch/alpha/kernel/sys_eiger.c10
-rw-r--r--arch/alpha/kernel/sys_jensen.c2
-rw-r--r--arch/alpha/kernel/sys_marvel.c2
-rw-r--r--arch/alpha/kernel/sys_miata.c2
-rw-r--r--arch/alpha/kernel/sys_mikasa.c2
-rw-r--r--arch/alpha/kernel/sys_noritake.c4
-rw-r--r--arch/alpha/kernel/sys_rawhide.c2
-rw-r--r--arch/alpha/kernel/sys_rx164.c4
-rw-r--r--arch/alpha/kernel/sys_sable.c2
-rw-r--r--arch/alpha/kernel/sys_takara.c10
-rw-r--r--arch/alpha/kernel/sys_titan.c2
-rw-r--r--arch/alpha/kernel/sys_wildfire.c2
22 files changed, 40 insertions, 41 deletions
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index dba4e70926f5..facf82a5499a 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -127,9 +127,8 @@ unlock:
127#define MAX_ILLEGAL_IRQS 16 127#define MAX_ILLEGAL_IRQS 16
128 128
129void 129void
130handle_irq(int irq, struct pt_regs * regs) 130handle_irq(int irq)
131{ 131{
132 struct pt_regs *old_regs;
133 /* 132 /*
134 * We ack quickly, we don't want the irq controller 133 * We ack quickly, we don't want the irq controller
135 * thinking we're snobs just because some other CPU has 134 * thinking we're snobs just because some other CPU has
@@ -150,7 +149,6 @@ handle_irq(int irq, struct pt_regs * regs)
150 return; 149 return;
151 } 150 }
152 151
153 old_regs = set_irq_regs(regs);
154 irq_enter(); 152 irq_enter();
155 /* 153 /*
156 * __do_IRQ() must be called with IPL_MAX. Note that we do not 154 * __do_IRQ() must be called with IPL_MAX. Note that we do not
@@ -161,5 +159,4 @@ handle_irq(int irq, struct pt_regs * regs)
161 local_irq_disable(); 159 local_irq_disable();
162 __do_IRQ(irq); 160 __do_IRQ(irq);
163 irq_exit(); 161 irq_exit();
164 set_irq_regs(old_regs);
165} 162}
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c
index d14cc423aa48..51d66b7f99e3 100644
--- a/arch/alpha/kernel/irq_alpha.c
+++ b/arch/alpha/kernel/irq_alpha.c
@@ -52,6 +52,7 @@ do_entInt(unsigned long type, unsigned long vector,
52#endif 52#endif
53 break; 53 break;
54 case 1: 54 case 1:
55 old_regs = set_irq_regs(regs);
55#ifdef CONFIG_SMP 56#ifdef CONFIG_SMP
56 { 57 {
57 long cpu; 58 long cpu;
@@ -62,12 +63,13 @@ do_entInt(unsigned long type, unsigned long vector,
62 if (cpu != boot_cpuid) { 63 if (cpu != boot_cpuid) {
63 kstat_cpu(cpu).irqs[RTC_IRQ]++; 64 kstat_cpu(cpu).irqs[RTC_IRQ]++;
64 } else { 65 } else {
65 handle_irq(RTC_IRQ, regs); 66 handle_irq(RTC_IRQ);
66 } 67 }
67 } 68 }
68#else 69#else
69 handle_irq(RTC_IRQ, regs); 70 handle_irq(RTC_IRQ);
70#endif 71#endif
72 set_irq_regs(old_regs);
71 return; 73 return;
72 case 2: 74 case 2:
73 alpha_mv.machine_check(vector, la_ptr, regs); 75 alpha_mv.machine_check(vector, la_ptr, regs);
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c
index 6c70f8b97b72..9405bee9894e 100644
--- a/arch/alpha/kernel/irq_i8259.c
+++ b/arch/alpha/kernel/irq_i8259.c
@@ -147,13 +147,13 @@ isa_device_interrupt(unsigned long vector)
147 */ 147 */
148 int j = *(vuip) IACK_SC; 148 int j = *(vuip) IACK_SC;
149 j &= 0xff; 149 j &= 0xff;
150 handle_irq(j, get_irq_regs()); 150 handle_irq(j);
151} 151}
152#endif 152#endif
153 153
154#if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC) 154#if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC)
155void 155void
156isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs) 156isa_no_iack_sc_device_interrupt(unsigned long vector)
157{ 157{
158 unsigned long pic; 158 unsigned long pic;
159 159
@@ -176,7 +176,7 @@ isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs)
176 while (pic) { 176 while (pic) {
177 int j = ffz(~pic); 177 int j = ffz(~pic);
178 pic &= pic - 1; 178 pic &= pic - 1;
179 handle_irq(j, regs); 179 handle_irq(j);
180 } 180 }
181} 181}
182#endif 182#endif
diff --git a/arch/alpha/kernel/irq_impl.h b/arch/alpha/kernel/irq_impl.h
index 5d84dbdcdb89..cc9a8a7aa279 100644
--- a/arch/alpha/kernel/irq_impl.h
+++ b/arch/alpha/kernel/irq_impl.h
@@ -16,7 +16,7 @@
16#define RTC_IRQ 8 16#define RTC_IRQ 8
17 17
18extern void isa_device_interrupt(unsigned long); 18extern void isa_device_interrupt(unsigned long);
19extern void isa_no_iack_sc_device_interrupt(unsigned long, struct pt_regs *); 19extern void isa_no_iack_sc_device_interrupt(unsigned long);
20extern void srm_device_interrupt(unsigned long); 20extern void srm_device_interrupt(unsigned long);
21extern void pyxis_device_interrupt(unsigned long); 21extern void pyxis_device_interrupt(unsigned long);
22 22
@@ -39,4 +39,4 @@ extern void i8259a_end_irq(unsigned int);
39extern struct hw_interrupt_type i8259a_irq_type; 39extern struct hw_interrupt_type i8259a_irq_type;
40extern void init_i8259a_irqs(void); 40extern void init_i8259a_irqs(void);
41 41
42extern void handle_irq(int irq, struct pt_regs * regs); 42extern void handle_irq(int irq);
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c
index 686dc22111b2..d53edbccbfe5 100644
--- a/arch/alpha/kernel/irq_pyxis.c
+++ b/arch/alpha/kernel/irq_pyxis.c
@@ -100,7 +100,7 @@ pyxis_device_interrupt(unsigned long vector)
100 if (i == 7) 100 if (i == 7)
101 isa_device_interrupt(vector); 101 isa_device_interrupt(vector);
102 else 102 else
103 handle_irq(16+i, get_irq_regs()); 103 handle_irq(16+i);
104 } 104 }
105} 105}
106 106
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c
index 2e9f6d421a8e..32212014fbe9 100644
--- a/arch/alpha/kernel/irq_srm.c
+++ b/arch/alpha/kernel/irq_srm.c
@@ -75,5 +75,5 @@ void
75srm_device_interrupt(unsigned long vector) 75srm_device_interrupt(unsigned long vector)
76{ 76{
77 int irq = (vector - 0x800) >> 4; 77 int irq = (vector - 0x800) >> 4;
78 handle_irq(irq, get_irq_regs()); 78 handle_irq(irq);
79} 79}
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c
index 2d412c876549..49bedfbbd31b 100644
--- a/arch/alpha/kernel/sys_alcor.c
+++ b/arch/alpha/kernel/sys_alcor.c
@@ -118,7 +118,7 @@ alcor_device_interrupt(unsigned long vector)
118 if (i == 31) { 118 if (i == 31) {
119 isa_device_interrupt(vector); 119 isa_device_interrupt(vector);
120 } else { 120 } else {
121 handle_irq(16 + i, get_irq_regs()); 121 handle_irq(16 + i);
122 } 122 }
123 } 123 }
124} 124}
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c
index e75f0cea6fcc..ace475c124f6 100644
--- a/arch/alpha/kernel/sys_cabriolet.c
+++ b/arch/alpha/kernel/sys_cabriolet.c
@@ -100,7 +100,7 @@ cabriolet_device_interrupt(unsigned long v)
100 if (i == 4) { 100 if (i == 4) {
101 isa_device_interrupt(v); 101 isa_device_interrupt(v);
102 } else { 102 } else {
103 handle_irq(16 + i, get_irq_regs()); 103 handle_irq(16 + i);
104 } 104 }
105 } 105 }
106} 106}
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c
index 57dce0098a1b..85d2f933dd07 100644
--- a/arch/alpha/kernel/sys_dp264.c
+++ b/arch/alpha/kernel/sys_dp264.c
@@ -238,7 +238,7 @@ dp264_device_interrupt(unsigned long vector)
238 if (i == 55) 238 if (i == 55)
239 isa_device_interrupt(vector); 239 isa_device_interrupt(vector);
240 else 240 else
241 handle_irq(16 + i, get_irq_regs()); 241 handle_irq(16 + i);
242#if 0 242#if 0
243 TSUNAMI_cchip->dir0.csr = 1UL << i; mb(); 243 TSUNAMI_cchip->dir0.csr = 1UL << i; mb();
244 tmp = TSUNAMI_cchip->dir0.csr; 244 tmp = TSUNAMI_cchip->dir0.csr;
@@ -268,7 +268,7 @@ dp264_srm_device_interrupt(unsigned long vector)
268 if (irq >= 32) 268 if (irq >= 32)
269 irq -= 16; 269 irq -= 16;
270 270
271 handle_irq(irq, get_irq_regs()); 271 handle_irq(irq);
272} 272}
273 273
274static void 274static void
@@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector)
290 * 290 *
291 * Eg IRQ 24 is DRIR bit 8, etc, etc 291 * Eg IRQ 24 is DRIR bit 8, etc, etc
292 */ 292 */
293 handle_irq(irq, get_irq_regs()); 293 handle_irq(irq);
294} 294}
295 295
296static void __init 296static void __init
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c
index 90d27256d7d6..9c5a306dc0ee 100644
--- a/arch/alpha/kernel/sys_eb64p.c
+++ b/arch/alpha/kernel/sys_eb64p.c
@@ -99,7 +99,7 @@ eb64p_device_interrupt(unsigned long vector)
99 if (i == 5) { 99 if (i == 5) {
100 isa_device_interrupt(vector); 100 isa_device_interrupt(vector);
101 } else { 101 } else {
102 handle_irq(16 + i, get_irq_regs()); 102 handle_irq(16 + i);
103 } 103 }
104 } 104 }
105} 105}
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c
index f38cded2df97..7ef3b6fb3700 100644
--- a/arch/alpha/kernel/sys_eiger.c
+++ b/arch/alpha/kernel/sys_eiger.c
@@ -118,10 +118,10 @@ eiger_device_interrupt(unsigned long vector)
118 * despatch an interrupt if it's set. 118 * despatch an interrupt if it's set.
119 */ 119 */
120 120
121 if (intstatus & 8) handle_irq(16+3, get_irq_regs()); 121 if (intstatus & 8) handle_irq(16+3);
122 if (intstatus & 4) handle_irq(16+2, get_irq_regs()); 122 if (intstatus & 4) handle_irq(16+2);
123 if (intstatus & 2) handle_irq(16+1, get_irq_regs()); 123 if (intstatus & 2) handle_irq(16+1);
124 if (intstatus & 1) handle_irq(16+0, get_irq_regs()); 124 if (intstatus & 1) handle_irq(16+0);
125 } else { 125 } else {
126 isa_device_interrupt(vector); 126 isa_device_interrupt(vector);
127 } 127 }
@@ -131,7 +131,7 @@ static void
131eiger_srm_device_interrupt(unsigned long vector) 131eiger_srm_device_interrupt(unsigned long vector)
132{ 132{
133 int irq = (vector - 0x800) >> 4; 133 int irq = (vector - 0x800) >> 4;
134 handle_irq(irq, get_irq_regs()); 134 handle_irq(irq);
135} 135}
136 136
137static void __init 137static void __init
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c
index fc316369f4d4..a7b89022938e 100644
--- a/arch/alpha/kernel/sys_jensen.c
+++ b/arch/alpha/kernel/sys_jensen.c
@@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector)
198 } 198 }
199#endif 199#endif
200 200
201 handle_irq(irq, get_irq_regs()); 201 handle_irq(irq);
202} 202}
203 203
204static void __init 204static void __init
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c
index 4ea5615be43a..e349f03b830e 100644
--- a/arch/alpha/kernel/sys_marvel.c
+++ b/arch/alpha/kernel/sys_marvel.c
@@ -64,7 +64,7 @@ io7_device_interrupt(unsigned long vector)
64 irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */ 64 irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */
65 irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */ 65 irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */
66 66
67 handle_irq(irq, get_irq_regs()); 67 handle_irq(irq);
68} 68}
69 69
70static volatile unsigned long * 70static volatile unsigned long *
diff --git a/arch/alpha/kernel/sys_miata.c b/arch/alpha/kernel/sys_miata.c
index fbbd95212a96..b8b817feb1ee 100644
--- a/arch/alpha/kernel/sys_miata.c
+++ b/arch/alpha/kernel/sys_miata.c
@@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector)
56 if (irq >= 16) 56 if (irq >= 16)
57 irq = irq + 8; 57 irq = irq + 8;
58 58
59 handle_irq(irq, get_irq_regs()); 59 handle_irq(irq);
60} 60}
61 61
62static void __init 62static void __init
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c
index 5429ba0e08f1..ba98048d61a8 100644
--- a/arch/alpha/kernel/sys_mikasa.c
+++ b/arch/alpha/kernel/sys_mikasa.c
@@ -99,7 +99,7 @@ mikasa_device_interrupt(unsigned long vector)
99 if (i < 16) { 99 if (i < 16) {
100 isa_device_interrupt(vector); 100 isa_device_interrupt(vector);
101 } else { 101 } else {
102 handle_irq(i, get_irq_regs()); 102 handle_irq(i);
103 } 103 }
104 } 104 }
105} 105}
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c
index b9a843447b89..679836205f04 100644
--- a/arch/alpha/kernel/sys_noritake.c
+++ b/arch/alpha/kernel/sys_noritake.c
@@ -98,7 +98,7 @@ noritake_device_interrupt(unsigned long vector)
98 if (i < 16) { 98 if (i < 16) {
99 isa_device_interrupt(vector); 99 isa_device_interrupt(vector);
100 } else { 100 } else {
101 handle_irq(i, get_irq_regs()); 101 handle_irq(i);
102 } 102 }
103 } 103 }
104} 104}
@@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector)
122 if (irq >= 16) 122 if (irq >= 16)
123 irq = irq + 1; 123 irq = irq + 1;
124 124
125 handle_irq(irq, get_irq_regs()); 125 handle_irq(irq);
126} 126}
127 127
128static void __init 128static void __init
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c
index bef65162bfab..581d08c70b92 100644
--- a/arch/alpha/kernel/sys_rawhide.c
+++ b/arch/alpha/kernel/sys_rawhide.c
@@ -158,7 +158,7 @@ rawhide_srm_device_interrupt(unsigned long vector)
158 /* Adjust by which hose it is from. */ 158 /* Adjust by which hose it is from. */
159 irq -= ((irq + 16) >> 2) & 0x38; 159 irq -= ((irq + 16) >> 2) & 0x38;
160 160
161 handle_irq(irq, get_irq_regs()); 161 handle_irq(irq);
162} 162}
163 163
164static void __init 164static void __init
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c
index fa8eef8dd8c6..ce1faa6f1df1 100644
--- a/arch/alpha/kernel/sys_rx164.c
+++ b/arch/alpha/kernel/sys_rx164.c
@@ -102,9 +102,9 @@ rx164_device_interrupt(unsigned long vector)
102 i = ffz(~pld); 102 i = ffz(~pld);
103 pld &= pld - 1; /* clear least bit set */ 103 pld &= pld - 1; /* clear least bit set */
104 if (i == 20) { 104 if (i == 20) {
105 isa_no_iack_sc_device_interrupt(vector, get_irq_regs()); 105 isa_no_iack_sc_device_interrupt(vector);
106 } else { 106 } else {
107 handle_irq(16+i, get_irq_regs()); 107 handle_irq(16+i);
108 } 108 }
109 } 109 }
110} 110}
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c
index 791379101e7c..906019cfa681 100644
--- a/arch/alpha/kernel/sys_sable.c
+++ b/arch/alpha/kernel/sys_sable.c
@@ -526,7 +526,7 @@ sable_lynx_srm_device_interrupt(unsigned long vector)
526 printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n", 526 printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n",
527 __FUNCTION__, vector, bit, irq); 527 __FUNCTION__, vector, bit, irq);
528#endif 528#endif
529 handle_irq(irq, get_irq_regs()); 529 handle_irq(irq);
530} 530}
531 531
532static void __init 532static void __init
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c
index ce2d3b081dc8..9bd9a31450c6 100644
--- a/arch/alpha/kernel/sys_takara.c
+++ b/arch/alpha/kernel/sys_takara.c
@@ -112,10 +112,10 @@ takara_device_interrupt(unsigned long vector)
112 * despatch an interrupt if it's set. 112 * despatch an interrupt if it's set.
113 */ 113 */
114 114
115 if (intstatus & 8) handle_irq(16+3, get_irq_regs()); 115 if (intstatus & 8) handle_irq(16+3);
116 if (intstatus & 4) handle_irq(16+2, get_irq_regs()); 116 if (intstatus & 4) handle_irq(16+2);
117 if (intstatus & 2) handle_irq(16+1, get_irq_regs()); 117 if (intstatus & 2) handle_irq(16+1);
118 if (intstatus & 1) handle_irq(16+0, get_irq_regs()); 118 if (intstatus & 1) handle_irq(16+0);
119 } else { 119 } else {
120 isa_device_interrupt (vector); 120 isa_device_interrupt (vector);
121 } 121 }
@@ -125,7 +125,7 @@ static void
125takara_srm_device_interrupt(unsigned long vector) 125takara_srm_device_interrupt(unsigned long vector)
126{ 126{
127 int irq = (vector - 0x800) >> 4; 127 int irq = (vector - 0x800) >> 4;
128 handle_irq(irq, get_irq_regs()); 128 handle_irq(irq);
129} 129}
130 130
131static void __init 131static void __init
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index 1473aa0e6982..e8e8ec9c0f4e 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -178,7 +178,7 @@ titan_srm_device_interrupt(unsigned long vector)
178 int irq; 178 int irq;
179 179
180 irq = (vector - 0x800) >> 4; 180 irq = (vector - 0x800) >> 4;
181 handle_irq(irq, get_irq_regs()); 181 handle_irq(irq);
182} 182}
183 183
184 184
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c
index ddf5edd0cecd..42c3eede4d09 100644
--- a/arch/alpha/kernel/sys_wildfire.c
+++ b/arch/alpha/kernel/sys_wildfire.c
@@ -246,7 +246,7 @@ wildfire_device_interrupt(unsigned long vector)
246 * bits 5-0: irq in PCA 246 * bits 5-0: irq in PCA
247 */ 247 */
248 248
249 handle_irq(irq, get_irq_regs()); 249 handle_irq(irq);
250 return; 250 return;
251} 251}
252 252