From patchwork Tue Mar 7 17:24:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 9609525 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 77DD26046A for ; Tue, 7 Mar 2017 17:26:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 82B1628530 for ; Tue, 7 Mar 2017 17:26:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7726B28560; Tue, 7 Mar 2017 17:26:48 +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=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 8A4C228530 for ; Tue, 7 Mar 2017 17:26:47 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1clIqI-0004Q4-7e; Tue, 07 Mar 2017 17:24:10 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1clIqH-0004Py-05 for xen-devel@lists.xenproject.org; Tue, 07 Mar 2017 17:24:09 +0000 Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id 9C/34-04270-8BCEEB85; Tue, 07 Mar 2017 17:24:08 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrELMWRWlGSWpSXmKPExsVyuP0Ov+72N/s iDNb/krH4vmUykwOjx+EPV1gCGKNYM/OS8isSWDPuXX3KVHBfseLM3peMDYwdsl2MnBwSAkYS byf+Y+pi5OIQEljIKHGnfRkLSIJNQFGi5ew1JhBbREBJYvGXj+wgNrPAWhaJg3+sQWxhAUuJm X/XsYHYLAKqEvvubQHr5RUwlnj3qIsFYoG8xKJNM8BsTgE9iTvfv4HNFBLQlTix6BLTBEbuBY wMqxg1ilOLylKLdI0M9ZKKMtMzSnITM3N0DQ2M9XJTi4sT01NzEpOK9ZLzczcxAv1bz8DAuIO xZ6/fIUZJDiYlUd7U+H0RQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4H3UC5QSLUtNTK9Iyc4CB BpOW4OBREuFlAEnzFhck5hZnpkOkTjHqcsyZvfsNkxBLXn5eqpQ472GQIgGQoozSPLgRsKC/x CgrJczLyMDAIMRTkFqUm1mCKv+KUZyDUUmY9wrIFJ7MvBK4Ta+AjmACOkLbdS/IESWJCCmpBk aLiczGLtdcvV6kTuoWSvM8y39GJiKRx/LlrLvGewz4z62P/Hp8S/7jOytDPA293A26bzVfYj3 rtp/5xXaH227fb9hZTbdLUZob3X7w/uS6zjhV1xOqxns55n2OYEppOmvId/fu/9R1XZO3HlZd nG+UPaVKUvejWcdyLukCpjvlJ2baXTK7Hq/EUpyRaKjFXFScCAAm+JGOdQIAAA== X-Env-Sender: jslaby@suse.cz X-Msg-Ref: server-12.tower-31.messagelabs.com!1488907447!72276900!1 X-Originating-IP: [195.135.220.15] X-SpamReason: No, hits=0.3 required=7.0 tests=MAILTO_TO_SPAM_ADDR, UPPERCASE_25_50 X-StarScan-Received: X-StarScan-Version: 9.2.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 63199 invoked from network); 7 Mar 2017 17:24:07 -0000 Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by server-12.tower-31.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted SMTP; 7 Mar 2017 17:24:07 -0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id B3C13AAB9; Tue, 7 Mar 2017 17:24:06 +0000 (UTC) From: Jiri Slaby To: Ingo Molnar Date: Tue, 7 Mar 2017 18:24:04 +0100 Message-Id: <20170307172404.27374-1-jslaby@suse.cz> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170307082750.GA1695@gmail.com> References: <20170307082750.GA1695@gmail.com> Cc: Juergen Gross , Len Brown , x86@kernel.org, Peter Zijlstra , linux-pm@vger.kernel.org, Linus Torvalds , hpa@zytor.com, "Rafael J. Wysocki" , linux-kernel@vger.kernel.org, mingo@redhat.com, Thomas Gleixner , Pavel Machek , jpoimboe@redhat.com, xen-devel@lists.xenproject.org, Boris Ostrovsky , Jiri Slaby , Andrew Morton Subject: [Xen-devel] [RFC] linkage: new macros for functions and data X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP SYM_LOCAL_ALIAS_START -- use where there are two local names for one code SYM_ALIAS_START -- use where there are two global names for one code SYM_LOCAL_FUNC_START -- use for local functions SYM_FUNCTION_START -- use for global functions SYM_WEAK_FUNC_START -- use for weak functions SYM_ALIAS_END -- the end of LOCALALIASed or ALIASed code SYM_FUNCTION_END -- the end of SYM_LOCAL_FUNC_START, SYM_FUNCTION_START, SYM_WEAK_FUNC_START, ... SYM_DATA_START -- global data symbol SYM_DATA_END -- the end of SYM_DATA_START symbol Signed-off-by: Jiri Slaby Cc: Andrew Morton Cc: Boris Ostrovsky Cc: hpa@zytor.com Cc: Ingo Molnar Cc: jpoimboe@redhat.com Cc: Juergen Gross Cc: Len Brown Cc: Linus Torvalds Cc: linux-kernel@vger.kernel.org Cc: linux-pm@vger.kernel.org Cc: mingo@redhat.com Cc: Pavel Machek Cc: Peter Zijlstra Cc: "Rafael J. Wysocki" Cc: Thomas Gleixner Cc: xen-devel@lists.xenproject.org Cc: x86@kernel.org --- So this is what I have ATM. include/linux/linkage.h | 87 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 15 deletions(-) diff --git a/include/linux/linkage.h b/include/linux/linkage.h index a6a42dd02466..79f634a57466 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h @@ -78,33 +78,90 @@ #define ALIGN __ALIGN #define ALIGN_STR __ALIGN_STR -#ifndef ENTRY -#define ENTRY(name) \ - .globl name ASM_NL \ +#ifndef ENTRY /* deprecated, use SYM_FUNCTION_START */ +#define ENTRY(name) SYM_FUNCTION_START(name) +#endif +#endif /* LINKER_SCRIPT */ + +/* === code annotations === */ + +/* SYM_LOCAL_ALIAS_START -- use where there are two local names for one code */ +#ifndef SYM_LOCAL_ALIAS_START +#define SYM_LOCAL_ALIAS_START(name) \ ALIGN ASM_NL \ name: #endif -#endif /* LINKER_SCRIPT */ -#ifndef WEAK -#define WEAK(name) \ +/* SYM_ALIAS_START -- use where there are two global names for one code */ +#ifndef SYM_ALIAS_START +#define SYM_ALIAS_START(name) \ + .globl name ASM_NL \ + SYM_LOCAL_ALIAS_START(name) +#endif + +/* + * so far the same as SYM_LOCAL_ALIAS_START, but we will need to distinguish + * them later + */ +/* SYM_LOCAL_FUNC_START -- use for local functions */ +#ifndef SYM_LOCAL_FUNC_START +#define SYM_LOCAL_FUNC_START(name) \ + SYM_LOCAL_ALIAS_START(name) +#endif + +/* SYM_FUNCTION_START -- use for global functions */ +#ifndef SYM_FUNCTION_START +#define SYM_FUNCTION_START(name) \ + .globl name ASM_NL \ + SYM_LOCAL_FUNC_START(name) +#endif + +/* SYM_WEAK_FUNC_START -- use for weak functions */ +#ifndef SYM_WEAK_FUNC_START +#define SYM_WEAK_FUNC_START(name) \ .weak name ASM_NL \ name: #endif -#ifndef END -#define END(name) \ - .size name, .-name +/* SYM_ALIAS_END -- the end of LOCALALIASed or ALIASed code */ +#ifndef SYM_ALIAS_END +#define SYM_ALIAS_END(name) \ + .type name, @function ASM_NL \ + SYM_DATA_END(name) #endif /* If symbol 'name' is treated as a subroutine (gets called, and returns) - * then please use ENDPROC to mark 'name' as STT_FUNC for the benefit of - * static analysis tools such as stack depth analyzer. + * then please use SYM_FUNCTION_END to mark 'name' as STT_FUNC for the benefit + * of static analysis tools such as stack depth analyzer. */ -#ifndef ENDPROC -#define ENDPROC(name) \ - .type name, @function ASM_NL \ - END(name) +/* + * SYM_FUNCTION_END -- the end of SYM_LOCAL_FUNC_START, SYM_FUNCTION_START, + * SYM_WEAK_FUNC_START, ... + */ +#ifndef SYM_FUNCTION_END +#define SYM_FUNCTION_END(name) \ + SYM_ALIAS_END(name) /* the same as for SYM_LOCAL_FUNC_START */ +#endif + +#ifndef WEAK /* deprecated, use SYM_WEAK_FUNC_START */ +#define WEAK(name) SYM_WEAK_FUNC_START(name) +#endif + +/* === data annotations === */ + +/* SYM_DATA_START -- global data symbol */ +#ifndef SYM_DATA_START +#define SYM_DATA_START(name) SYM_FUNCTION_START(name) +#endif + +/* SYM_DATA_END -- the end of SYM_DATA_START symbol */ +#ifndef SYM_DATA_END +#define SYM_DATA_END(name) \ + .size name, .-name +#endif + +#ifndef END /* deprecated, use SYM_DATA_END */ +#define END(name) SYM_DATA_END(name) #endif #endif