aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/pmc-sierra/yosemite/smp.c17
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/*