From patchwork Wed Oct 17 09:04:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 10645153 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 40CAC17D2 for ; Wed, 17 Oct 2018 09:06:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 32E282ABC4 for ; Wed, 17 Oct 2018 09:06:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 271922AC3C; Wed, 17 Oct 2018 09:06:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7BB0D2ABC4 for ; Wed, 17 Oct 2018 09:06:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=cydHM+/kjoebvSls9c1XSmUzZt3ir2cstMY2b/+iNC4=; b=ErVLc2n7JYVbYpnpONvZ9mu47f 8tqURHEtIcDSkljV/vg3xk6eJC5oukrQcHgbhqTglXBUtuPsaVnLGqQliZabmQ0fdUo8iGnP4yZpa wbG2EQ76zhyQ+Ul1HGm/sgBY6VT51GlAAHbQ3GY/Ibh875s22gXqevBKh71Eo3Tur0ot3+i4i+TMz zIYu4rosuCY/ibNUSGrOnvdwR1p6AtmkgmIxvLb/UWyDn/hNZYYLzJ+fEEjz9vtQ3zRvXvsCupMTk oLGL4xFMzFoUQCNTa2n+wrHup9VNK0OPMT6cmbzozUiDPrJ7cTqNa8k1UPFPdvPJ0c4ndK+1yqtqd 3qMvDM6g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gChmO-0007zp-Lv; Wed, 17 Oct 2018 09:06:12 +0000 Received: from mout.kundenserver.de ([212.227.126.131]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gChkx-0006DL-G0 for linux-arm-kernel@lists.infradead.org; Wed, 17 Oct 2018 09:06:08 +0000 Received: from wuerfel.lan ([109.193.40.16]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.129]) with ESMTPA (Nemesis) id 1MavF5-1ffHbm01Ih-00cQ44; Wed, 17 Oct 2018 11:04:25 +0200 Received: from wuerfel.lan ([109.193.40.16]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.129]) with ESMTPA (Nemesis) id 1MavF5-1ffHbm01Ih-00cQ44; Wed, 17 Oct 2018 11:04:25 +0200 From: Arnd Bergmann To: linux-arm-kernel@lists.infradead.org Subject: [PATCH] [ALTERNATIVE] ARM: fix copypage functions for clang Date: Wed, 17 Oct 2018 11:04:17 +0200 Message-Id: <20181017090417.833924-1-arnd@arndb.de> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: X-Provags-ID: V03:K1:wE3FaQ+yc4pwSsDb2NlwO9LLQ1ELz82dI2Rvv5Xrw0zOIiAf2N9 ifBJXOMrMV+hFejpLtA1kbJbqPWveuSLuqbsjkbUBZH3YftQgHkBUEvJJ+kGk2qU946S5vb JEuzl0wIIR8HxQUN+vAdTXYEf/+GD4bubSONu3ZjmZTKhhdujfWP1TpaLfAQnpKfsu2cMZf 67xLlCgGeifxY0S7gS8tw== X-UI-Out-Filterresults: notjunk:1;V01:K0:AJfKk7AcN8s=:VgnMTMoeDfCNXdgBzvXitZ YeudGOFr7VhsHJ72GsAMSrwQQcpQDahYYpM+Q47CNeq+wtJFGjR6N8ZRQWNtEcIvsRgAHhkN4 2bU9BNMAkLrWyWWhc782QNcjkl9Pqkz+FjfDQz9uGumsrBPiPsWqKxT5K4FKdPdLcBZbfSpHr K8bCztjKKYw8lUzhEAfUM5JV3024AXM5a5bZyChX+6iDnBudqmOcgfyvdSSolkkBvvosVNUVd IRcJuW+377z2lrNU9dy7k0IWQ9igvYp0KBRychn5BsocmgR9S9VH1+MRNRA/myvih9U+iVXKe zIy+kcFJHW2PbQH/vgGqzWPd1vs/O2pMFAKSa26QwoHGzvHYUbcYNFPe4JGOB0/VLkQsYCnJX nSFFpl74IJmikt2wXsQ8a4PKe7baRHRFMWzMozYMtpBbaf5ks6CDJX5edP3a64vdOJ6SL23sr ciUp8+bOzJPdm8B19mAIGJl4+ga8SjObDj1kvZ4T3MlExEfeeprt7x1g1R+emJCeeFNnYA664 4XpWBSJNK/wRvL3KnbECOi8/vwmbIWdDbWx9jwSKhSWABk+xAunPd5ro1A4Vs+rmLyZ4L3Js1 xqEaQfjT7WIFgFnxbMsDDO5rQtNYQgFANgkVaZC5cTzoxNsvIcNHMFj6m9T3z53JCk8zRnyIw mUwZgLLd4JSb5rEi+dh5FUQ1C3P0rJEsUuuC4AcxYMGWRbwJEZoVFRpk5I1jeSJKVLd8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181017_020443_863568_8729B340 X-CRM114-Status: GOOD ( 12.03 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Arnd Bergmann , roman@advem.lv, linus.walleij@linaro.org, linux-kernel@vger.kernel.org, stefan@agner.ch, linux@armlinux.org.uk, joel@jms.id.au, ulli.kroll@googlemail.com MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP clang points out that a naked function should not pass the function arguments into the inline assembly: arch/arm/mm/copypage-feroceon.c:67:9: error: parameter references not allowed in naked functions arch/arm/mm/copypage-v4mc.c:64:9: error: parameter references not allowed in naked functions arch/arm/mm/copypage-v4wb.c:47:9: error: parameter references not allowed in naked functions arch/arm/mm/copypage-v4wt.c:43:9: error: parameter references not allowed in naked functions arch/arm/mm/copypage-xsc3.c:70:9: error: parameter references not allowed in naked functions arch/arm/mm/copypage-xscale.c:84:9: error: parameter references not allowed in naked functions The constraints were originally added in commit 9a40ac86152c ("ARM: 6164/1: Add kto and kfrom to input operands list.") as a gcc-4.5 workaround. Another workaround for the same problem was added in commit 9c695203a7dd ("compiler-gcc.h: gcc-4.5 needs noclone and noinline on __naked functions") and should have obsoleted the first one. That workaroud was subsequently reverted in commit d124b44f09ca ("Compiler Attributes: naked was fixed in gcc 4.6") as we raised the minimum compiler level to gcc-4.6. Remove the extraneous references and use the register numbers consistently as required by clang. Signed-off-by: Arnd Bergmann --- I've used this on my randconfig build setup, and it makes all configurations build without warnings, but I have not done any runtime testing on it. --- arch/arm/mm/copypage-feroceon.c | 4 ++-- arch/arm/mm/copypage-v4mc.c | 26 +++++++++++++------------- arch/arm/mm/copypage-v4wb.c | 4 ++-- arch/arm/mm/copypage-v4wt.c | 4 ++-- arch/arm/mm/copypage-xsc3.c | 6 +++--- arch/arm/mm/copypage-xscale.c | 4 ++-- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/arch/arm/mm/copypage-feroceon.c b/arch/arm/mm/copypage-feroceon.c index 49ee0c1a7209..e69bf2f15f32 100644 --- a/arch/arm/mm/copypage-feroceon.c +++ b/arch/arm/mm/copypage-feroceon.c @@ -18,7 +18,7 @@ feroceon_copy_user_page(void *kto, const void *kfrom) { asm("\ stmfd sp!, {r4-r9, lr} \n\ - mov ip, %2 \n\ + mov ip, %0 \n\ 1: mov lr, r1 \n\ ldmia r1!, {r2 - r9} \n\ pld [lr, #32] \n\ @@ -64,7 +64,7 @@ feroceon_copy_user_page(void *kto, const void *kfrom) mcr p15, 0, ip, c7, c10, 4 @ drain WB\n\ ldmfd sp!, {r4-r9, pc}" : - : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE)); + : "I" (PAGE_SIZE)); } void feroceon_copy_user_highpage(struct page *to, struct page *from, diff --git a/arch/arm/mm/copypage-v4mc.c b/arch/arm/mm/copypage-v4mc.c index 0224416cba3c..5c70e48ad833 100644 --- a/arch/arm/mm/copypage-v4mc.c +++ b/arch/arm/mm/copypage-v4mc.c @@ -45,23 +45,23 @@ mc_copy_user_page(void *from, void *to) { asm volatile( "stmfd sp!, {r4, lr} @ 2\n\ - mov r4, %2 @ 1\n\ - ldmia %0!, {r2, r3, ip, lr} @ 4\n\ -1: mcr p15, 0, %1, c7, c6, 1 @ 1 invalidate D line\n\ - stmia %1!, {r2, r3, ip, lr} @ 4\n\ - ldmia %0!, {r2, r3, ip, lr} @ 4+1\n\ - stmia %1!, {r2, r3, ip, lr} @ 4\n\ - ldmia %0!, {r2, r3, ip, lr} @ 4\n\ - mcr p15, 0, %1, c7, c6, 1 @ 1 invalidate D line\n\ - stmia %1!, {r2, r3, ip, lr} @ 4\n\ - ldmia %0!, {r2, r3, ip, lr} @ 4\n\ + mov r4, %0 @ 1\n\ + ldmia r0!, {r2, r3, ip, lr} @ 4\n\ +1: mcr p15, 0, r1, c7, c6, 1 @ 1 invalidate D line\n\ + stmia r1!, {r2, r3, ip, lr} @ 4\n\ + ldmia r0!, {r2, r3, ip, lr} @ 4+1\n\ + stmia r1!, {r2, r3, ip, lr} @ 4\n\ + ldmia r0!, {r2, r3, ip, lr} @ 4\n\ + mcr p15, 0, r1, c7, c6, 1 @ 1 invalidate D line\n\ + stmia r1!, {r2, r3, ip, lr} @ 4\n\ + ldmia r0!, {r2, r3, ip, lr} @ 4\n\ subs r4, r4, #1 @ 1\n\ - stmia %1!, {r2, r3, ip, lr} @ 4\n\ - ldmneia %0!, {r2, r3, ip, lr} @ 4\n\ + stmia r1!, {r2, r3, ip, lr} @ 4\n\ + ldmneia r0!, {r2, r3, ip, lr} @ 4\n\ bne 1b @ 1\n\ ldmfd sp!, {r4, pc} @ 3" : - : "r" (from), "r" (to), "I" (PAGE_SIZE / 64)); + : "I" (PAGE_SIZE / 64)); } void v4_mc_copy_user_highpage(struct page *to, struct page *from, diff --git a/arch/arm/mm/copypage-v4wb.c b/arch/arm/mm/copypage-v4wb.c index 067d0fdd630c..7ea9cf07bd5c 100644 --- a/arch/arm/mm/copypage-v4wb.c +++ b/arch/arm/mm/copypage-v4wb.c @@ -27,7 +27,7 @@ v4wb_copy_user_page(void *kto, const void *kfrom) { asm("\ stmfd sp!, {r4, lr} @ 2\n\ - mov r2, %2 @ 1\n\ + mov r2, %0 @ 1\n\ ldmia r1!, {r3, r4, ip, lr} @ 4\n\ 1: mcr p15, 0, r0, c7, c6, 1 @ 1 invalidate D line\n\ stmia r0!, {r3, r4, ip, lr} @ 4\n\ @@ -44,7 +44,7 @@ v4wb_copy_user_page(void *kto, const void *kfrom) mcr p15, 0, r1, c7, c10, 4 @ 1 drain WB\n\ ldmfd sp!, {r4, pc} @ 3" : - : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64)); + : "I" (PAGE_SIZE / 64)); } void v4wb_copy_user_highpage(struct page *to, struct page *from, diff --git a/arch/arm/mm/copypage-v4wt.c b/arch/arm/mm/copypage-v4wt.c index b85c5da2e510..c742ab24efd6 100644 --- a/arch/arm/mm/copypage-v4wt.c +++ b/arch/arm/mm/copypage-v4wt.c @@ -25,7 +25,7 @@ v4wt_copy_user_page(void *kto, const void *kfrom) { asm("\ stmfd sp!, {r4, lr} @ 2\n\ - mov r2, %2 @ 1\n\ + mov r2, %0 @ 1\n\ ldmia r1!, {r3, r4, ip, lr} @ 4\n\ 1: stmia r0!, {r3, r4, ip, lr} @ 4\n\ ldmia r1!, {r3, r4, ip, lr} @ 4+1\n\ @@ -40,7 +40,7 @@ v4wt_copy_user_page(void *kto, const void *kfrom) mcr p15, 0, r2, c7, c7, 0 @ flush ID cache\n\ ldmfd sp!, {r4, pc} @ 3" : - : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64)); + : "I" (PAGE_SIZE / 64)); } void v4wt_copy_user_highpage(struct page *to, struct page *from, diff --git a/arch/arm/mm/copypage-xsc3.c b/arch/arm/mm/copypage-xsc3.c index 03a2042aced5..9944bdb4721d 100644 --- a/arch/arm/mm/copypage-xsc3.c +++ b/arch/arm/mm/copypage-xsc3.c @@ -34,8 +34,8 @@ xsc3_mc_copy_user_page(void *kto, const void *kfrom) { asm("\ stmfd sp!, {r4, r5, lr} \n\ - mov lr, %2 \n\ - \n\ + mov lr, %0 \n\ + \n\ pld [r1, #0] \n\ pld [r1, #32] \n\ 1: pld [r1, #64] \n\ @@ -67,7 +67,7 @@ xsc3_mc_copy_user_page(void *kto, const void *kfrom) \n\ ldmfd sp!, {r4, r5, pc}" : - : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64 - 1)); + : "I" (PAGE_SIZE / 64 - 1)); } void xsc3_mc_copy_user_highpage(struct page *to, struct page *from, diff --git a/arch/arm/mm/copypage-xscale.c b/arch/arm/mm/copypage-xscale.c index 97972379f4d6..ef52a052d9bb 100644 --- a/arch/arm/mm/copypage-xscale.c +++ b/arch/arm/mm/copypage-xscale.c @@ -45,7 +45,7 @@ mc_copy_user_page(void *from, void *to) */ asm volatile( "stmfd sp!, {r4, r5, lr} \n\ - mov lr, %2 \n\ + mov lr, %0 \n\ pld [r0, #0] \n\ pld [r0, #32] \n\ pld [r1, #0] \n\ @@ -81,7 +81,7 @@ mc_copy_user_page(void *from, void *to) beq 2b \n\ ldmfd sp!, {r4, r5, pc} " : - : "r" (from), "r" (to), "I" (PAGE_SIZE / 64 - 1)); + : "I" (PAGE_SIZE / 64 - 1)); } void xscale_mc_copy_user_highpage(struct page *to, struct page *from,