mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-01 23:01:29 +00:00
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 <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
6514f93a2c
commit
3b23ed84ec
@ -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)
|
|||||||
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,
|
|||||||
{
|
{
|
||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user