summaryrefslogtreecommitdiffstats
path: root/arch/mips/include/asm/asmmacro.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-03-20 10:57:52 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2014-03-20 10:57:52 -0700
commit3fb725c48b93c0a152174b6dbbc1029b5e734c7b (patch)
tree5cac1bb6a6aaecedc237bc1ef89e0d374d6f08c8 /arch/mips/include/asm/asmmacro.h
parent92f99731e61a3487781762d4e6ae8b1576e68e07 (diff)
parent71ca75888953166b72cf7a65b4c2b6a50fc0ce3b (diff)
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS fixes from Ralf Baechle: "Another set of five fixes. The most interesting one is a fix for race condition in the local_irq_disable() implementation used by .S code for pre-MIPS R2 processors only. It leaves a race that's hard but not impossible to hit; the others fairly obvious" * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: MIPS: Make local_irq_disable macro safe for non-Mipsr2 MIPS: Octeon: Fix warning in of_device_alloc on cn3xxx MIPS: ftrace: Tweak safe_load()/safe_store() macros MIPS: BCM47XX: Check all (32) GPIOs when looking for a pin MIPS: Fix possible build error with transparent hugepages enabled
Diffstat (limited to 'arch/mips/include/asm/asmmacro.h')
-rw-r--r--arch/mips/include/asm/asmmacro.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/mips/include/asm/asmmacro.h b/arch/mips/include/asm/asmmacro.h
index 69a9a22d014..4225e99bd7b 100644
--- a/arch/mips/include/asm/asmmacro.h
+++ b/arch/mips/include/asm/asmmacro.h
@@ -9,6 +9,7 @@
#define _ASM_ASMMACRO_H
#include <asm/hazards.h>
+#include <asm/asm-offsets.h>
#ifdef CONFIG_32BIT
#include <asm/asmmacro-32.h>
@@ -54,11 +55,21 @@
.endm
.macro local_irq_disable reg=t0
+#ifdef CONFIG_PREEMPT
+ lw \reg, TI_PRE_COUNT($28)
+ addi \reg, \reg, 1
+ sw \reg, TI_PRE_COUNT($28)
+#endif
mfc0 \reg, CP0_STATUS
ori \reg, \reg, 1
xori \reg, \reg, 1
mtc0 \reg, CP0_STATUS
irq_disable_hazard
+#ifdef CONFIG_PREEMPT
+ lw \reg, TI_PRE_COUNT($28)
+ addi \reg, \reg, -1
+ sw \reg, TI_PRE_COUNT($28)
+#endif
.endm
#endif /* CONFIG_MIPS_MT_SMTC */