diff options
author | Magnus Damm <damm@igel.co.jp> | 2007-09-21 05:16:42 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-09-21 05:16:42 -0400 |
commit | f18d533e3cd476aedf41fe1e6e9dc3e0a2446bba (patch) | |
tree | 64e54cb0572f62f8d171ce7f779b50226bfe931f /include/asm-sh | |
parent | 9964fa8bf952c5c4df9676223fab4cd886d18200 (diff) |
sh: intc - initial SMP support.
This implements initial support for the SMP INTC (particularly
INTC2) controllers.
These are largely implemented as conventional blocks, with
register sets grouped together at fixed strides relative to
the CPU id.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/asm-sh')
-rw-r--r-- | include/asm-sh/hw_irq.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/asm-sh/hw_irq.h b/include/asm-sh/hw_irq.h index 96d971040503..cb0b6c9f7020 100644 --- a/include/asm-sh/hw_irq.h +++ b/include/asm-sh/hw_irq.h | |||
@@ -50,11 +50,17 @@ struct intc_group { | |||
50 | struct intc_mask_reg { | 50 | struct intc_mask_reg { |
51 | unsigned long set_reg, clr_reg, reg_width; | 51 | unsigned long set_reg, clr_reg, reg_width; |
52 | intc_enum enum_ids[32]; | 52 | intc_enum enum_ids[32]; |
53 | #ifdef CONFIG_SMP | ||
54 | unsigned long smp; | ||
55 | #endif | ||
53 | }; | 56 | }; |
54 | 57 | ||
55 | struct intc_prio_reg { | 58 | struct intc_prio_reg { |
56 | unsigned long set_reg, clr_reg, reg_width, field_width; | 59 | unsigned long set_reg, clr_reg, reg_width, field_width; |
57 | intc_enum enum_ids[16]; | 60 | intc_enum enum_ids[16]; |
61 | #ifdef CONFIG_SMP | ||
62 | unsigned long smp; | ||
63 | #endif | ||
58 | }; | 64 | }; |
59 | 65 | ||
60 | struct intc_sense_reg { | 66 | struct intc_sense_reg { |
@@ -62,6 +68,12 @@ struct intc_sense_reg { | |||
62 | intc_enum enum_ids[16]; | 68 | intc_enum enum_ids[16]; |
63 | }; | 69 | }; |
64 | 70 | ||
71 | #ifdef CONFIG_SMP | ||
72 | #define INTC_SMP(stride, nr) .smp = (stride) | ((nr) << 8) | ||
73 | #else | ||
74 | #define INTC_SMP(stride, nr) | ||
75 | #endif | ||
76 | |||
65 | struct intc_desc { | 77 | struct intc_desc { |
66 | struct intc_vect *vectors; | 78 | struct intc_vect *vectors; |
67 | unsigned int nr_vectors; | 79 | unsigned int nr_vectors; |