Browse Source

MIPS: R2: Fix local_irq_save()

local_irq_restore uses di which saves the whole status content, not
just the IE bit resulting in local_irq_restore() to fail. This only
happens if both CONFIG_CPU_MIPSR2 and CONFIG_IRQ_CPU are enabled.

Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

Maxime Bizon 19 years ago
parent
commit
15265251c5
1 changed files with 1 additions and 0 deletions
  1. 1 0
      include/asm-mips/interrupt.h

+ 1 - 0
include/asm-mips/interrupt.h

@@ -93,6 +93,7 @@ __asm__ (
 	"	.set	noat						\n"
 	"	.set	noat						\n"
 #ifdef CONFIG_CPU_MIPSR2
 #ifdef CONFIG_CPU_MIPSR2
 	"	di	\\result					\n"
 	"	di	\\result					\n"
+	"	andi	\\result, 1					\n"
 #else
 #else
 	"	mfc0	\\result, $12					\n"
 	"	mfc0	\\result, $12					\n"
 	"	ori	$1, \\result, 1					\n"
 	"	ori	$1, \\result, 1					\n"