summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2017-02-01 09:36:47 -0800
committerGitHub <[email protected]>2017-02-01 09:36:47 -0800
commit3b6425cb5bfd0fc2a14eee451ba36873318a96d9 (patch)
tree410d02b86b6dd590d2a768bc097b238e6393eea7 /lib
parent2fe36b0bfb80a4955f6ff42b2448f432223f6011 (diff)
Fix atomic_sub_64() i386 assembly implementation
The atomic_sub_64() should use sbbl instead of adcl. In user space these atomics are used for statistics tracking and aren't critical which explain how this was overlooked. The kernel space implementation of these atomics are layered on the architecture specific implementations provided by the kernel. Reviewed by: Stefan Ring <[email protected]> Reviewed-by: Gvozden Neskovic <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #5671 Closes #5717
Diffstat (limited to 'lib')
-rw-r--r--lib/libspl/asm-i386/atomic.S2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libspl/asm-i386/atomic.S b/lib/libspl/asm-i386/atomic.S
index d3d425090..3086d5543 100644
--- a/lib/libspl/asm-i386/atomic.S
+++ b/lib/libspl/asm-i386/atomic.S
@@ -507,7 +507,7 @@
movl 16(%esp), %ebx
movl 20(%esp), %ecx
subl %eax, %ebx
- adcl %edx, %ecx
+ sbbl %edx, %ecx
lock
cmpxchg8b (%edi)
jne 1b