|
@@ -5,7 +5,6 @@
|
|
|
* This assembly file is re-written from memmove_64.c file.
|
|
|
* - Copyright 2011 Fenghua Yu <fenghua.yu@intel.com>
|
|
|
*/
|
|
|
-#define _STRING_C
|
|
|
#include <linux/linkage.h>
|
|
|
#include <asm/dwarf2.h>
|
|
|
#include <asm/cpufeature.h>
|
|
@@ -44,6 +43,8 @@ ENTRY(__memmove)
|
|
|
jg 2f
|
|
|
|
|
|
.Lmemmove_begin_forward:
|
|
|
+ ALTERNATIVE "", "movq %rdx, %rcx; rep movsb; retq", X86_FEATURE_ERMS
|
|
|
+
|
|
|
/*
|
|
|
* movsq instruction have many startup latency
|
|
|
* so we handle small size by general register.
|
|
@@ -207,21 +208,5 @@ ENTRY(__memmove)
|
|
|
13:
|
|
|
retq
|
|
|
CFI_ENDPROC
|
|
|
-
|
|
|
- .section .altinstr_replacement,"ax"
|
|
|
-.Lmemmove_begin_forward_efs:
|
|
|
- /* Forward moving data. */
|
|
|
- movq %rdx, %rcx
|
|
|
- rep movsb
|
|
|
- retq
|
|
|
-.Lmemmove_end_forward_efs:
|
|
|
- .previous
|
|
|
-
|
|
|
- .section .altinstructions,"a"
|
|
|
- altinstruction_entry .Lmemmove_begin_forward, \
|
|
|
- .Lmemmove_begin_forward_efs,X86_FEATURE_ERMS, \
|
|
|
- .Lmemmove_end_forward-.Lmemmove_begin_forward, \
|
|
|
- .Lmemmove_end_forward_efs-.Lmemmove_begin_forward_efs,0
|
|
|
- .previous
|
|
|
ENDPROC(__memmove)
|
|
|
ENDPROC(memmove)
|