diff options
| author | Kevin D. Kissell <kevink@paralogos.com> | 2008-09-09 15:35:01 -0400 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2008-10-03 12:58:58 -0400 |
| commit | d2bb01b042a38219fbddaafc214c5beb96248d2f (patch) | |
| tree | 6a0380166400d7ad2b61dead8dab933ba8d43d6a /arch/mips/kernel | |
| parent | 9cc123631b6630948eb5059d218f44424888daa7 (diff) | |
[MIPS] SMTC: Close tiny holes in the SMTC IPI replay system.
Signed-off-by: Kevin D. Kissell <kevink@paralogos.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel')
| -rw-r--r-- | arch/mips/kernel/entry.S | 10 | ||||
| -rw-r--r-- | arch/mips/kernel/smtc.c | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S index e29598ae939d..ffa331029e08 100644 --- a/arch/mips/kernel/entry.S +++ b/arch/mips/kernel/entry.S | |||
| @@ -79,11 +79,6 @@ FEXPORT(syscall_exit) | |||
| 79 | 79 | ||
| 80 | FEXPORT(restore_all) # restore full frame | 80 | FEXPORT(restore_all) # restore full frame |
| 81 | #ifdef CONFIG_MIPS_MT_SMTC | 81 | #ifdef CONFIG_MIPS_MT_SMTC |
| 82 | /* Detect and execute deferred IPI "interrupts" */ | ||
| 83 | LONG_L s0, TI_REGS($28) | ||
| 84 | LONG_S sp, TI_REGS($28) | ||
| 85 | jal deferred_smtc_ipi | ||
| 86 | LONG_S s0, TI_REGS($28) | ||
| 87 | #ifdef CONFIG_MIPS_MT_SMTC_IM_BACKSTOP | 82 | #ifdef CONFIG_MIPS_MT_SMTC_IM_BACKSTOP |
| 88 | /* Re-arm any temporarily masked interrupts not explicitly "acked" */ | 83 | /* Re-arm any temporarily masked interrupts not explicitly "acked" */ |
| 89 | mfc0 v0, CP0_TCSTATUS | 84 | mfc0 v0, CP0_TCSTATUS |
| @@ -112,6 +107,11 @@ FEXPORT(restore_all) # restore full frame | |||
| 112 | xor t0, t0, t3 | 107 | xor t0, t0, t3 |
| 113 | mtc0 t0, CP0_TCCONTEXT | 108 | mtc0 t0, CP0_TCCONTEXT |
| 114 | #endif /* CONFIG_MIPS_MT_SMTC_IM_BACKSTOP */ | 109 | #endif /* CONFIG_MIPS_MT_SMTC_IM_BACKSTOP */ |
| 110 | /* Detect and execute deferred IPI "interrupts" */ | ||
| 111 | LONG_L s0, TI_REGS($28) | ||
| 112 | LONG_S sp, TI_REGS($28) | ||
| 113 | jal deferred_smtc_ipi | ||
| 114 | LONG_S s0, TI_REGS($28) | ||
| 115 | #endif /* CONFIG_MIPS_MT_SMTC */ | 115 | #endif /* CONFIG_MIPS_MT_SMTC */ |
| 116 | .set noat | 116 | .set noat |
| 117 | RESTORE_TEMP | 117 | RESTORE_TEMP |
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 05f2708a9029..39b491b9ad87 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
| @@ -70,7 +70,7 @@ static atomic_t ipi_timer_latch[NR_CPUS]; | |||
| 70 | 70 | ||
| 71 | #define IPIBUF_PER_CPU 4 | 71 | #define IPIBUF_PER_CPU 4 |
| 72 | 72 | ||
| 73 | static struct smtc_ipi_q IPIQ[NR_CPUS]; | 73 | struct smtc_ipi_q IPIQ[NR_CPUS]; |
| 74 | static struct smtc_ipi_q freeIPIq; | 74 | static struct smtc_ipi_q freeIPIq; |
| 75 | 75 | ||
| 76 | 76 | ||
