aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/ia64/kernel/irq.c5
-rw-r--r--arch/ia64/kernel/irq_ia64.c7
-rw-r--r--arch/ia64/sn/kernel/sn2/timer_interrupt.c2
-rw-r--r--drivers/serial/sn_console.c2
4 files changed, 11 insertions, 5 deletions
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 7852382de2fa..f07c0864b0b4 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -194,8 +194,11 @@ void fixup_irqs(void)
194 */ 194 */
195 for (irq=0; irq < NR_IRQS; irq++) { 195 for (irq=0; irq < NR_IRQS; irq++) {
196 if (vectors_in_migration[irq]) { 196 if (vectors_in_migration[irq]) {
197 struct pt_regs *old_regs = set_irq_regs(NULL);
198
197 vectors_in_migration[irq]=0; 199 vectors_in_migration[irq]=0;
198 __do_IRQ(irq, NULL); 200 __do_IRQ(irq);
201 set_irq_regs(old_regs);
199 } 202 }
200 } 203 }
201 204
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 7fd3ef9e064d..68339dd0c9e2 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -226,6 +226,8 @@ void ia64_process_pending_intr(void)
226 */ 226 */
227 while (vector != IA64_SPURIOUS_INT_VECTOR) { 227 while (vector != IA64_SPURIOUS_INT_VECTOR) {
228 if (!IS_RESCHEDULE(vector)) { 228 if (!IS_RESCHEDULE(vector)) {
229 struct pt_regs *old_regs = set_irq_regs(NULL);
230
229 ia64_setreg(_IA64_REG_CR_TPR, vector); 231 ia64_setreg(_IA64_REG_CR_TPR, vector);
230 ia64_srlz_d(); 232 ia64_srlz_d();
231 233
@@ -236,7 +238,8 @@ void ia64_process_pending_intr(void)
236 * Probably could shared code. 238 * Probably could shared code.
237 */ 239 */
238 vectors_in_migration[local_vector_to_irq(vector)]=0; 240 vectors_in_migration[local_vector_to_irq(vector)]=0;
239 __do_IRQ(local_vector_to_irq(vector), NULL); 241 __do_IRQ(local_vector_to_irq(vector));
242 set_irq_regs(old_regs);
240 243
241 /* 244 /*
242 * Disable interrupts and send EOI 245 * Disable interrupts and send EOI
@@ -253,7 +256,7 @@ void ia64_process_pending_intr(void)
253 256
254 257
255#ifdef CONFIG_SMP 258#ifdef CONFIG_SMP
256extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs); 259extern irqreturn_t handle_IPI (int irq, void *dev_id);
257 260
258static struct irqaction ipi_irqaction = { 261static struct irqaction ipi_irqaction = {
259 .handler = handle_IPI, 262 .handler = handle_IPI,
diff --git a/arch/ia64/sn/kernel/sn2/timer_interrupt.c b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
index fa7f69945917..103d6ea8e94b 100644
--- a/arch/ia64/sn/kernel/sn2/timer_interrupt.c
+++ b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
@@ -36,7 +36,7 @@ extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs);
36 36
37#define SN_LB_INT_WAR_INTERVAL 100 37#define SN_LB_INT_WAR_INTERVAL 100
38 38
39void sn_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 39void sn_timer_interrupt(int irq, void *dev_id)
40{ 40{
41 /* LED blinking */ 41 /* LED blinking */
42 if (!pda->hb_count--) { 42 if (!pda->hb_count--) {
diff --git a/drivers/serial/sn_console.c b/drivers/serial/sn_console.c
index 709f93a6c18c..956b2cf08e1e 100644
--- a/drivers/serial/sn_console.c
+++ b/drivers/serial/sn_console.c
@@ -674,7 +674,7 @@ static void sn_sal_timer_poll(unsigned long data)
674 if (!port->sc_port.irq) { 674 if (!port->sc_port.irq) {
675 spin_lock_irqsave(&port->sc_port.lock, flags); 675 spin_lock_irqsave(&port->sc_port.lock, flags);
676 if (sn_process_input) 676 if (sn_process_input)
677 sn_receive_chars(port, NULL, flags); 677 sn_receive_chars(port, flags);
678 sn_transmit_chars(port, TRANSMIT_RAW); 678 sn_transmit_chars(port, TRANSMIT_RAW);
679 spin_unlock_irqrestore(&port->sc_port.lock, flags); 679 spin_unlock_irqrestore(&port->sc_port.lock, flags);
680 mod_timer(&port->sc_timer, 680 mod_timer(&port->sc_timer,