From: Thomas Gleixner Date: Wed, 30 Jan 2008 12:30:34 +0000 (+0100) Subject: x86: spinlock_32/64 match the jump labels and symbols X-Git-Tag: v2.6.25-rc1~1143^2~773 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b23ed84ec34f04f54f7d5b1e35f258d64a7a5fb;p=linux-2.6 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: Thomas Gleixner Signed-off-by: Ingo Molnar --- diff --git a/include/asm-x86/spinlock_32.h b/include/asm-x86/spinlock_32.h index e7a14ab906..4ef626d536 100644 --- a/include/asm-x86/spinlock_32.h +++ b/include/asm-x86/spinlock_32.h @@ -53,7 +53,6 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, "\n1:\t" LOCK_PREFIX " ; decb %[slock]\n\t" "jns 5f\n" - "2:\t" "testl $0x200, %[flags]\n\t" "jz 4f\n\t" STI_STRING "\n" diff --git a/include/asm-x86/spinlock_64.h b/include/asm-x86/spinlock_64.h index ab50e7f510..19d483c801 100644 --- a/include/asm-x86/spinlock_64.h +++ b/include/asm-x86/spinlock_64.h @@ -27,13 +27,13 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock) asm volatile( "\n1:\t" LOCK_PREFIX " ; decl %0\n\t" - "jns 2f\n" - "3:\n" + "jns 3f\n" + "2:\t" "rep;nop\n\t" "cmpl $0,%0\n\t" - "jle 3b\n\t" + "jle 2b\n\t" "jmp 1b\n" - "2:\t" + "3:\n\t" : "+m" (lock->slock) : : "memory"); } @@ -51,25 +51,26 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, { asm volatile( "\n1:\t" - LOCK_PREFIX " ; decl %0\n\t" + LOCK_PREFIX " ; decl %[slock]\n\t" "jns 5f\n" - "testl $0x200, %1\n\t" /* interrupts were disabled? */ + "testl $0x200, %[flags]\n\t" "jz 4f\n\t" STI_STRING "\n" "3:\t" "rep;nop\n\t" - "cmpl $0, %0\n\t" + "cmpl $0, %[slock]\n\t" "jle 3b\n\t" CLI_STRING "\n\t" "jmp 1b\n" "4:\t" "rep;nop\n\t" - "cmpl $0, %0\n\t" + "cmpl $0, %[slock]\n\t" "jg 1b\n\t" "jmp 4b\n" "5:\n\t" - : "+m" (lock->slock) - : "r" ((unsigned)flags) CLI_STI_INPUT_ARGS + : [slock] "+m" (lock->slock) + : [flags] "r" ((unsigned)flags) + CLI_STI_INPUT_ARGS : "memory" CLI_STI_CLOBBERS); } #endif