diff options
author | Andy Lutomirski <luto@mit.edu> | 2011-07-13 09:24:10 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2011-07-13 14:22:56 -0400 |
commit | 59e97e4d6fbcd5b74a94cb48bcbfc6f8478a5e93 (patch) | |
tree | 015fd8e63e1fcd8fdf7a066bd2e09a5636a14449 /arch/x86/lib | |
parent | c9712944b2a12373cb6ff8059afcfb7e826a6c54 (diff) |
x86: Make alternative instruction pointers relative
This save a few bytes on x86-64 and means that future patches can
apply alternatives to unrelocated code.
Signed-off-by: Andy Lutomirski <luto@mit.edu>
Link: http://lkml.kernel.org/r/ff64a6b9a1a3860ca4a7b8b6dc7b4754f9491cd7.1310563276.git.luto@mit.edu
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/lib')
-rw-r--r-- | arch/x86/lib/copy_page_64.S | 9 | ||||
-rw-r--r-- | arch/x86/lib/memmove_64.S | 11 |
2 files changed, 8 insertions, 12 deletions
diff --git a/arch/x86/lib/copy_page_64.S b/arch/x86/lib/copy_page_64.S index 6fec2d1cebe1..01c805ba5359 100644 --- a/arch/x86/lib/copy_page_64.S +++ b/arch/x86/lib/copy_page_64.S | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | #include <linux/linkage.h> | 3 | #include <linux/linkage.h> |
4 | #include <asm/dwarf2.h> | 4 | #include <asm/dwarf2.h> |
5 | #include <asm/alternative-asm.h> | ||
5 | 6 | ||
6 | ALIGN | 7 | ALIGN |
7 | copy_page_c: | 8 | copy_page_c: |
@@ -110,10 +111,6 @@ ENDPROC(copy_page) | |||
110 | 2: | 111 | 2: |
111 | .previous | 112 | .previous |
112 | .section .altinstructions,"a" | 113 | .section .altinstructions,"a" |
113 | .align 8 | 114 | altinstruction_entry copy_page, 1b, X86_FEATURE_REP_GOOD, \ |
114 | .quad copy_page | 115 | .Lcopy_page_end-copy_page, 2b-1b |
115 | .quad 1b | ||
116 | .word X86_FEATURE_REP_GOOD | ||
117 | .byte .Lcopy_page_end - copy_page | ||
118 | .byte 2b - 1b | ||
119 | .previous | 116 | .previous |
diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S index d0ec9c2936d7..ee164610ec46 100644 --- a/arch/x86/lib/memmove_64.S +++ b/arch/x86/lib/memmove_64.S | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/linkage.h> | 9 | #include <linux/linkage.h> |
10 | #include <asm/dwarf2.h> | 10 | #include <asm/dwarf2.h> |
11 | #include <asm/cpufeature.h> | 11 | #include <asm/cpufeature.h> |
12 | #include <asm/alternative-asm.h> | ||
12 | 13 | ||
13 | #undef memmove | 14 | #undef memmove |
14 | 15 | ||
@@ -214,11 +215,9 @@ ENTRY(memmove) | |||
214 | .previous | 215 | .previous |
215 | 216 | ||
216 | .section .altinstructions,"a" | 217 | .section .altinstructions,"a" |
217 | .align 8 | 218 | altinstruction_entry .Lmemmove_begin_forward, \ |
218 | .quad .Lmemmove_begin_forward | 219 | .Lmemmove_begin_forward_efs,X86_FEATURE_ERMS, \ |
219 | .quad .Lmemmove_begin_forward_efs | 220 | .Lmemmove_end_forward-.Lmemmove_begin_forward, \ |
220 | .word X86_FEATURE_ERMS | 221 | .Lmemmove_end_forward_efs-.Lmemmove_begin_forward_efs |
221 | .byte .Lmemmove_end_forward-.Lmemmove_begin_forward | ||
222 | .byte .Lmemmove_end_forward_efs-.Lmemmove_begin_forward_efs | ||
223 | .previous | 222 | .previous |
224 | ENDPROC(memmove) | 223 | ENDPROC(memmove) |