• Jan Beulich's avatar
    x86-64: Modify memcpy()/memset() alternatives mechanism · 7269e881
    Jan Beulich authored
    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: default avatarJan 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: default avatarIngo Molnar <mingo@elte.hu>
    7269e881
memcpy_64.S 2.35 KB