aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh')
-rw-r--r--arch/sh/kernel/cpu/irq/intc2.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/sh/kernel/cpu/irq/intc2.c b/arch/sh/kernel/cpu/irq/intc2.c
index dae02d3152e7..cc5221390e09 100644
--- a/arch/sh/kernel/cpu/irq/intc2.c
+++ b/arch/sh/kernel/cpu/irq/intc2.c
@@ -13,6 +13,7 @@
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/interrupt.h> 14#include <linux/interrupt.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <asm/smp.h>
16 17
17static inline struct intc2_desc *get_intc2_desc(unsigned int irq) 18static inline struct intc2_desc *get_intc2_desc(unsigned int irq)
18{ 19{
@@ -24,14 +25,18 @@ static void disable_intc2_irq(unsigned int irq)
24{ 25{
25 struct intc2_data *p = get_irq_chip_data(irq); 26 struct intc2_data *p = get_irq_chip_data(irq);
26 struct intc2_desc *d = get_intc2_desc(irq); 27 struct intc2_desc *d = get_intc2_desc(irq);
27 ctrl_outl(1 << p->msk_shift, d->msk_base + p->msk_offset); 28
29 ctrl_outl(1 << p->msk_shift, d->msk_base + p->msk_offset +
30 (hard_smp_processor_id() * 4));
28} 31}
29 32
30static void enable_intc2_irq(unsigned int irq) 33static void enable_intc2_irq(unsigned int irq)
31{ 34{
32 struct intc2_data *p = get_irq_chip_data(irq); 35 struct intc2_data *p = get_irq_chip_data(irq);
33 struct intc2_desc *d = get_intc2_desc(irq); 36 struct intc2_desc *d = get_intc2_desc(irq);
34 ctrl_outl(1 << p->msk_shift, d->mskclr_base + p->msk_offset); 37
38 ctrl_outl(1 << p->msk_shift, d->mskclr_base + p->msk_offset +
39 (hard_smp_processor_id() * 4));
35} 40}
36 41
37/* 42/*