• Linus Torvalds's avatar
    x86: improve on the non-rep 'clear_user' function · 8c9b6a88
    Linus Torvalds authored
    The old version was oddly written to have the repeat count in multiple
    registers.  So instead of taking advantage of %rax being zero, it had
    some sub-counts in it.  All just for a "single word clearing" loop,
    which isn't even efficient to begin with.
    
    So get rid of those games, and just keep all the state in the same
    registers we got it in (and that we should return things in).  That not
    only makes this act much more like 'rep stos' (which this function is
    replacing), but makes it much easier to actually do the obvious loop
    unrolling.
    
    Also rename the function from the now nonsensical 'clear_user_original'
    to what it now clearly is: 'rep_stos_alternative'.
    
    End result: if we don't have a fast 'rep stosb', at least we can have a
    fast fallback for it.
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8c9b6a88
check.c 108 KB