diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-06-20 05:23:49 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-06-20 05:23:49 -0400 |
commit | 027e56e68543780870fda74360ca45e392c50e1c (patch) | |
tree | 989b160054ce11833b7edfadfa3af32325b41706 /arch/sh | |
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')
-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 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 | ||
17 | static inline struct intc2_desc *get_intc2_desc(unsigned int irq) | 18 | static 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 | ||
30 | static void enable_intc2_irq(unsigned int irq) | 33 | static 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 | /* |