|
@@ -84,41 +84,11 @@ static inline void arch_local_irq_restore(unsigned long flags)
|
|
|
: "memory");
|
|
|
}
|
|
|
|
|
|
-static inline void __arch_local_irq_restore(unsigned long flags)
|
|
|
-{
|
|
|
- __asm__ __volatile__(
|
|
|
- " .set push \n"
|
|
|
- " .set noreorder \n"
|
|
|
- " .set noat \n"
|
|
|
-#if defined(CONFIG_IRQ_MIPS_CPU)
|
|
|
- /*
|
|
|
- * Slow, but doesn't suffer from a relatively unlikely race
|
|
|
- * condition we're having since days 1.
|
|
|
- */
|
|
|
- " beqz %[flags], 1f \n"
|
|
|
- " di \n"
|
|
|
- " ei \n"
|
|
|
- "1: \n"
|
|
|
-#else
|
|
|
- /*
|
|
|
- * Fast, dangerous. Life is fun, life is good.
|
|
|
- */
|
|
|
- " mfc0 $1, $12 \n"
|
|
|
- " ins $1, %[flags], 0, 1 \n"
|
|
|
- " mtc0 $1, $12 \n"
|
|
|
-#endif
|
|
|
- " " __stringify(__irq_disable_hazard) " \n"
|
|
|
- " .set pop \n"
|
|
|
- : [flags] "=r" (flags)
|
|
|
- : "0" (flags)
|
|
|
- : "memory");
|
|
|
-}
|
|
|
#else
|
|
|
/* Functions that require preempt_{dis,en}able() are in mips-atomic.c */
|
|
|
void arch_local_irq_disable(void);
|
|
|
unsigned long arch_local_irq_save(void);
|
|
|
void arch_local_irq_restore(unsigned long flags);
|
|
|
-void __arch_local_irq_restore(unsigned long flags);
|
|
|
#endif /* CONFIG_CPU_MIPSR2 || CONFIG_CPU_MIPSR6 */
|
|
|
|
|
|
static inline void arch_local_irq_enable(void)
|