diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2006-09-26 04:52:39 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-09-26 04:52:39 -0400 |
commit | 0da5db313317e3195482d3e660a1074857374a89 (patch) | |
tree | 9322a8eb60da97ae5f3a199cec13afd9b34c202d /include/asm-i386/spinlock.h | |
parent | 7b0bda74f7e77f362eaeee837e7911238acf4c76 (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.h | 7 |
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" |