[MIPS] SMTC: Don't set and restore irqregs ptr from self_ipi.
authorRalf Baechle <ralf@linux-mips.org>
Thu, 24 May 2007 13:56:58 +0000 (14:56 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 11 Jun 2007 17:20:53 +0000 (18:20 +0100)
This did corrupt register s0 which the caller of self_ipi expects to
be unchanged.  This is a kernel bug which will only be triggered with
the compilers which compile __smtc_ipi_replay to use s0 across the
invocation of self_ipi. Gcc 4.1.2 does this, for example.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/smtc-asm.S

index 921207c4a83c115ac77dfeadfe6c25bc31fb9d58..20938a4cb52d64991e7aa1f695a5aba7c80caac3 100644 (file)
@@ -121,10 +121,7 @@ LEAF(self_ipi)
        subu    t1,sp,PT_SIZE
        sw      ra,PT_EPC(t1)
        sw      a0,PT_PADSLOT4(t1)
-       LONG_L  s0, TI_REGS($28)
-       LONG_S  sp, TI_REGS($28)
        la      t2,ipi_decode
-       LONG_S  s0, TI_REGS($28)
        sw      t2,PT_PADSLOT5(t1)
        /* Save pre-disable value of TCStatus */
        sw      t0,PT_TCSTATUS(t1)