diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-06-20 18:23:49 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-06-20 18:23:49 +0900 |
commit | 027e56e68543780870fda74360ca45e392c50e1c (patch) | |
tree | 989b160054ce11833b7edfadfa3af32325b41706 /arch/sh/kernel/cpu/irq | |
parent | 0630e45c887b3d3d8d6ad27af03ec4054926d635 (diff) |
sh: Hook up hard_smp_processor_id() for INTC2 block.
We need to know the CPU ID in order to calculate the mask and ack
registers effectively. Stub this in for UP.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/irq')
-rw-r--r-- | arch/sh/kernel/cpu/irq/intc2.c | 9 |
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 dae02d3152e..cc5221390e0 100644 --- a/arch/sh/kernel/cpu/irq/intc2.c +++ b/arch/sh/kernel/cpu/irq/intc2.c @@ -13,6 +13,7 @@ #include <linux/kernel.h> #include <linux/interrupt.h> #include <linux/io.h> +#include <asm/smp.h> static inline struct intc2_desc *get_intc2_desc(unsigned int irq) { @@ -24,14 +25,18 @@ static void disable_intc2_irq(unsigned int irq) { struct intc2_data *p = get_irq_chip_data(irq); struct intc2_desc *d = get_intc2_desc(irq); - ctrl_outl(1 << p->msk_shift, d->msk_base + p->msk_offset); + + ctrl_outl(1 << p->msk_shift, d->msk_base + p->msk_offset + + (hard_smp_processor_id() * 4)); } static void enable_intc2_irq(unsigned int irq) { struct intc2_data *p = get_irq_chip_data(irq); struct intc2_desc *d = get_intc2_desc(irq); - ctrl_outl(1 << p->msk_shift, d->mskclr_base + p->msk_offset); + + ctrl_outl(1 << p->msk_shift, d->mskclr_base + p->msk_offset + + (hard_smp_processor_id() * 4)); } /* |