Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 asm updates from Ingo Molnar: "A single commit micro-optimizing short user copies on certain Intel CPUs" * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings
This commit is contained in:
commit
48b5259cf0
|
@ -37,7 +37,7 @@ ENTRY(copy_user_generic_unrolled)
|
||||||
movl %edx,%ecx
|
movl %edx,%ecx
|
||||||
andl $63,%edx
|
andl $63,%edx
|
||||||
shrl $6,%ecx
|
shrl $6,%ecx
|
||||||
jz 17f
|
jz .L_copy_short_string
|
||||||
1: movq (%rsi),%r8
|
1: movq (%rsi),%r8
|
||||||
2: movq 1*8(%rsi),%r9
|
2: movq 1*8(%rsi),%r9
|
||||||
3: movq 2*8(%rsi),%r10
|
3: movq 2*8(%rsi),%r10
|
||||||
|
@ -58,7 +58,8 @@ ENTRY(copy_user_generic_unrolled)
|
||||||
leaq 64(%rdi),%rdi
|
leaq 64(%rdi),%rdi
|
||||||
decl %ecx
|
decl %ecx
|
||||||
jnz 1b
|
jnz 1b
|
||||||
17: movl %edx,%ecx
|
.L_copy_short_string:
|
||||||
|
movl %edx,%ecx
|
||||||
andl $7,%edx
|
andl $7,%edx
|
||||||
shrl $3,%ecx
|
shrl $3,%ecx
|
||||||
jz 20f
|
jz 20f
|
||||||
|
@ -174,6 +175,8 @@ EXPORT_SYMBOL(copy_user_generic_string)
|
||||||
*/
|
*/
|
||||||
ENTRY(copy_user_enhanced_fast_string)
|
ENTRY(copy_user_enhanced_fast_string)
|
||||||
ASM_STAC
|
ASM_STAC
|
||||||
|
cmpl $64,%edx
|
||||||
|
jb .L_copy_short_string /* less then 64 bytes, avoid the costly 'rep' */
|
||||||
movl %edx,%ecx
|
movl %edx,%ecx
|
||||||
1: rep
|
1: rep
|
||||||
movsb
|
movsb
|
||||||
|
|
Loading…
Reference in New Issue