]> git.hungrycats.org Git - linux/commitdiff
[PATCH] reorder 'rep;nop;' in the spinlock macro
authorManfred Spraul <manfred@colorfullife.com>
Sun, 22 Dec 2002 04:04:34 +0000 (20:04 -0800)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sun, 22 Dec 2002 04:04:34 +0000 (20:04 -0800)
According to Intel's recommendation, 'rep;nop; should be called before
testing if the lock variable was modified (i.e. rep nop;cmp;jcc). The
current implementation does it the wrong way around: first test, then
wait, then branch. I've asked Asit Mallik from Intel, and he recommended
to change it.

It should be at least consistent: Right now, spinlock uses
'cmp;rep nop;jcc', rwlock uses 'rep nop;cmp;jcc'

include/asm-i386/spinlock.h

index d26bf652d89450fbe06cc37eb98aafdb4479c502..ae3615feecdb9787c20125e07cf94b1a6f6bc725 100644 (file)
@@ -48,8 +48,8 @@ typedef struct {
        "js 2f\n" \
        LOCK_SECTION_START("") \
        "2:\t" \
-       "cmpb $0,%0\n\t" \
        "rep;nop\n\t" \
+       "cmpb $0,%0\n\t" \
        "jle 2b\n\t" \
        "jmp 1b\n" \
        LOCK_SECTION_END