aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/lib
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-10-14 17:26:58 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-10-14 17:26:58 -0400
commit84d69848c97faab0c25aa2667b273404d2e2a64a (patch)
tree594f3fe1b271b5255a1c5281e36f8bf938acd1c0 /arch/x86/lib
parentd4d24d2d0a7ea3b62efd7336bfc2344e29b36bc5 (diff)
parent590abbdd273304b55824bcb9ea91840ea375575d (diff)
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kbuild updates from Michal Marek: - EXPORT_SYMBOL for asm source by Al Viro. This does bring a regression, because genksyms no longer generates checksums for these symbols (CONFIG_MODVERSIONS). Nick Piggin is working on a patch to fix this. Plus, we are talking about functions like strcpy(), which rarely change prototypes. - Fixes for PPC fallout of the above by Stephen Rothwell and Nick Piggin - fixdep speedup by Alexey Dobriyan. - preparatory work by Nick Piggin to allow architectures to build with -ffunction-sections, -fdata-sections and --gc-sections - CONFIG_THIN_ARCHIVES support by Stephen Rothwell - fix for filenames with colons in the initramfs source by me. * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: (22 commits) initramfs: Escape colons in depfile ppc: there is no clear_pages to export powerpc/64: whitelist unresolved modversions CRCs kbuild: -ffunction-sections fix for archs with conflicting sections kbuild: add arch specific post-link Makefile kbuild: allow archs to select link dead code/data elimination kbuild: allow architectures to use thin archives instead of ld -r kbuild: Regenerate genksyms lexer kbuild: genksyms fix for typeof handling fixdep: faster CONFIG_ search ia64: move exports to definitions sparc32: debride memcpy.S a bit [sparc] unify 32bit and 64bit string.h sparc: move exports to definitions ppc: move exports to definitions arm: move exports to definitions s390: move exports to definitions m68k: move exports to definitions alpha: move exports to actual definitions x86: move exports to actual definitions ...
Diffstat (limited to 'arch/x86/lib')
-rw-r--r--arch/x86/lib/checksum_32.S3
-rw-r--r--arch/x86/lib/clear_page_64.S2
-rw-r--r--arch/x86/lib/cmpxchg8b_emu.S2
-rw-r--r--arch/x86/lib/copy_page_64.S2
-rw-r--r--arch/x86/lib/copy_user_64.S8
-rw-r--r--arch/x86/lib/csum-partial_64.c1
-rw-r--r--arch/x86/lib/getuser.S5
-rw-r--r--arch/x86/lib/hweight.S3
-rw-r--r--arch/x86/lib/memcpy_64.S4
-rw-r--r--arch/x86/lib/memmove_64.S3
-rw-r--r--arch/x86/lib/memset_64.S3
-rw-r--r--arch/x86/lib/putuser.S5
-rw-r--r--arch/x86/lib/strstr_32.c3
13 files changed, 43 insertions, 1 deletions
diff --git a/arch/x86/lib/checksum_32.S b/arch/x86/lib/checksum_32.S
index c1e623209853..4d34bb548b41 100644
--- a/arch/x86/lib/checksum_32.S
+++ b/arch/x86/lib/checksum_32.S
@@ -28,6 +28,7 @@
28#include <linux/linkage.h> 28#include <linux/linkage.h>
29#include <asm/errno.h> 29#include <asm/errno.h>
30#include <asm/asm.h> 30#include <asm/asm.h>
31#include <asm/export.h>
31 32
32/* 33/*
33 * computes a partial checksum, e.g. for TCP/UDP fragments 34 * computes a partial checksum, e.g. for TCP/UDP fragments
@@ -251,6 +252,7 @@ ENTRY(csum_partial)
251ENDPROC(csum_partial) 252ENDPROC(csum_partial)
252 253
253#endif 254#endif
255EXPORT_SYMBOL(csum_partial)
254 256
255/* 257/*
256unsigned int csum_partial_copy_generic (const char *src, char *dst, 258unsigned int csum_partial_copy_generic (const char *src, char *dst,
@@ -490,3 +492,4 @@ ENDPROC(csum_partial_copy_generic)
490#undef ROUND1 492#undef ROUND1
491 493
492#endif 494#endif
495EXPORT_SYMBOL(csum_partial_copy_generic)
diff --git a/arch/x86/lib/clear_page_64.S b/arch/x86/lib/clear_page_64.S
index 65be7cfaf947..5e2af3a88cf5 100644
--- a/arch/x86/lib/clear_page_64.S
+++ b/arch/x86/lib/clear_page_64.S
@@ -1,6 +1,7 @@
1#include <linux/linkage.h> 1#include <linux/linkage.h>
2#include <asm/cpufeatures.h> 2#include <asm/cpufeatures.h>
3#include <asm/alternative-asm.h> 3#include <asm/alternative-asm.h>
4#include <asm/export.h>
4 5
5/* 6/*
6 * Most CPUs support enhanced REP MOVSB/STOSB instructions. It is 7 * Most CPUs support enhanced REP MOVSB/STOSB instructions. It is
@@ -23,6 +24,7 @@ ENTRY(clear_page)
23 rep stosq 24 rep stosq
24 ret 25 ret
25ENDPROC(clear_page) 26ENDPROC(clear_page)
27EXPORT_SYMBOL(clear_page)
26 28
27ENTRY(clear_page_orig) 29ENTRY(clear_page_orig)
28 30
diff --git a/arch/x86/lib/cmpxchg8b_emu.S b/arch/x86/lib/cmpxchg8b_emu.S
index ad5349778490..03a186fc06ea 100644
--- a/arch/x86/lib/cmpxchg8b_emu.S
+++ b/arch/x86/lib/cmpxchg8b_emu.S
@@ -7,6 +7,7 @@
7 */ 7 */
8 8
9#include <linux/linkage.h> 9#include <linux/linkage.h>
10#include <asm/export.h>
10 11
11.text 12.text
12 13
@@ -48,3 +49,4 @@ ENTRY(cmpxchg8b_emu)
48 ret 49 ret
49 50
50ENDPROC(cmpxchg8b_emu) 51ENDPROC(cmpxchg8b_emu)
52EXPORT_SYMBOL(cmpxchg8b_emu)
diff --git a/arch/x86/lib/copy_page_64.S b/arch/x86/lib/copy_page_64.S
index 24ef1c2104d4..e8508156c99d 100644
--- a/arch/x86/lib/copy_page_64.S
+++ b/arch/x86/lib/copy_page_64.S
@@ -3,6 +3,7 @@
3#include <linux/linkage.h> 3#include <linux/linkage.h>
4#include <asm/cpufeatures.h> 4#include <asm/cpufeatures.h>
5#include <asm/alternative-asm.h> 5#include <asm/alternative-asm.h>
6#include <asm/export.h>
6 7
7/* 8/*
8 * Some CPUs run faster using the string copy instructions (sane microcode). 9 * Some CPUs run faster using the string copy instructions (sane microcode).
@@ -17,6 +18,7 @@ ENTRY(copy_page)
17 rep movsq 18 rep movsq
18 ret 19 ret
19ENDPROC(copy_page) 20ENDPROC(copy_page)
21EXPORT_SYMBOL(copy_page)
20 22
21ENTRY(copy_page_regs) 23ENTRY(copy_page_regs)
22 subq $2*8, %rsp 24 subq $2*8, %rsp
diff --git a/arch/x86/lib/copy_user_64.S b/arch/x86/lib/copy_user_64.S
index bf603ebbfd8e..d376e4b48f88 100644
--- a/arch/x86/lib/copy_user_64.S
+++ b/arch/x86/lib/copy_user_64.S
@@ -14,6 +14,7 @@
14#include <asm/alternative-asm.h> 14#include <asm/alternative-asm.h>
15#include <asm/asm.h> 15#include <asm/asm.h>
16#include <asm/smap.h> 16#include <asm/smap.h>
17#include <asm/export.h>
17 18
18/* Standard copy_to_user with segment limit checking */ 19/* Standard copy_to_user with segment limit checking */
19ENTRY(_copy_to_user) 20ENTRY(_copy_to_user)
@@ -29,6 +30,7 @@ ENTRY(_copy_to_user)
29 "jmp copy_user_enhanced_fast_string", \ 30 "jmp copy_user_enhanced_fast_string", \
30 X86_FEATURE_ERMS 31 X86_FEATURE_ERMS
31ENDPROC(_copy_to_user) 32ENDPROC(_copy_to_user)
33EXPORT_SYMBOL(_copy_to_user)
32 34
33/* Standard copy_from_user with segment limit checking */ 35/* Standard copy_from_user with segment limit checking */
34ENTRY(_copy_from_user) 36ENTRY(_copy_from_user)
@@ -44,6 +46,8 @@ ENTRY(_copy_from_user)
44 "jmp copy_user_enhanced_fast_string", \ 46 "jmp copy_user_enhanced_fast_string", \
45 X86_FEATURE_ERMS 47 X86_FEATURE_ERMS
46ENDPROC(_copy_from_user) 48ENDPROC(_copy_from_user)
49EXPORT_SYMBOL(_copy_from_user)
50
47 51
48 .section .fixup,"ax" 52 .section .fixup,"ax"
49 /* must zero dest */ 53 /* must zero dest */
@@ -155,6 +159,7 @@ ENTRY(copy_user_generic_unrolled)
155 _ASM_EXTABLE(21b,50b) 159 _ASM_EXTABLE(21b,50b)
156 _ASM_EXTABLE(22b,50b) 160 _ASM_EXTABLE(22b,50b)
157ENDPROC(copy_user_generic_unrolled) 161ENDPROC(copy_user_generic_unrolled)
162EXPORT_SYMBOL(copy_user_generic_unrolled)
158 163
159/* Some CPUs run faster using the string copy instructions. 164/* Some CPUs run faster using the string copy instructions.
160 * This is also a lot simpler. Use them when possible. 165 * This is also a lot simpler. Use them when possible.
@@ -200,6 +205,7 @@ ENTRY(copy_user_generic_string)
200 _ASM_EXTABLE(1b,11b) 205 _ASM_EXTABLE(1b,11b)
201 _ASM_EXTABLE(3b,12b) 206 _ASM_EXTABLE(3b,12b)
202ENDPROC(copy_user_generic_string) 207ENDPROC(copy_user_generic_string)
208EXPORT_SYMBOL(copy_user_generic_string)
203 209
204/* 210/*
205 * Some CPUs are adding enhanced REP MOVSB/STOSB instructions. 211 * Some CPUs are adding enhanced REP MOVSB/STOSB instructions.
@@ -229,6 +235,7 @@ ENTRY(copy_user_enhanced_fast_string)
229 235
230 _ASM_EXTABLE(1b,12b) 236 _ASM_EXTABLE(1b,12b)
231ENDPROC(copy_user_enhanced_fast_string) 237ENDPROC(copy_user_enhanced_fast_string)
238EXPORT_SYMBOL(copy_user_enhanced_fast_string)
232 239
233/* 240/*
234 * copy_user_nocache - Uncached memory copy with exception handling 241 * copy_user_nocache - Uncached memory copy with exception handling
@@ -379,3 +386,4 @@ ENTRY(__copy_user_nocache)
379 _ASM_EXTABLE(40b,.L_fixup_1b_copy) 386 _ASM_EXTABLE(40b,.L_fixup_1b_copy)
380 _ASM_EXTABLE(41b,.L_fixup_1b_copy) 387 _ASM_EXTABLE(41b,.L_fixup_1b_copy)
381ENDPROC(__copy_user_nocache) 388ENDPROC(__copy_user_nocache)
389EXPORT_SYMBOL(__copy_user_nocache)
diff --git a/arch/x86/lib/csum-partial_64.c b/arch/x86/lib/csum-partial_64.c
index 9a7fe6a70491..378e5d5bf9b1 100644
--- a/arch/x86/lib/csum-partial_64.c
+++ b/arch/x86/lib/csum-partial_64.c
@@ -135,6 +135,7 @@ __wsum csum_partial(const void *buff, int len, __wsum sum)
135 return (__force __wsum)add32_with_carry(do_csum(buff, len), 135 return (__force __wsum)add32_with_carry(do_csum(buff, len),
136 (__force u32)sum); 136 (__force u32)sum);
137} 137}
138EXPORT_SYMBOL(csum_partial);
138 139
139/* 140/*
140 * this routine is used for miscellaneous IP-like checksums, mainly 141 * this routine is used for miscellaneous IP-like checksums, mainly
diff --git a/arch/x86/lib/getuser.S b/arch/x86/lib/getuser.S
index 0ef5128c2de8..37b62d412148 100644
--- a/arch/x86/lib/getuser.S
+++ b/arch/x86/lib/getuser.S
@@ -32,6 +32,7 @@
32#include <asm/thread_info.h> 32#include <asm/thread_info.h>
33#include <asm/asm.h> 33#include <asm/asm.h>
34#include <asm/smap.h> 34#include <asm/smap.h>
35#include <asm/export.h>
35 36
36 .text 37 .text
37ENTRY(__get_user_1) 38ENTRY(__get_user_1)
@@ -44,6 +45,7 @@ ENTRY(__get_user_1)
44 ASM_CLAC 45 ASM_CLAC
45 ret 46 ret
46ENDPROC(__get_user_1) 47ENDPROC(__get_user_1)
48EXPORT_SYMBOL(__get_user_1)
47 49
48ENTRY(__get_user_2) 50ENTRY(__get_user_2)
49 add $1,%_ASM_AX 51 add $1,%_ASM_AX
@@ -57,6 +59,7 @@ ENTRY(__get_user_2)
57 ASM_CLAC 59 ASM_CLAC
58 ret 60 ret
59ENDPROC(__get_user_2) 61ENDPROC(__get_user_2)
62EXPORT_SYMBOL(__get_user_2)
60 63
61ENTRY(__get_user_4) 64ENTRY(__get_user_4)
62 add $3,%_ASM_AX 65 add $3,%_ASM_AX
@@ -70,6 +73,7 @@ ENTRY(__get_user_4)
70 ASM_CLAC 73 ASM_CLAC
71 ret 74 ret
72ENDPROC(__get_user_4) 75ENDPROC(__get_user_4)
76EXPORT_SYMBOL(__get_user_4)
73 77
74ENTRY(__get_user_8) 78ENTRY(__get_user_8)
75#ifdef CONFIG_X86_64 79#ifdef CONFIG_X86_64
@@ -97,6 +101,7 @@ ENTRY(__get_user_8)
97 ret 101 ret
98#endif 102#endif
99ENDPROC(__get_user_8) 103ENDPROC(__get_user_8)
104EXPORT_SYMBOL(__get_user_8)
100 105
101 106
102bad_get_user: 107bad_get_user:
diff --git a/arch/x86/lib/hweight.S b/arch/x86/lib/hweight.S
index 8a602a1e404a..23d893cbc200 100644
--- a/arch/x86/lib/hweight.S
+++ b/arch/x86/lib/hweight.S
@@ -1,4 +1,5 @@
1#include <linux/linkage.h> 1#include <linux/linkage.h>
2#include <asm/export.h>
2 3
3#include <asm/asm.h> 4#include <asm/asm.h>
4 5
@@ -32,6 +33,7 @@ ENTRY(__sw_hweight32)
32 __ASM_SIZE(pop,) %__ASM_REG(dx) 33 __ASM_SIZE(pop,) %__ASM_REG(dx)
33 ret 34 ret
34ENDPROC(__sw_hweight32) 35ENDPROC(__sw_hweight32)
36EXPORT_SYMBOL(__sw_hweight32)
35 37
36ENTRY(__sw_hweight64) 38ENTRY(__sw_hweight64)
37#ifdef CONFIG_X86_64 39#ifdef CONFIG_X86_64
@@ -77,3 +79,4 @@ ENTRY(__sw_hweight64)
77 ret 79 ret
78#endif 80#endif
79ENDPROC(__sw_hweight64) 81ENDPROC(__sw_hweight64)
82EXPORT_SYMBOL(__sw_hweight64)
diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S
index 49e6ebac7e73..779782f58324 100644
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -4,6 +4,7 @@
4#include <asm/errno.h> 4#include <asm/errno.h>
5#include <asm/cpufeatures.h> 5#include <asm/cpufeatures.h>
6#include <asm/alternative-asm.h> 6#include <asm/alternative-asm.h>
7#include <asm/export.h>
7 8
8/* 9/*
9 * We build a jump to memcpy_orig by default which gets NOPped out on 10 * We build a jump to memcpy_orig by default which gets NOPped out on
@@ -40,6 +41,8 @@ ENTRY(memcpy)
40 ret 41 ret
41ENDPROC(memcpy) 42ENDPROC(memcpy)
42ENDPROC(__memcpy) 43ENDPROC(__memcpy)
44EXPORT_SYMBOL(memcpy)
45EXPORT_SYMBOL(__memcpy)
43 46
44/* 47/*
45 * memcpy_erms() - enhanced fast string memcpy. This is faster and 48 * memcpy_erms() - enhanced fast string memcpy. This is faster and
@@ -274,6 +277,7 @@ ENTRY(memcpy_mcsafe_unrolled)
274 xorq %rax, %rax 277 xorq %rax, %rax
275 ret 278 ret
276ENDPROC(memcpy_mcsafe_unrolled) 279ENDPROC(memcpy_mcsafe_unrolled)
280EXPORT_SYMBOL_GPL(memcpy_mcsafe_unrolled)
277 281
278 .section .fixup, "ax" 282 .section .fixup, "ax"
279 /* Return -EFAULT for any failure */ 283 /* Return -EFAULT for any failure */
diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S
index 90ce01bee00c..15de86cd15b0 100644
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -8,6 +8,7 @@
8#include <linux/linkage.h> 8#include <linux/linkage.h>
9#include <asm/cpufeatures.h> 9#include <asm/cpufeatures.h>
10#include <asm/alternative-asm.h> 10#include <asm/alternative-asm.h>
11#include <asm/export.h>
11 12
12#undef memmove 13#undef memmove
13 14
@@ -207,3 +208,5 @@ ENTRY(__memmove)
207 retq 208 retq
208ENDPROC(__memmove) 209ENDPROC(__memmove)
209ENDPROC(memmove) 210ENDPROC(memmove)
211EXPORT_SYMBOL(__memmove)
212EXPORT_SYMBOL(memmove)
diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S
index e1229ecd2a82..55b95db30a61 100644
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -3,6 +3,7 @@
3#include <linux/linkage.h> 3#include <linux/linkage.h>
4#include <asm/cpufeatures.h> 4#include <asm/cpufeatures.h>
5#include <asm/alternative-asm.h> 5#include <asm/alternative-asm.h>
6#include <asm/export.h>
6 7
7.weak memset 8.weak memset
8 9
@@ -43,6 +44,8 @@ ENTRY(__memset)
43 ret 44 ret
44ENDPROC(memset) 45ENDPROC(memset)
45ENDPROC(__memset) 46ENDPROC(__memset)
47EXPORT_SYMBOL(memset)
48EXPORT_SYMBOL(__memset)
46 49
47/* 50/*
48 * ISO C memset - set a memory block to a byte value. This function uses 51 * ISO C memset - set a memory block to a byte value. This function uses
diff --git a/arch/x86/lib/putuser.S b/arch/x86/lib/putuser.S
index c891ece81e5b..cd5d716d2897 100644
--- a/arch/x86/lib/putuser.S
+++ b/arch/x86/lib/putuser.S
@@ -15,6 +15,7 @@
15#include <asm/errno.h> 15#include <asm/errno.h>
16#include <asm/asm.h> 16#include <asm/asm.h>
17#include <asm/smap.h> 17#include <asm/smap.h>
18#include <asm/export.h>
18 19
19 20
20/* 21/*
@@ -43,6 +44,7 @@ ENTRY(__put_user_1)
43 xor %eax,%eax 44 xor %eax,%eax
44 EXIT 45 EXIT
45ENDPROC(__put_user_1) 46ENDPROC(__put_user_1)
47EXPORT_SYMBOL(__put_user_1)
46 48
47ENTRY(__put_user_2) 49ENTRY(__put_user_2)
48 ENTER 50 ENTER
@@ -55,6 +57,7 @@ ENTRY(__put_user_2)
55 xor %eax,%eax 57 xor %eax,%eax
56 EXIT 58 EXIT
57ENDPROC(__put_user_2) 59ENDPROC(__put_user_2)
60EXPORT_SYMBOL(__put_user_2)
58 61
59ENTRY(__put_user_4) 62ENTRY(__put_user_4)
60 ENTER 63 ENTER
@@ -67,6 +70,7 @@ ENTRY(__put_user_4)
67 xor %eax,%eax 70 xor %eax,%eax
68 EXIT 71 EXIT
69ENDPROC(__put_user_4) 72ENDPROC(__put_user_4)
73EXPORT_SYMBOL(__put_user_4)
70 74
71ENTRY(__put_user_8) 75ENTRY(__put_user_8)
72 ENTER 76 ENTER
@@ -82,6 +86,7 @@ ENTRY(__put_user_8)
82 xor %eax,%eax 86 xor %eax,%eax
83 EXIT 87 EXIT
84ENDPROC(__put_user_8) 88ENDPROC(__put_user_8)
89EXPORT_SYMBOL(__put_user_8)
85 90
86bad_put_user: 91bad_put_user:
87 movl $-EFAULT,%eax 92 movl $-EFAULT,%eax
diff --git a/arch/x86/lib/strstr_32.c b/arch/x86/lib/strstr_32.c
index 8e2d55f754bf..a03b1c750bfe 100644
--- a/arch/x86/lib/strstr_32.c
+++ b/arch/x86/lib/strstr_32.c
@@ -1,4 +1,5 @@
1#include <linux/string.h> 1#include <linux/string.h>
2#include <linux/export.h>
2 3
3char *strstr(const char *cs, const char *ct) 4char *strstr(const char *cs, const char *ct)
4{ 5{
@@ -28,4 +29,4 @@ __asm__ __volatile__(
28 : "dx", "di"); 29 : "dx", "di");
29return __res; 30return __res;
30} 31}
31 32EXPORT_SYMBOL(strstr);