aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/lib/mips-atomic.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/lib/mips-atomic.c')
-rw-r--r--arch/mips/lib/mips-atomic.c30
1 files changed, 1 insertions, 29 deletions
diff --git a/arch/mips/lib/mips-atomic.c b/arch/mips/lib/mips-atomic.c
index 272af8ac2425..5530070e0d05 100644
--- a/arch/mips/lib/mips-atomic.c
+++ b/arch/mips/lib/mips-atomic.c
@@ -57,7 +57,6 @@ notrace void arch_local_irq_disable(void)
57} 57}
58EXPORT_SYMBOL(arch_local_irq_disable); 58EXPORT_SYMBOL(arch_local_irq_disable);
59 59
60
61notrace unsigned long arch_local_irq_save(void) 60notrace unsigned long arch_local_irq_save(void)
62{ 61{
63 unsigned long flags; 62 unsigned long flags;
@@ -111,31 +110,4 @@ notrace void arch_local_irq_restore(unsigned long flags)
111} 110}
112EXPORT_SYMBOL(arch_local_irq_restore); 111EXPORT_SYMBOL(arch_local_irq_restore);
113 112
114 113#endif /* !CONFIG_CPU_MIPSR2 && !CONFIG_CPU_MIPSR6 */
115notrace void __arch_local_irq_restore(unsigned long flags)
116{
117 unsigned long __tmp1;
118
119 preempt_disable();
120
121 __asm__ __volatile__(
122 " .set push \n"
123 " .set noreorder \n"
124 " .set noat \n"
125 " mfc0 $1, $12 \n"
126 " andi %[flags], 1 \n"
127 " ori $1, 0x1f \n"
128 " xori $1, 0x1f \n"
129 " or %[flags], $1 \n"
130 " mtc0 %[flags], $12 \n"
131 " " __stringify(__irq_disable_hazard) " \n"
132 " .set pop \n"
133 : [flags] "=r" (__tmp1)
134 : "0" (flags)
135 : "memory");
136
137 preempt_enable();
138}
139EXPORT_SYMBOL(__arch_local_irq_restore);
140
141#endif /* !CONFIG_CPU_MIPSR2 */