diff options
author | Jan Beulich <[email protected]> | 2012-01-20 16:22:04 +0000 |
---|---|---|
committer | H. Peter Anvin <[email protected]> | 2012-01-20 17:29:49 -0800 |
commit | cb8095bba6d24118135a5683a956f4f4fb5f17bb (patch) | |
tree | 25eff3732e8471e314591d0bc6ea41d96857c18b /net/lapb/lapb_timer.c | |
parent | 819165fb34b9777f852429f2c6d6f79fbb71b9eb (diff) |
x86: atomic64 assembly improvements
In the "xchg" implementation, %ebx and %ecx don't need to be copied
into %eax and %edx respectively (this is only necessary when desiring
to only read the stored value).
In the "add_unless" implementation, swapping the use of %ecx and %esi
for passing arguments allows %esi to become an input only (i.e.
permitting the register to be re-used to address the same object
without reload).
In "{add,sub}_return", doing the initial read64 through the passed in
%ecx decreases a register dependency.
In "inc_not_zero", a branch can be eliminated by or-ing together the
two halves of the current (64-bit) value, and code size can be further
reduced by adjusting the arithmetic slightly.
v2: Undo the folding of "xchg" and "set".
Signed-off-by: Jan Beulich <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Cc: Luca Barbieri <[email protected]>
Cc: Eric Dumazet <[email protected]>
Signed-off-by: H. Peter Anvin <[email protected]>
Diffstat (limited to 'net/lapb/lapb_timer.c')
0 files changed, 0 insertions, 0 deletions