From patchwork Wed Nov 30 08:50:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Pitre X-Patchwork-Id: 84974 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp138443qgi; Wed, 30 Nov 2016 00:51:23 -0800 (PST) X-Received: by 10.84.173.4 with SMTP id o4mr71812020plb.123.1480495882974; Wed, 30 Nov 2016 00:51:22 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 191si63309912pgb.332.2016.11.30.00.51.22; Wed, 30 Nov 2016 00:51:22 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757420AbcK3IvJ (ORCPT + 25 others); Wed, 30 Nov 2016 03:51:09 -0500 Received: from alt13.smtp-out.videotron.ca ([135.19.0.26]:46430 "EHLO alt12.smtp-out.videotron.ca" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757305AbcK3Iud (ORCPT ); Wed, 30 Nov 2016 03:50:33 -0500 Received: from yoda.home ([96.23.157.65]) by Videotron with SMTP id C0aycQm9SHh2dC0azcCeJT; Wed, 30 Nov 2016 03:50:31 -0500 X-Authority-Analysis: v=2.1 cv=Lv0ysipc c=1 sm=1 tr=0 a=keA3yYpnlypCNW5BNWqu+w==:117 a=keA3yYpnlypCNW5BNWqu+w==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=L24OOQBejmoA:10 a=KKAkSRfTAAAA:8 a=cFY6yTuI71GmUI3SaWkA:9 a=cvBusfyB2V15izCimMoJ:22 Received: from xanadu.home (xanadu.home [192.168.2.2]) by yoda.home (Postfix) with ESMTP id 6A61D2DA0678; Wed, 30 Nov 2016 03:50:28 -0500 (EST) From: Nicolas Pitre To: Russell King - ARM Linux , Nicholas Piggin , Michal Marek Cc: Arnd Bergmann , viro@zeniv.linux.org.uk, linux-arm-kernel@lists.infradead.org, linux-arch@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] ARM: fix asm symbol exports Date: Wed, 30 Nov 2016 03:50:24 -0500 Message-Id: <1480495824-4151-4-git-send-email-nicolas.pitre@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1480495824-4151-1-git-send-email-nicolas.pitre@linaro.org> References: <1480495824-4151-1-git-send-email-nicolas.pitre@linaro.org> X-CMAE-Envelope: MS4wfHhTqpgBr034LMEvm0S8V80dfqo+tkhZdPDKTBoTxPwjYmBE+ze6WQjNKaRsAEBRmmpVfxStFF/ugZwqgjj3AfTsje7Cfz4FE+BEz/Xx6HEIbv6ecBb3 j8bWpEfvrVJVEyVMXycGKeELZOqB4StNgqlxTIl1eMTQgKwRuyCmqIDwOlWOYRQhfr7yLpmdvcbJ6K8zLLJUS4VTE5TRbNoK3tTrIEpoJmzk52iXTDog6Xu2 jd86D0HUmRpmzsCmda2KwkcIQTejzCfF5UaV9UFm6FntBr9+pyDjabY3C5rAewrdt2K1HOkaUx4s/+uolFO8KB58E8D/QzvCHT87xUsKNhni9jMtJADupvLy 8Yfwm1KKTSbC/aENpaj+6RfcE/E1Ls3dRB3ccnpuTGB71on6InvEaZWM5FkxSkQG0eHyV7/w0PnUg8eFKMWE+fsqdjnAxaDCjZt2y/QICBf1Mo94VVw= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This assumes a revert of commit 8478132a87 before being applied. Annotate exported assembly symbols so they are properly checksummed when modversion is selected. Also, don't use \name with EXPORT_SYMBOL() in bitops.h. Here \name is an assembler macro argument which is not subject to preprocessor substitutions. And the assembler doesn't handle preprocessor macros either. That has the effect of breaking CONFIG_TRIM_UNUSED_KSYMS=y. Signed-off-by: Nicolas Pitre --- arch/arm/boot/compressed/voidproto.h | 1 + arch/arm/kernel/head.S | 1 + arch/arm/kernel/smccc-call.S | 2 ++ arch/arm/lib/ashldi3.S | 5 +++-- arch/arm/lib/ashrdi3.S | 5 +++-- arch/arm/lib/bitops.h | 14 ++++++++++---- arch/arm/lib/bswapsdi2.S | 5 +++-- arch/arm/lib/changebit.S | 2 +- arch/arm/lib/clear_user.S | 1 + arch/arm/lib/clearbit.S | 2 +- arch/arm/lib/copy_from_user.S | 1 + arch/arm/lib/copy_page.S | 1 + arch/arm/lib/copy_to_user.S | 1 + arch/arm/lib/csumipv6.S | 1 + arch/arm/lib/csumpartial.S | 1 + arch/arm/lib/csumpartialcopygeneric.S | 2 ++ arch/arm/lib/div64.S | 3 ++- arch/arm/lib/getuser.S | 2 ++ arch/arm/lib/io-readsb.S | 1 + arch/arm/lib/io-readsl.S | 1 + arch/arm/lib/io-readsw-armv3.S | 1 + arch/arm/lib/io-readsw-armv4.S | 1 + arch/arm/lib/io-writesb.S | 1 + arch/arm/lib/io-writesl.S | 1 + arch/arm/lib/io-writesw-armv3.S | 1 + arch/arm/lib/io-writesw-armv4.S | 1 + arch/arm/lib/lib1funcs.S | 17 +++++++++-------- arch/arm/lib/lshrdi3.S | 5 +++-- arch/arm/lib/memchr.S | 1 + arch/arm/lib/memcpy.S | 4 ++++ arch/arm/lib/memmove.S | 1 + arch/arm/lib/memset.S | 4 ++++ arch/arm/lib/memzero.S | 1 + arch/arm/lib/muldi3.S | 5 +++-- arch/arm/lib/putuser.S | 2 ++ arch/arm/lib/setbit.S | 2 +- arch/arm/lib/strchr.S | 1 + arch/arm/lib/strrchr.S | 1 + arch/arm/lib/testchangebit.S | 2 +- arch/arm/lib/testclearbit.S | 2 +- arch/arm/lib/testsetbit.S | 2 +- arch/arm/lib/ucmpdi2.S | 5 +++-- arch/arm/lib/voidproto.h | 7 +++++++ 43 files changed, 89 insertions(+), 31 deletions(-) create mode 100644 arch/arm/boot/compressed/voidproto.h create mode 100644 arch/arm/lib/voidproto.h -- 2.7.4 diff --git a/arch/arm/boot/compressed/voidproto.h b/arch/arm/boot/compressed/voidproto.h new file mode 100644 index 0000000000..9c5f5e7e49 --- /dev/null +++ b/arch/arm/boot/compressed/voidproto.h @@ -0,0 +1 @@ +#define EXPORT_SYMBOL_VOIDPROTO(x) /* nothing */ diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index f41cee4c57..e37d7bc8da 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S @@ -728,6 +728,7 @@ __pv_phys_pfn_offset: __pv_offset: .quad 0 .size __pv_offset, . -__pv_offset +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__pv_phys_pfn_offset) EXPORT_SYMBOL(__pv_offset) #endif diff --git a/arch/arm/kernel/smccc-call.S b/arch/arm/kernel/smccc-call.S index 37669e7e13..b50961de14 100644 --- a/arch/arm/kernel/smccc-call.S +++ b/arch/arm/kernel/smccc-call.S @@ -18,6 +18,8 @@ #include #include +SYMBOL_CPROTO_INCLUDE() + /* * Wrap c macros in asm macros to delay expansion until after the * SMCCC asm macro is expanded. diff --git a/arch/arm/lib/ashldi3.S b/arch/arm/lib/ashldi3.S index a7e7de89bd..8e4db9e1b6 100644 --- a/arch/arm/lib/ashldi3.S +++ b/arch/arm/lib/ashldi3.S @@ -29,6 +29,7 @@ Boston, MA 02110-1301, USA. */ #include #include #include +#include "voidproto.h" #ifdef __ARMEB__ #define al r1 @@ -53,5 +54,5 @@ ENTRY(__aeabi_llsl) ENDPROC(__ashldi3) ENDPROC(__aeabi_llsl) -EXPORT_SYMBOL(__ashldi3) -EXPORT_SYMBOL(__aeabi_llsl) +EXPORT_SYMBOL_VOIDPROTO(__ashldi3) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_llsl) diff --git a/arch/arm/lib/ashrdi3.S b/arch/arm/lib/ashrdi3.S index 490336e425..e373606cd8 100644 --- a/arch/arm/lib/ashrdi3.S +++ b/arch/arm/lib/ashrdi3.S @@ -29,6 +29,7 @@ Boston, MA 02110-1301, USA. */ #include #include #include +#include "voidproto.h" #ifdef __ARMEB__ #define al r1 @@ -53,5 +54,5 @@ ENTRY(__aeabi_lasr) ENDPROC(__ashrdi3) ENDPROC(__aeabi_lasr) -EXPORT_SYMBOL(__ashrdi3) -EXPORT_SYMBOL(__aeabi_lasr) +EXPORT_SYMBOL_VOIDPROTO(__ashrdi3) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_lasr) diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h index df06638b32..af39eeb1a8 100644 --- a/arch/arm/lib/bitops.h +++ b/arch/arm/lib/bitops.h @@ -2,6 +2,16 @@ #include #include +SYMBOL_CPROTO_INCLUDE() + +#define BITOP(name, instr) \ + bitop name, instr; \ + EXPORT_SYMBOL(name) + +#define TESTOP(name, instr, store) \ + testop name, instr, store; \ + EXPORT_SYMBOL(name) + #if __LINUX_ARM_ARCH__ >= 6 .macro bitop, name, instr ENTRY( \name ) @@ -26,7 +36,6 @@ UNWIND( .fnstart ) bx lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm .macro testop, name, instr, store @@ -57,7 +66,6 @@ UNWIND( .fnstart ) 2: bx lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm #else .macro bitop, name, instr @@ -77,7 +85,6 @@ UNWIND( .fnstart ) ret lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm /** @@ -106,6 +113,5 @@ UNWIND( .fnstart ) ret lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm #endif diff --git a/arch/arm/lib/bswapsdi2.S b/arch/arm/lib/bswapsdi2.S index f05f782473..7c503191db 100644 --- a/arch/arm/lib/bswapsdi2.S +++ b/arch/arm/lib/bswapsdi2.S @@ -1,6 +1,7 @@ #include #include #include +#include "voidproto.h" #if __LINUX_ARM_ARCH__ >= 6 ENTRY(__bswapsi2) @@ -36,5 +37,5 @@ ENTRY(__bswapdi2) ret lr ENDPROC(__bswapdi2) #endif -EXPORT_SYMBOL(__bswapsi2) -EXPORT_SYMBOL(__bswapdi2) +EXPORT_SYMBOL_VOIDPROTO(__bswapsi2) +EXPORT_SYMBOL_VOIDPROTO(__bswapdi2) diff --git a/arch/arm/lib/changebit.S b/arch/arm/lib/changebit.S index f402786217..4f3f77f416 100644 --- a/arch/arm/lib/changebit.S +++ b/arch/arm/lib/changebit.S @@ -12,4 +12,4 @@ #include "bitops.h" .text -bitop _change_bit, eor +BITOP( _change_bit, eor ) diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S index b566154f5c..caaa40b85f 100644 --- a/arch/arm/lib/clear_user.S +++ b/arch/arm/lib/clear_user.S @@ -52,6 +52,7 @@ UNWIND(.fnend) ENDPROC(arm_clear_user) ENDPROC(__clear_user_std) #ifndef CONFIG_UACCESS_WITH_MEMCPY +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(arm_clear_user) #endif diff --git a/arch/arm/lib/clearbit.S b/arch/arm/lib/clearbit.S index f6b75fb64d..444789f37a 100644 --- a/arch/arm/lib/clearbit.S +++ b/arch/arm/lib/clearbit.S @@ -12,4 +12,4 @@ #include "bitops.h" .text -bitop _clear_bit, bic +BITOP( _clear_bit, bic ) diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S index 63e4c1ed02..b01dcb5e27 100644 --- a/arch/arm/lib/copy_from_user.S +++ b/arch/arm/lib/copy_from_user.S @@ -95,6 +95,7 @@ ENTRY(arm_copy_from_user) #include "copy_template.S" ENDPROC(arm_copy_from_user) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(arm_copy_from_user) .pushsection .fixup,"ax" diff --git a/arch/arm/lib/copy_page.S b/arch/arm/lib/copy_page.S index d97851d4af..652d2c9acf 100644 --- a/arch/arm/lib/copy_page.S +++ b/arch/arm/lib/copy_page.S @@ -46,4 +46,5 @@ ENTRY(copy_page) PLD( beq 2b ) ldmfd sp!, {r4, pc} @ 3 ENDPROC(copy_page) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(copy_page) diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S index 592c179112..8cd8500df9 100644 --- a/arch/arm/lib/copy_to_user.S +++ b/arch/arm/lib/copy_to_user.S @@ -101,6 +101,7 @@ WEAK(arm_copy_to_user) ENDPROC(arm_copy_to_user) ENDPROC(__copy_to_user_std) #ifndef CONFIG_UACCESS_WITH_MEMCPY +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(arm_copy_to_user) #endif diff --git a/arch/arm/lib/csumipv6.S b/arch/arm/lib/csumipv6.S index 68603b5ee5..0ba2d8d7c3 100644 --- a/arch/arm/lib/csumipv6.S +++ b/arch/arm/lib/csumipv6.S @@ -31,4 +31,5 @@ ENTRY(__csum_ipv6_magic) adcs r0, r0, #0 ldmfd sp!, {pc} ENDPROC(__csum_ipv6_magic) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__csum_ipv6_magic) diff --git a/arch/arm/lib/csumpartial.S b/arch/arm/lib/csumpartial.S index 830b20e81c..86b9aa25e1 100644 --- a/arch/arm/lib/csumpartial.S +++ b/arch/arm/lib/csumpartial.S @@ -141,4 +141,5 @@ ENTRY(csum_partial) bne 4b b .Lless4 ENDPROC(csum_partial) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(csum_partial) diff --git a/arch/arm/lib/csumpartialcopygeneric.S b/arch/arm/lib/csumpartialcopygeneric.S index 8b94d20e51..30beddf85f 100644 --- a/arch/arm/lib/csumpartialcopygeneric.S +++ b/arch/arm/lib/csumpartialcopygeneric.S @@ -10,6 +10,8 @@ #include #include +SYMBOL_CPROTO_INCLUDE() + /* * unsigned int * csum_partial_copy_xxx(const char *src, char *dst, int len, int sum, ) diff --git a/arch/arm/lib/div64.S b/arch/arm/lib/div64.S index 0c9e1c18fc..e9418ac052 100644 --- a/arch/arm/lib/div64.S +++ b/arch/arm/lib/div64.S @@ -16,6 +16,7 @@ #include #include #include +#include "voidproto.h" #ifdef __ARMEB__ #define xh r0 @@ -211,4 +212,4 @@ Ldiv0_64: UNWIND(.fnend) ENDPROC(__do_div64) -EXPORT_SYMBOL(__do_div64) +EXPORT_SYMBOL_VOIDPROTO(__do_div64) diff --git a/arch/arm/lib/getuser.S b/arch/arm/lib/getuser.S index 9d09a38e73..b755a97e53 100644 --- a/arch/arm/lib/getuser.S +++ b/arch/arm/lib/getuser.S @@ -33,6 +33,8 @@ #include #include +SYMBOL_CPROTO_INCLUDE() + ENTRY(__get_user_1) check_uaccess r0, 1, r1, r2, __get_user_bad 1: TUSER(ldrb) r2, [r0] diff --git a/arch/arm/lib/io-readsb.S b/arch/arm/lib/io-readsb.S index 3dff7a3a2a..899a690258 100644 --- a/arch/arm/lib/io-readsb.S +++ b/arch/arm/lib/io-readsb.S @@ -122,4 +122,5 @@ ENTRY(__raw_readsb) ldmfd sp!, {r4 - r6, pc} ENDPROC(__raw_readsb) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_readsb) diff --git a/arch/arm/lib/io-readsl.S b/arch/arm/lib/io-readsl.S index bfd3968232..8c88bea554 100644 --- a/arch/arm/lib/io-readsl.S +++ b/arch/arm/lib/io-readsl.S @@ -78,4 +78,5 @@ ENTRY(__raw_readsl) strb r3, [r1, #0] ret lr ENDPROC(__raw_readsl) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_readsl) diff --git a/arch/arm/lib/io-readsw-armv3.S b/arch/arm/lib/io-readsw-armv3.S index b3af3db6ca..cc07c1da87 100644 --- a/arch/arm/lib/io-readsw-armv3.S +++ b/arch/arm/lib/io-readsw-armv3.S @@ -104,4 +104,5 @@ ENTRY(__raw_readsw) ldmfd sp!, {r4, r5, r6, pc} +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_readsw) diff --git a/arch/arm/lib/io-readsw-armv4.S b/arch/arm/lib/io-readsw-armv4.S index 3c7a7a40b3..75e84cd300 100644 --- a/arch/arm/lib/io-readsw-armv4.S +++ b/arch/arm/lib/io-readsw-armv4.S @@ -130,4 +130,5 @@ ENTRY(__raw_readsw) strneb ip, [r1] ldmfd sp!, {r4, pc} ENDPROC(__raw_readsw) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_readsw) diff --git a/arch/arm/lib/io-writesb.S b/arch/arm/lib/io-writesb.S index fa36335944..1ab2e7dfa8 100644 --- a/arch/arm/lib/io-writesb.S +++ b/arch/arm/lib/io-writesb.S @@ -93,4 +93,5 @@ ENTRY(__raw_writesb) ldmfd sp!, {r4, r5, pc} ENDPROC(__raw_writesb) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_writesb) diff --git a/arch/arm/lib/io-writesl.S b/arch/arm/lib/io-writesl.S index 98ed6aec0b..4df08f5998 100644 --- a/arch/arm/lib/io-writesl.S +++ b/arch/arm/lib/io-writesl.S @@ -66,4 +66,5 @@ ENTRY(__raw_writesl) bne 6b ret lr ENDPROC(__raw_writesl) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_writesl) diff --git a/arch/arm/lib/io-writesw-armv3.S b/arch/arm/lib/io-writesw-armv3.S index 577184c082..c643c48d7c 100644 --- a/arch/arm/lib/io-writesw-armv3.S +++ b/arch/arm/lib/io-writesw-armv3.S @@ -125,4 +125,5 @@ ENTRY(__raw_writesw) strne ip, [r0] ldmfd sp!, {r4, r5, r6, pc} +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_writesw) diff --git a/arch/arm/lib/io-writesw-armv4.S b/arch/arm/lib/io-writesw-armv4.S index e335f489d1..ec8ef93e71 100644 --- a/arch/arm/lib/io-writesw-armv4.S +++ b/arch/arm/lib/io-writesw-armv4.S @@ -99,4 +99,5 @@ ENTRY(__raw_writesw) strneh ip, [r0] ret lr ENDPROC(__raw_writesw) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__raw_writesw) diff --git a/arch/arm/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S index f541bc013b..692cf3bba7 100644 --- a/arch/arm/lib/lib1funcs.S +++ b/arch/arm/lib/lib1funcs.S @@ -37,6 +37,7 @@ Boston, MA 02111-1307, USA. */ #include #include #include +#include "voidproto.h" .macro ARM_DIV_BODY dividend, divisor, result, curbit @@ -239,8 +240,8 @@ UNWIND(.fnstart) UNWIND(.fnend) ENDPROC(__udivsi3) ENDPROC(__aeabi_uidiv) -EXPORT_SYMBOL(__udivsi3) -EXPORT_SYMBOL(__aeabi_uidiv) +EXPORT_SYMBOL_VOIDPROTO(__udivsi3) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_uidiv) ENTRY(__umodsi3) UNWIND(.fnstart) @@ -259,7 +260,7 @@ UNWIND(.fnstart) UNWIND(.fnend) ENDPROC(__umodsi3) -EXPORT_SYMBOL(__umodsi3) +EXPORT_SYMBOL_VOIDPROTO(__umodsi3) #ifdef CONFIG_ARM_PATCH_IDIV .align 3 @@ -307,8 +308,8 @@ UNWIND(.fnstart) UNWIND(.fnend) ENDPROC(__divsi3) ENDPROC(__aeabi_idiv) -EXPORT_SYMBOL(__divsi3) -EXPORT_SYMBOL(__aeabi_idiv) +EXPORT_SYMBOL_VOIDPROTO(__divsi3) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_idiv) ENTRY(__modsi3) UNWIND(.fnstart) @@ -333,7 +334,7 @@ UNWIND(.fnstart) UNWIND(.fnend) ENDPROC(__modsi3) -EXPORT_SYMBOL(__modsi3) +EXPORT_SYMBOL_VOIDPROTO(__modsi3) #ifdef CONFIG_AEABI @@ -350,7 +351,7 @@ UNWIND(.save {r0, r1, ip, lr} ) UNWIND(.fnend) ENDPROC(__aeabi_uidivmod) -EXPORT_SYMBOL(__aeabi_uidivmod) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_uidivmod) ENTRY(__aeabi_idivmod) UNWIND(.fnstart) @@ -364,7 +365,7 @@ UNWIND(.save {r0, r1, ip, lr} ) UNWIND(.fnend) ENDPROC(__aeabi_idivmod) -EXPORT_SYMBOL(__aeabi_idivmod) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_idivmod) #endif diff --git a/arch/arm/lib/lshrdi3.S b/arch/arm/lib/lshrdi3.S index e408339814..b12317fe99 100644 --- a/arch/arm/lib/lshrdi3.S +++ b/arch/arm/lib/lshrdi3.S @@ -29,6 +29,7 @@ Boston, MA 02110-1301, USA. */ #include #include #include +#include "voidproto.h" #ifdef __ARMEB__ #define al r1 @@ -53,5 +54,5 @@ ENTRY(__aeabi_llsr) ENDPROC(__lshrdi3) ENDPROC(__aeabi_llsr) -EXPORT_SYMBOL(__lshrdi3) -EXPORT_SYMBOL(__aeabi_llsr) +EXPORT_SYMBOL_VOIDPROTO(__lshrdi3) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_llsr) diff --git a/arch/arm/lib/memchr.S b/arch/arm/lib/memchr.S index 44182bf686..ea6d86e195 100644 --- a/arch/arm/lib/memchr.S +++ b/arch/arm/lib/memchr.S @@ -25,4 +25,5 @@ ENTRY(memchr) 2: movne r0, #0 ret lr ENDPROC(memchr) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(memchr) diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S index 1be5b6ddf3..04be16dbbd 100644 --- a/arch/arm/lib/memcpy.S +++ b/arch/arm/lib/memcpy.S @@ -69,5 +69,9 @@ ENTRY(memcpy) ENDPROC(memcpy) ENDPROC(mmiocpy) + +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(memcpy) + +SYMBOL_CPROTO(void mmiocpy(void *, const void *, size_t)) EXPORT_SYMBOL(mmiocpy) diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S index 71dcc5400d..e10ef8024e 100644 --- a/arch/arm/lib/memmove.S +++ b/arch/arm/lib/memmove.S @@ -226,4 +226,5 @@ ENTRY(memmove) 18: backward_copy_shift push=24 pull=8 ENDPROC(memmove) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(memmove) diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S index 7b72044cba..ea797a483f 100644 --- a/arch/arm/lib/memset.S +++ b/arch/arm/lib/memset.S @@ -136,5 +136,9 @@ UNWIND( .fnstart ) UNWIND( .fnend ) ENDPROC(memset) ENDPROC(mmioset) + +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(memset) + +SYMBOL_CPROTO(extern void mmioset(void *, unsigned int, size_t)) EXPORT_SYMBOL(mmioset) diff --git a/arch/arm/lib/memzero.S b/arch/arm/lib/memzero.S index 6dec26ed5b..9e1d05c79a 100644 --- a/arch/arm/lib/memzero.S +++ b/arch/arm/lib/memzero.S @@ -136,4 +136,5 @@ UNWIND( .fnstart ) ret lr @ 1 UNWIND( .fnend ) ENDPROC(__memzero) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(__memzero) diff --git a/arch/arm/lib/muldi3.S b/arch/arm/lib/muldi3.S index b8f12388cc..2104660d54 100644 --- a/arch/arm/lib/muldi3.S +++ b/arch/arm/lib/muldi3.S @@ -13,6 +13,7 @@ #include #include #include +#include "voidproto.h" #ifdef __ARMEB__ #define xh r0 @@ -47,5 +48,5 @@ ENTRY(__aeabi_lmul) ENDPROC(__muldi3) ENDPROC(__aeabi_lmul) -EXPORT_SYMBOL(__muldi3) -EXPORT_SYMBOL(__aeabi_lmul) +EXPORT_SYMBOL_VOIDPROTO(__muldi3) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_lmul) diff --git a/arch/arm/lib/putuser.S b/arch/arm/lib/putuser.S index 11de126e2e..bb6507cd06 100644 --- a/arch/arm/lib/putuser.S +++ b/arch/arm/lib/putuser.S @@ -33,6 +33,8 @@ #include #include +SYMBOL_CPROTO_INCLUDE() + ENTRY(__put_user_1) check_uaccess r0, 1, r1, ip, __put_user_bad 1: TUSER(strb) r2, [r0] diff --git a/arch/arm/lib/setbit.S b/arch/arm/lib/setbit.S index 618fedae4b..0b51a2a905 100644 --- a/arch/arm/lib/setbit.S +++ b/arch/arm/lib/setbit.S @@ -12,4 +12,4 @@ #include "bitops.h" .text -bitop _set_bit, orr +BITOP( _set_bit, orr ) diff --git a/arch/arm/lib/strchr.S b/arch/arm/lib/strchr.S index 7301f6e604..199d092ec3 100644 --- a/arch/arm/lib/strchr.S +++ b/arch/arm/lib/strchr.S @@ -26,4 +26,5 @@ ENTRY(strchr) subeq r0, r0, #1 ret lr ENDPROC(strchr) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(strchr) diff --git a/arch/arm/lib/strrchr.S b/arch/arm/lib/strrchr.S index aaf9fd98b7..f7f261f80f 100644 --- a/arch/arm/lib/strrchr.S +++ b/arch/arm/lib/strrchr.S @@ -25,4 +25,5 @@ ENTRY(strrchr) mov r0, r3 ret lr ENDPROC(strrchr) +SYMBOL_CPROTO_INCLUDE() EXPORT_SYMBOL(strrchr) diff --git a/arch/arm/lib/testchangebit.S b/arch/arm/lib/testchangebit.S index 4becdc3a59..fb2b429ad1 100644 --- a/arch/arm/lib/testchangebit.S +++ b/arch/arm/lib/testchangebit.S @@ -12,4 +12,4 @@ #include "bitops.h" .text -testop _test_and_change_bit, eor, str +TESTOP( _test_and_change_bit, eor, str ) diff --git a/arch/arm/lib/testclearbit.S b/arch/arm/lib/testclearbit.S index 918841dcce..c9bcbdf2f2 100644 --- a/arch/arm/lib/testclearbit.S +++ b/arch/arm/lib/testclearbit.S @@ -12,4 +12,4 @@ #include "bitops.h" .text -testop _test_and_clear_bit, bicne, strne +TESTOP( _test_and_clear_bit, bicne, strne ) diff --git a/arch/arm/lib/testsetbit.S b/arch/arm/lib/testsetbit.S index 8d1b2fe9e4..7ccaaf0861 100644 --- a/arch/arm/lib/testsetbit.S +++ b/arch/arm/lib/testsetbit.S @@ -12,4 +12,4 @@ #include "bitops.h" .text -testop _test_and_set_bit, orreq, streq +TESTOP( _test_and_set_bit, orreq, streq ) diff --git a/arch/arm/lib/ucmpdi2.S b/arch/arm/lib/ucmpdi2.S index 127a91af46..a13f3c911e 100644 --- a/arch/arm/lib/ucmpdi2.S +++ b/arch/arm/lib/ucmpdi2.S @@ -13,6 +13,7 @@ #include #include #include +#include "voidproto.h" #ifdef __ARMEB__ #define xh r0 @@ -36,7 +37,7 @@ ENTRY(__ucmpdi2) ret lr ENDPROC(__ucmpdi2) -EXPORT_SYMBOL(__ucmpdi2) +EXPORT_SYMBOL_VOIDPROTO(__ucmpdi2) #ifdef CONFIG_AEABI @@ -50,7 +51,7 @@ ENTRY(__aeabi_ulcmp) ret lr ENDPROC(__aeabi_ulcmp) -EXPORT_SYMBOL(__aeabi_ulcmp) +EXPORT_SYMBOL_VOIDPROTO(__aeabi_ulcmp) #endif diff --git a/arch/arm/lib/voidproto.h b/arch/arm/lib/voidproto.h new file mode 100644 index 0000000000..4926f4f022 --- /dev/null +++ b/arch/arm/lib/voidproto.h @@ -0,0 +1,7 @@ +/* + * The gcc helper functions exported from assembly code are never + * called from C code directly, however they traditionally always had + * a prototype like void __symbol(void) for modversion. + */ +#define EXPORT_SYMBOL_VOIDPROTO(sym) \ + SYMBOL_CPROTO(void sym(void)); EXPORT_SYMBOL(sym)