[MIPS] local_irq_restore wasn't safe to be used in other macros mode.
authorRalf Baechle <ralf@linux-mips.org>
Mon, 30 Jan 2006 16:48:26 +0000 (16:48 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 7 Feb 2006 13:30:24 +0000 (13:30 +0000)
It always left the assembler in reorder mode possibly causing disaster.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
include/asm-mips/interrupt.h

index abdf54ee64cf306d35b0dd32702c5fed061d4f58..0da5818a2d62b547a135d7917c14f5c8386afe81 100644 (file)
@@ -114,6 +114,7 @@ __asm__ __volatile__(                                                       \
 
 __asm__ (
        "       .macro  local_irq_restore flags                         \n"
+       "       .set    push                                            \n"
        "       .set    noreorder                                       \n"
        "       .set    noat                                            \n"
 #if defined(CONFIG_CPU_MIPSR2) && defined(CONFIG_IRQ_CPU)
@@ -141,8 +142,7 @@ __asm__ (
        "       mtc0    \\flags, $12                                    \n"
 #endif
        "       irq_disable_hazard                                      \n"
-       "       .set    at                                              \n"
-       "       .set    reorder                                         \n"
+       "       .set    pop                                             \n"
        "       .endm                                                   \n");
 
 #define local_irq_restore(flags)                                       \