summaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/atomic_64.h
diff options
context:
space:
mode:
authorJan Beulich2009-12-18 17:16:03 +0100
committerIngo Molnar2009-12-30 11:57:32 +0100
commit7269e8812a59f74fb1ce134465d0bcf5683b93a1 (patch)
treecfa0022a98907232edc8ffbe145926a272da14f1 /arch/x86/include/asm/atomic_64.h
parentx86-64: Modify copy_user_generic() alternatives mechanism (diff)
downloadkernel-qcow2-linux-7269e8812a59f74fb1ce134465d0bcf5683b93a1.tar.gz
kernel-qcow2-linux-7269e8812a59f74fb1ce134465d0bcf5683b93a1.tar.xz
kernel-qcow2-linux-7269e8812a59f74fb1ce134465d0bcf5683b93a1.zip
x86-64: Modify memcpy()/memset() alternatives mechanism
In order to avoid unnecessary chains of branches, rather than implementing memcpy()/memset()'s access to their alternative implementations via a jump, patch the (larger) original function directly. The memcpy() part of this is slightly subtle: while alternative instruction patching does itself use memcpy(), with the replacement block being less than 64-bytes in size the main loop of the original function doesn't get used for copying memcpy_c() over memcpy(), and hence we can safely write over its beginning. Also note that the CFI annotations are fine for both variants of each of the functions. Signed-off-by: Jan Beulich <jbeulich@novell.com> Cc: Nick Piggin <npiggin@suse.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org> LKML-Reference: <4B2BB8D30200007800026AF2@vpn.id2.novell.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/atomic_64.h')
0 files changed, 0 insertions, 0 deletions