diff options
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/pmc-sierra/yosemite/smp.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c index 4f830f99a874..1c852d6a7654 100644 --- a/arch/mips/pmc-sierra/yosemite/smp.c +++ b/arch/mips/pmc-sierra/yosemite/smp.c | |||
@@ -111,18 +111,23 @@ void titan_mailbox_irq(void) | |||
111 | int cpu = smp_processor_id(); | 111 | int cpu = smp_processor_id(); |
112 | unsigned long status; | 112 | unsigned long status; |
113 | 113 | ||
114 | if (cpu == 0) { | 114 | switch (cpu) { |
115 | case 0: | ||
115 | status = OCD_READ(RM9000x2_OCD_INTP0STATUS3); | 116 | status = OCD_READ(RM9000x2_OCD_INTP0STATUS3); |
116 | OCD_WRITE(RM9000x2_OCD_INTP0CLEAR3, status); | 117 | OCD_WRITE(RM9000x2_OCD_INTP0CLEAR3, status); |
117 | } | ||
118 | 118 | ||
119 | if (cpu == 1) { | 119 | if (status & 0x2) |
120 | smp_call_function_interrupt(); | ||
121 | break; | ||
122 | |||
123 | case 1: | ||
120 | status = OCD_READ(RM9000x2_OCD_INTP1STATUS3); | 124 | status = OCD_READ(RM9000x2_OCD_INTP1STATUS3); |
121 | OCD_WRITE(RM9000x2_OCD_INTP1CLEAR3, status); | 125 | OCD_WRITE(RM9000x2_OCD_INTP1CLEAR3, status); |
122 | } | ||
123 | 126 | ||
124 | if (status & 0x2) | 127 | if (status & 0x2) |
125 | smp_call_function_interrupt(); | 128 | smp_call_function_interrupt(); |
129 | break; | ||
130 | } | ||
126 | } | 131 | } |
127 | 132 | ||
128 | /* | 133 | /* |