Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 292717
b: refs/heads/master
c: cb8095b
h: refs/heads/master
i:
  292715: 0444e32
v: v3
  • Loading branch information
Jan Beulich authored and H. Peter Anvin committed Jan 21, 2012
1 parent 5bb74c2 commit 4cbd12b
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 819165fb34b9777f852429f2c6d6f79fbb71b9eb
refs/heads/master: cb8095bba6d24118135a5683a956f4f4fb5f17bb
5 changes: 2 additions & 3 deletions trunk/arch/x86/include/asm/atomic64_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,8 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
unsigned low = (unsigned)u;
unsigned high = (unsigned)(u >> 32);
alternative_atomic64(add_unless,
ASM_OUTPUT2("+A" (a), "+c" (v),
"+S" (low), "+D" (high)),
ASM_NO_INPUT_CLOBBER("memory"));
ASM_OUTPUT2("+A" (a), "+c" (low), "+D" (high)),
"S" (v) : "memory");
return (int)a;
}

Expand Down
6 changes: 3 additions & 3 deletions trunk/arch/x86/lib/atomic64_386_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,13 @@ BEGIN(dec_return)
RET_ENDP
#undef v

#define v %ecx
#define v %esi
BEGIN(add_unless)
addl %eax, %esi
addl %eax, %ecx
adcl %edx, %edi
addl (v), %eax
adcl 4(v), %edx
cmpl %eax, %esi
cmpl %eax, %ecx
je 3f
1:
movl %eax, (v)
Expand Down
29 changes: 11 additions & 18 deletions trunk/arch/x86/lib/atomic64_cx8_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,6 @@ ENDPROC(atomic64_set_cx8)
ENTRY(atomic64_xchg_cx8)
CFI_STARTPROC

movl %ebx, %eax
movl %ecx, %edx
1:
LOCK_PREFIX
cmpxchg8b (%esi)
Expand All @@ -78,7 +76,7 @@ ENTRY(atomic64_\func\()_return_cx8)
movl %edx, %edi
movl %ecx, %ebp

read64 %ebp
read64 %ecx
1:
movl %eax, %ebx
movl %edx, %ecx
Expand Down Expand Up @@ -159,23 +157,22 @@ ENTRY(atomic64_add_unless_cx8)
SAVE ebx
/* these just push these two parameters on the stack */
SAVE edi
SAVE esi
SAVE ecx

movl %ecx, %ebp
movl %eax, %esi
movl %eax, %ebp
movl %edx, %edi

read64 %ebp
read64 %esi
1:
cmpl %eax, 0(%esp)
je 4f
2:
movl %eax, %ebx
movl %edx, %ecx
addl %esi, %ebx
addl %ebp, %ebx
adcl %edi, %ecx
LOCK_PREFIX
cmpxchg8b (%ebp)
cmpxchg8b (%esi)
jne 1b

movl $1, %eax
Expand All @@ -199,13 +196,13 @@ ENTRY(atomic64_inc_not_zero_cx8)

read64 %esi
1:
testl %eax, %eax
je 4f
2:
movl %eax, %ecx
orl %edx, %ecx
jz 3f
movl %eax, %ebx
movl %edx, %ecx
xorl %ecx, %ecx
addl $1, %ebx
adcl $0, %ecx
adcl %edx, %ecx
LOCK_PREFIX
cmpxchg8b (%esi)
jne 1b
Expand All @@ -214,9 +211,5 @@ ENTRY(atomic64_inc_not_zero_cx8)
3:
RESTORE ebx
ret
4:
testl %edx, %edx
jne 2b
jmp 3b
CFI_ENDPROC
ENDPROC(atomic64_inc_not_zero_cx8)

0 comments on commit 4cbd12b

Please sign in to comment.