|
@@ -226,6 +226,8 @@ void ia64_process_pending_intr(void)
|
|
*/
|
|
*/
|
|
while (vector != IA64_SPURIOUS_INT_VECTOR) {
|
|
while (vector != IA64_SPURIOUS_INT_VECTOR) {
|
|
if (!IS_RESCHEDULE(vector)) {
|
|
if (!IS_RESCHEDULE(vector)) {
|
|
|
|
+ struct pt_regs *old_regs = set_irq_regs(NULL);
|
|
|
|
+
|
|
ia64_setreg(_IA64_REG_CR_TPR, vector);
|
|
ia64_setreg(_IA64_REG_CR_TPR, vector);
|
|
ia64_srlz_d();
|
|
ia64_srlz_d();
|
|
|
|
|
|
@@ -236,7 +238,8 @@ void ia64_process_pending_intr(void)
|
|
* Probably could shared code.
|
|
* Probably could shared code.
|
|
*/
|
|
*/
|
|
vectors_in_migration[local_vector_to_irq(vector)]=0;
|
|
vectors_in_migration[local_vector_to_irq(vector)]=0;
|
|
- __do_IRQ(local_vector_to_irq(vector), NULL);
|
|
|
|
|
|
+ __do_IRQ(local_vector_to_irq(vector));
|
|
|
|
+ set_irq_regs(old_regs);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Disable interrupts and send EOI
|
|
* Disable interrupts and send EOI
|
|
@@ -253,7 +256,7 @@ void ia64_process_pending_intr(void)
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_SMP
|
|
#ifdef CONFIG_SMP
|
|
-extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs);
|
|
|
|
|
|
+extern irqreturn_t handle_IPI (int irq, void *dev_id);
|
|
|
|
|
|
static struct irqaction ipi_irqaction = {
|
|
static struct irqaction ipi_irqaction = {
|
|
.handler = handle_IPI,
|
|
.handler = handle_IPI,
|