From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751883AbdCNVkQ (ORCPT ); Tue, 14 Mar 2017 17:40:16 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:50797 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750846AbdCNVkO (ORCPT ); Tue, 14 Mar 2017 17:40:14 -0400 From: Arnd Bergmann To: Catalin Marinas , Will Deacon Cc: Arnd Bergmann , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] [v2] arm64: define BUG() instruction without CONFIG_BUG Date: Tue, 14 Mar 2017 22:39:21 +0100 Message-Id: <20170314213939.3874497-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:CF/y325yxWspNECOFfl5/fQIy3Ug5GOHxuYZQr3LEI9rp+r+NDd 5NCzqdXHsaF5Vu6kCDbPet4CDePxRm78mBZ+2P7L1+RYy2DzBrN8CJy508zHP9/MlBTD9Zs c3qJwhmwvZRWGQySGLb+LfjmJcQnVdTtbQKDinIrPa49l2MNunmjaXRnPdWspqSwDC5CXsi CmIdPmRtO2YKeLIoOaciA== X-UI-Out-Filterresults: notjunk:1;V01:K0:zIf6v+I5zbA=:MwAmFW1FUbM6yKL7Te61pl LE+Zqju4gq0e/05yBA/FAlGSXwvuLk0jpXVtQCdfs0Thk0I//ciNkXItivrVygIVHLZJpEe8t IQAoo/F2byG5m0TIDjJb9MvROIu59f3nwwClTg9nDQT1R7VYPy5IWcJAr5yVy2dIWS1AyfXmP nhlOboT9iY20clb2EC/A+kcu5Oajo61kVdrP7s3+lKr+Rfe8ET5VVBGKj8lmz3wIRyE4TVFXB JT0xicrPBKEih+KrcZGwvs9i1d4iNRmTHPe1+/FIPm/CVp2WQMYUO2bdsw0qWi6SR89lSS2aW EyodT/zi3eilVcLwgjbWrYlJ5hgP/ya5QUufJ290bNM5mN48rBVHBmOm7ysclp7o1YARZUxfZ WJS7UyM+IlO4FhpSwHjmURV6SKrtZq+CQo9BuSulYaQTDknwSUZ9Gjq8GTMwBmagoZnvrd8ME w+/Zuxaaa5QTcfae6as7mZ0CN9FNsH52lPgFm73kf/y8dCkmG0A5/lLT8L++KFXdiNVGlx2vf Iq4iL3UCpWTLue3Iv0pfV3+rD8ljm4HmyORzoH3vS/ayDeVxVYtNcm2aqXJzbcWXMSmLU8LXf sab/Dc8/3RvXiOaa2ssWZosNqSBGb/UuIMu0zY+3JN445f2mKphtlu2lxdggtiqw52R2dVFqu e7phCyTwkzi8gsGDBeWnZeWTx+3/Mia6mXk1+IqQnvnBMt/B7MTla0D3xxk9nvYCN990= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This mirrors commit e9c38ceba8d9 ("ARM: 8455/1: define __BUG as asm(BUG_INSTR) without CONFIG_BUG") to make the behavior of arm64 consistent with arm and x86, and avoids lots of warnings in randconfig builds, such as: kernel/seccomp.c: In function '__seccomp_filter': kernel/seccomp.c:666:1: error: no return statement in function returning non-void [-Werror=return-type] Signed-off-by: Arnd Bergmann --- Originally submitted v1 on Feb 14 as a simple addition of a few lines. v2 is a new version doing the same thing with a cleaner rewrite of the file, using three lines less, after a suggested from Will Deacon. No need to get this into v4.11 though, especially as the rewrite makes it a bit risky. Please queue this for v4.12 if you like the new version. --- arch/arm64/include/asm/bug.h | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/arch/arm64/include/asm/bug.h b/arch/arm64/include/asm/bug.h index 561190d15881..bfc6021760e5 100644 --- a/arch/arm64/include/asm/bug.h +++ b/arch/arm64/include/asm/bug.h @@ -20,9 +20,6 @@ #include -#ifdef CONFIG_GENERIC_BUG -#define HAVE_ARCH_BUG - #ifdef CONFIG_DEBUG_BUGVERBOSE #define _BUGVERBOSE_LOCATION(file, line) __BUGVERBOSE_LOCATION(file, line) #define __BUGVERBOSE_LOCATION(file, line) \ @@ -36,28 +33,37 @@ #define _BUGVERBOSE_LOCATION(file, line) #endif -#define _BUG_FLAGS(flags) __BUG_FLAGS(flags) +#ifdef CONFIG_GENERIC_BUG -#define __BUG_FLAGS(flags) asm volatile ( \ +#define __BUG_ENTRY(flags) \ ".pushsection __bug_table,\"a\"\n\t" \ ".align 2\n\t" \ "0: .long 1f - 0b\n\t" \ _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ ".short " #flags "\n\t" \ ".popsection\n" \ - \ - "1: brk %[imm]" \ - :: [imm] "i" (BUG_BRK_IMM) \ -) + "1: " +#else +#define __BUG_ENTRY(flags) "" +#endif + +#define __BUG_FLAGS(flags) \ + asm volatile ( \ + __BUG_ENTRY(0) \ + "brk %[imm]" :: [imm] "i" (BUG_BRK_IMM) \ + ); -#define BUG() do { \ - _BUG_FLAGS(0); \ - unreachable(); \ +#define _BUG_FLAGS(flags) __BUG_FLAGS(flags) + +#define BUG() do { \ + __BUG_FLAGS(0); \ + unreachable(); \ } while (0) -#define __WARN_TAINT(taint) _BUG_FLAGS(BUGFLAG_TAINT(taint)) +#define __WARN_TAINT(taint) \ + __BUG_FLAGS(BUGFLAG_TAINT(taint)) -#endif /* ! CONFIG_GENERIC_BUG */ +#define HAVE_ARCH_BUG #include -- 2.9.0