diff options
author | Brian Behlendorf <[email protected]> | 2017-02-01 09:36:47 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2017-02-01 09:36:47 -0800 |
commit | 3b6425cb5bfd0fc2a14eee451ba36873318a96d9 (patch) | |
tree | 410d02b86b6dd590d2a768bc097b238e6393eea7 /lib/libspl | |
parent | 2fe36b0bfb80a4955f6ff42b2448f432223f6011 (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/libspl')
-rw-r--r-- | lib/libspl/asm-i386/atomic.S | 2 |
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 |