Commit 027e56e68543780870fda74360ca45e392c50e1c

Authored by Paul Mundt
1 parent 0630e45c88

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>

Showing 2 changed files with 9 additions and 2 deletions Side-by-side Diff

arch/sh/kernel/cpu/irq/intc2.c
... ... @@ -13,6 +13,7 @@
13 13 #include <linux/kernel.h>
14 14 #include <linux/interrupt.h>
15 15 #include <linux/io.h>
  16 +#include <asm/smp.h>
16 17  
17 18 static inline struct intc2_desc *get_intc2_desc(unsigned int irq)
18 19 {
19 20  
... ... @@ -24,14 +25,18 @@
24 25 {
25 26 struct intc2_data *p = get_irq_chip_data(irq);
26 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 33 static void enable_intc2_irq(unsigned int irq)
31 34 {
32 35 struct intc2_data *p = get_irq_chip_data(irq);
33 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 /*
include/asm-sh/smp.h
... ... @@ -39,5 +39,7 @@
39 39  
40 40 #endif /* CONFIG_SMP */
41 41  
  42 +#define hard_smp_processor_id() (0)
  43 +
42 44 #endif /* __ASM_SH_SMP_H */