Commit 3b23ed84 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Ingo Molnar

x86: spinlock_32/64 match the jump labels and symbols

Match the jump labels in  the 32/64 variants and switch the
64bit version to symbols, so the functions are almost identical
except for the operand size now.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 6514f93a
...@@ -53,7 +53,6 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, ...@@ -53,7 +53,6 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock,
"\n1:\t" "\n1:\t"
LOCK_PREFIX " ; decb %[slock]\n\t" LOCK_PREFIX " ; decb %[slock]\n\t"
"jns 5f\n" "jns 5f\n"
"2:\t"
"testl $0x200, %[flags]\n\t" "testl $0x200, %[flags]\n\t"
"jz 4f\n\t" "jz 4f\n\t"
STI_STRING "\n" STI_STRING "\n"
......
...@@ -27,13 +27,13 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock) ...@@ -27,13 +27,13 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock)
asm volatile( asm volatile(
"\n1:\t" "\n1:\t"
LOCK_PREFIX " ; decl %0\n\t" LOCK_PREFIX " ; decl %0\n\t"
"jns 2f\n" "jns 3f\n"
"3:\n" "2:\t"
"rep;nop\n\t" "rep;nop\n\t"
"cmpl $0,%0\n\t" "cmpl $0,%0\n\t"
"jle 3b\n\t" "jle 2b\n\t"
"jmp 1b\n" "jmp 1b\n"
"2:\t" "3:\n\t"
: "+m" (lock->slock) : : "memory"); : "+m" (lock->slock) : : "memory");
} }
...@@ -51,25 +51,26 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, ...@@ -51,25 +51,26 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock,
{ {
asm volatile( asm volatile(
"\n1:\t" "\n1:\t"
LOCK_PREFIX " ; decl %0\n\t" LOCK_PREFIX " ; decl %[slock]\n\t"
"jns 5f\n" "jns 5f\n"
"testl $0x200, %1\n\t" /* interrupts were disabled? */ "testl $0x200, %[flags]\n\t"
"jz 4f\n\t" "jz 4f\n\t"
STI_STRING "\n" STI_STRING "\n"
"3:\t" "3:\t"
"rep;nop\n\t" "rep;nop\n\t"
"cmpl $0, %0\n\t" "cmpl $0, %[slock]\n\t"
"jle 3b\n\t" "jle 3b\n\t"
CLI_STRING "\n\t" CLI_STRING "\n\t"
"jmp 1b\n" "jmp 1b\n"
"4:\t" "4:\t"
"rep;nop\n\t" "rep;nop\n\t"
"cmpl $0, %0\n\t" "cmpl $0, %[slock]\n\t"
"jg 1b\n\t" "jg 1b\n\t"
"jmp 4b\n" "jmp 4b\n"
"5:\n\t" "5:\n\t"
: "+m" (lock->slock) : [slock] "+m" (lock->slock)
: "r" ((unsigned)flags) CLI_STI_INPUT_ARGS : [flags] "r" ((unsigned)flags)
CLI_STI_INPUT_ARGS
: "memory" CLI_STI_CLOBBERS); : "memory" CLI_STI_CLOBBERS);
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment