aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-i386/spinlock.h
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2006-09-26 04:52:39 -0400
committerAndi Kleen <andi@basil.nowhere.org>2006-09-26 04:52:39 -0400
commit0da5db313317e3195482d3e660a1074857374a89 (patch)
tree9322a8eb60da97ae5f3a199cec13afd9b34c202d /include/asm-i386/spinlock.h
parent7b0bda74f7e77f362eaeee837e7911238acf4c76 (diff)
[PATCH] i386: Abstract sensitive instructions
Abstract sensitive instructions in assembler code, replacing them with macros (which currently are #defined to the native versions). We use long names: assembler is case-insensitive, so if something goes wrong and macros do not expand, it would assemble anyway. Resulting object files are exactly the same as before. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'include/asm-i386/spinlock.h')
-rw-r--r--include/asm-i386/spinlock.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/include/asm-i386/spinlock.h b/include/asm-i386/spinlock.h
index 324329313af8..b0b3043f05e1 100644
--- a/include/asm-i386/spinlock.h
+++ b/include/asm-i386/spinlock.h
@@ -7,6 +7,9 @@
7#include <asm/processor.h> 7#include <asm/processor.h>
8#include <linux/compiler.h> 8#include <linux/compiler.h>
9 9
10#define CLI_STRING "cli"
11#define STI_STRING "sti"
12
10/* 13/*
11 * Your basic SMP spinlocks, allowing only a single CPU anywhere 14 * Your basic SMP spinlocks, allowing only a single CPU anywhere
12 * 15 *
@@ -55,12 +58,12 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long fla
55 "2:\t" 58 "2:\t"
56 "testl $0x200, %1\n\t" 59 "testl $0x200, %1\n\t"
57 "jz 4f\n\t" 60 "jz 4f\n\t"
58 "sti\n" 61 STI_STRING "\n"
59 "3:\t" 62 "3:\t"
60 "rep;nop\n\t" 63 "rep;nop\n\t"
61 "cmpb $0, %0\n\t" 64 "cmpb $0, %0\n\t"
62 "jle 3b\n\t" 65 "jle 3b\n\t"
63 "cli\n\t" 66 CLI_STRING "\n\t"
64 "jmp 1b\n" 67 "jmp 1b\n"
65 "4:\t" 68 "4:\t"
66 "rep;nop\n\t" 69 "rep;nop\n\t"