From patchwork Wed Aug 17 11:46:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 660074 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3sDnYg6wMCz9t0m for ; Wed, 17 Aug 2016 21:48:39 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=rLtbyjZZ; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type; q=dns; s=default; b=bYed9 9JS+5GoOSrBdaBz63P1vr4i9ZqblmRnN0HAhlkfkP8p2TQCzxNZul+X/lvJO7Od7 qICg1PwEk0LOd6KfVl/2VBvvOU4XU7SqucXpsQAALQc+xpiX3MXQjdBKAZG6FgzM PLinkM/LLDNxkcxES5j1ZdQRcqcZdqXJJMtbB0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type; s=default; bh=LzrJBp4OtX7 kBfoAqoSPGR1tfM4=; b=rLtbyjZZDyH0SV+EQn/R4F3jwBNAjSar1WR7l+TxwCc 0IOh0V+B0keR/sYVTMdZsk6RyxapQ7AIDxDpq04nFMWiiuaaARRHOsPpRIiB8GKy sX3zeAxpqJfQqj5EHIsglJnkSfyy+Qy0i9nLnVmJSc2jlo6jt/Cv0JkZnlaR8Tjc = Received: (qmail 107425 invoked by alias); 17 Aug 2016 11:48:26 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 107018 invoked by uid 89); 17 Aug 2016 11:48:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL, BAYES_00, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=no version=3.3.2 spammy=distinguished, 1317, 183, 7, 131, 7 X-HELO: NAM03-CO1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , Andrew Pinski Subject: [PATCH 08/18] arm64: ilp32: add is_ilp32_compat_{task, thread} and TIF_32BIT_AARCH64 Date: Wed, 17 Aug 2016 14:46:33 +0300 Message-ID: <1471434403-25291-9-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1471434403-25291-1-git-send-email-ynorov@caviumnetworks.com> References: <1471434403-25291-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM3PR03CA012.eurprd03.prod.outlook.com (10.141.191.140) To CY1PR07MB2247.namprd07.prod.outlook.com (10.164.112.149) X-MS-Office365-Filtering-Correlation-Id: d3e3f13a-bc5b-49ee-0318-08d3c6945baf X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2247; 2:hugQHyWAQdVV2w+pa6S5vC9bdzHHzJ0aJU8G0voKWHpo+VITuBNNG7aj5kFyo12n2/CG49rgaLkx94zlUAFxJDdEr3KYH4DNLIqxpghAtyvEsAhGOj9/wWlD7a6w9PSEOcjkbzdbhFcX/OzqQ/BCAluLJsltOPsdaSCf+o3llun0H2Gt50AjHXPC0h8THsgj; 3:MkuevoHoWrxAagnbCVuZCHY3KHh8pNeJAbUWLw7DqY4syiuOq+kaCOnM2KMWNc/iW860p4lJN6KM3JyALDOPm2OCvtDPah4/cbQYoVeUtxs04b9DHteiZbU+yNsjVDEO X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2247; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2247; 25:jHVe3ox8u/HuloNi4GeoMcsx0F1xZacNSnrdM3xE+gtx/T/9xZyRIwPpQR2flVtAigHRMQzWR921gD/m+kchQZCvhv8GMFdPymLFcYDYjTkQmRh6QRheVaTAWkeLOa/Xwr+4gwlexV/03r5BW2NFjWfg4wADtEDtwk7DYdMsRHtpi5TgNJVyKSJmOhboGZbI9tdA89Ftwn0a1SkSsN7vWKcFHeM/ALcvUnN/A4jHCKRSgIwmifuexanYy/K/hI/YAGBAKk7pe+ei4eNrS4YIp3kCJjpkjH9QkhzuwjjWUoO0eo/8MQSPg2/ZWMC+Jo7ER0CtF+jMo3uSzhTfWNNKABTb0Ko0Pq5CZZNu3zcmUdI9tBDIycoiUTQ2i33DVivS26bslqIiG/Ytz2YZywceL8OZ05d5b1B4cIOuxLQBQLpyTSQIvXw+LH7kQvZlK/prbgFsSsR7xcBEbREa5OZjj3EiRRmqg7a78v7Lc3kAo2ETuckqg7HX8uWRDQFaX7hx/OZcFMXrycgTM8IngFTpFnaA8TA+5M4o5ebodjGST0jnR/B7699QBIP6pq3mWQwotouyJbNNDPeu5M09hD/PNbpD0FYCzK1C15s1wq+1ViZt8qJ7chhVpgW65NEC1cwU55rH/X93bJpJlpC++HFQdEC7WiN1XMy5qmO4RQDr+/zQ+2f++PAzgmJgo+QLf/l9XmXsMZZ1Eg+catW3caw6pxnqkfmJEkYm+YUVpHqZf7b1o54X2sgNOwrjZS9TcvWxIBv0/gWXlcmpgCryArA6UA== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2247; 31:M9DtK3vjmjdCu2t87FODPBbFgdjK6nAnn/gwStX5DGgF0omQO0qYkqZpRqTRw6FGXHMizbTDo0NqO6O4PWFYR3ChBnQIpxkL+sJ8/vcLdla91AfoxF6M9KoXKoq0ZAQqiFF1USyCo5iWn1GvTK239CBcQlEq6mSoxY9ieWjND9wWpcn+Q4YxM0XHpPe99epJDSwbKgu1di/Pseqvbha68qkRdRWZJ/rrfZj3Cc3VhAM=; 20:Wz/o3uJ3y5SN7dLsl71iXvZQbOBFQ4pb5gyfeSvcSBNbBvnEkRNLll9upokGjFDAaBhmFPJK3RSnSpMRH/z3c06+eRPBGsA1AEws/r3mxGIru6L0layNec4iG5fBStWiNw0ZJn9MSU2AXZc7KBe51Fb4Dyoud8f7/CXGd+E45HPrunkw2weWsQ4W7+IdyFJFXYZxKVngj9/NnAulsWZ68PzI4+DiTRrBFgKXlsNXqTcUlkWJ9lfnQtvMpsRtZmuWG4QgZz8WgnwMdIIoLmk2HHoPf7YQR30swCH9cpI4ZbMcS7dJgm10efFEog+TloAa280oMxI2rZwOBi9HuaJPPwP4pntjiwdw0ebGc3cf9vCywYAQNPNAY6TIbQMDxf570Qqs+cfj8QLbuise9vELzENQgMneC1iIdu4OH68oCqjjGmkY7v4J1AMxH2Cn94naHB4elbLSVrqBn3Vy72dlBlM2t1dQ3M6vBfhemi3fzFCubgo4FObj+imXcI4iL9I2Ybu1cWGKVrodOPs3F8FTVC8Rwa03HyNeq0ZICzYqcD60ww1KlFg1x1SzuKiC423cP7pL/xlvv3TbJDgsw4K7c0BCY4B9D7P4yxJlqVqmAHM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046); SRVR:CY1PR07MB2247; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2247; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2247; 4:ClST+34wKZ1uuzUH6Iwc1SJ6K4TgnJtrOVXq1V5+NKY8rLP9f4NjRg3RO5BLFOz6v9YXmbx9H4YwBQ7PIQcUFRDjrxmaTZsk2YX0NGO6YX/TZF1nYZsn6rTmHiiHFpFdzJlHTr88ycjAko1WfwKRDTtGk+u/OCn1YvyGH/l4cbZyl3++sszv/4T0/7YPSkytOZo7SxMyfEilf1eLvF5+d24bHr1T9KAAvxNEal+VJK8/jr2ce7a0yMZQPL289keUOuDrF2K1g0NFBXe5IyjxG+B56nUi8JzaoLE0j7LShI0bisYCBuqjutrFj23puE5NtwGYQ1+9lUPrBvrN8NQdLKBVREMlHIL49fABXqtfEL31a0qrvCzYpjU7B04eGDt0d+9XWpqWMuB7y9OIuqksfA== X-Forefront-PRVS: 0037FD6480 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(199003)(189002)(81156014)(50466002)(36756003)(50986999)(81166006)(586003)(76176999)(8676002)(47776003)(66066001)(7416002)(6116002)(3846002)(48376002)(50226002)(92566002)(2201001)(77096005)(229853001)(2950100001)(305945005)(42186005)(97736004)(105586002)(68736007)(5001770100001)(76506005)(33646002)(106356001)(7846002)(7736002)(2906002)(107886002)(189998001)(101416001)(19580405001)(4001430100002)(5003940100001)(19580395003)(4326007)(15760500001)(142933001)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2247; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR07MB2247; 23:qt59DkMMOqrFuKuyD+3hZXsItmDrYJCsC82N/9mXI?= =?us-ascii?Q?9dkbOynJDNtYbQfgfPpt96cO0fr8vtUW8HbtWAec8+M8r03gkWnnM4r1fyuM?= =?us-ascii?Q?BRmxVAhFp+hvEJEXxlq+guLhI5CqVHC7NjqSQAF/Lf+W+TErQenYnDdcMWM2?= =?us-ascii?Q?AaxqZbN5XCcyrIDhlO4CajU7K5oxhP/2tsyfWrJwJNp9ZOxD9xigu0up9HuH?= =?us-ascii?Q?S1u4vh5c4LqY8Fs/pml8SYWQgzZDKfTprywIwosHHQ6Tc9FiDvGmQMhtmkNQ?= =?us-ascii?Q?wpxDQbvOLevYPx7zZMYex2HFXdJV6viblJTkWzmVctBytDtJAoObJRcXdbrg?= =?us-ascii?Q?YGQkQh5BS+haFPk+fU2vEHfmpid23oDPLVDW2WNKm52pmfgOGAUkciCDHWGA?= =?us-ascii?Q?5fKxGAHgUhuLOQeyIRFSfib17MEi3Zp3wqH4dJk/l93jhe9OsR9WBU96LyIx?= =?us-ascii?Q?FFpXncHVeDQpHI4v90RtouVe4Nd290irVR440JWEKDDVhJw6s+27/9xFX6v9?= =?us-ascii?Q?kdtdwNMlyWS6OiTRI0RqmpzIWEZmZmRstOnW5C/hO1+Ns9QwXJdXuhPHwit3?= =?us-ascii?Q?NZ91IY+A1IhvOGFDS8Ykeu1y9Wh4LEB513s+b2KuG8mPlb5vDBDQBCq+dsP8?= =?us-ascii?Q?7ZTE7uLKN3/djaVIISWtZld5N2/ujzeQ1Gi9mPwjSHLNGMSnKLt2a8IWe9bi?= =?us-ascii?Q?xw2QyQmPzWm5vsDrigY+0sr+7WHO6PMyljMLvLPSFICU0a3AxjVkrpXdAeYM?= =?us-ascii?Q?G95tmN0YvMLluVwv4tmQDFtIuHWThC+IK2vItAy1yIGRYDiI4as9zFQzezHU?= =?us-ascii?Q?6tXqXlwFlHlqM+UmO/sDFgqd/G/ICzEe6XsuBjOGiXaEZ+FnP6R0GFwQVnM8?= =?us-ascii?Q?OzHsYL9dZu2ecRJhGqtSmC/p05WDkF7u1jzZ1LWuZ8cxQzwSaMwqntDDrbaT?= =?us-ascii?Q?aVmlFEeQ0ioDZ+exiyBh5No9sYL5KxnbSIJ46dUl7yVq2uJifzS6qGxO5AXP?= =?us-ascii?Q?bFeMxL5dgcAg20TzEi5AiyOh52DNjr2iOKa971P83/h3lWTv2JGPHuj1fX0T?= =?us-ascii?Q?mP/2Ezy5W6lejiXT4BctgyRjzjdd7G28rHFlbZeSp0sC5JcPjcirLngTZYpx?= =?us-ascii?Q?vrl3owANDl/k2Emqk+04c3PMxIWSvl0jx5mhhC2bsQvLy3u2rscP6bVNE6vi?= =?us-ascii?Q?lvkQgqX2O40GbAECIJvaZyk0FW/KveV5l1/R1F2g68/LIa/nBOvWtiPrw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2247; 6:ti6/24ZGmJzeftal+oKqokU9Rf4KfWJCRvkQWDFB0b4s5TWWKT7K9paVKvAK4/QJLUOc067OHdApsVfAo3KAql2uor5A1I7PXulgCZKqvgGy/62pIpyX/71X/GWrWh/tLoWS417uFgPqPeM2I4JmYTNHXFkfhA1QbiCQJL+UoewwvDTKGY5jo1ZjS03jitSP4teEAaXFCz1UTOaGYxm3FbtWAB3NyCqYOPcl0tEkvfAovqsGIDhkG76/WmWU9sb5nlTBmeleNfHhdGlgAqDdOj3icf3Mds7QouQAgzfDm68=; 5:fUy2v7GusYw/BWjwNgWvaZjrbErf0eIC5JsxuToYnTLF8pgHXyeh391NrO6Xl1J6rl9c6ZAbcJBvKniOj87InimrM8CsJAqoR4RS2jw6U2rbVfnYtenDdHFMe9bFiLwWqyksJ245ZvZfh0faID+PDA==; 24:Ifxfb/+ym3rAfgw8DLkro14LDZ4IjeL6c/8KQsJeSLJA2o0qGmtFlgEVgz2WvzkUPG4kMzD9OnA6B0fLGixRrmxUPOShJyfRxZPaB4Y0ko8=; 7:nAWkCOvlMZsYAW9cTCmfdiJYg99zxQcmP//JxPI1+o46gwfgID/zh7b8YkxLKm7IRw3albpgplrSmOwQ56hZehX4RZAqJAMP+884+Lz8EDjXuvSF3WBMAOJm6SNGR95Q7Fac78lyMMPu8aklujMesDjxXm1WTNVPi3ok2eUoumeZRfR05NeIAP0AlEH93nyhJV07LHvEuxHstiT69KZ6FZqwVltu3m/S/x1L3M+Uj4eVPTPkEcEVhIZ5ovUciv0q SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Aug 2016 11:48:08.0903 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2247 ILP32 tasks are needed to be distinguished from lp64 and aarch32. This patch adds helper functions is_ilp32_compat_{task,thread} and thread flag TIF_32BIT_AARCH64 to address it. This is a preparation for following patches in ilp32 patchset. For consistency, SET_PERSONALITY is changed here accordingly. Signed-off-by: Andrew Pinski Signed-off-by: Philipp Tomsich Signed-off-by: Christoph Muellner Signed-off-by: Yury Norov Reviewed-by: David Daney --- arch/arm64/include/asm/elf.h | 13 +++++++++++-- arch/arm64/include/asm/is_compat.h | 30 ++++++++++++++++++++++++++++-- arch/arm64/include/asm/thread_info.h | 2 ++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index 6a9049b..f259fe8 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h @@ -142,7 +142,11 @@ typedef struct user_fpsimd_state elf_fpregset_t; */ #define ELF_PLAT_INIT(_r, load_addr) (_r)->regs[0] = 0 -#define SET_PERSONALITY(ex) clear_thread_flag(TIF_32BIT); +#define SET_PERSONALITY(ex) \ +do { \ + clear_thread_flag(TIF_32BIT_AARCH64); \ + clear_thread_flag(TIF_32BIT); \ +} while (0) /* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */ #define ARCH_DLINFO \ @@ -183,7 +187,12 @@ typedef compat_elf_greg_t compat_elf_gregset_t[COMPAT_ELF_NGREG]; ((x)->e_flags & EF_ARM_EABI_MASK)) #define compat_start_thread compat_start_thread -#define COMPAT_SET_PERSONALITY(ex) set_thread_flag(TIF_32BIT); +#define COMPAT_SET_PERSONALITY(ex) \ +do { \ + clear_thread_flag(TIF_32BIT_AARCH64); \ + set_thread_flag(TIF_32BIT); \ +} while (0) + #define COMPAT_ARCH_DLINFO extern int aarch32_setup_vectors_page(struct linux_binprm *bprm, int uses_interp); diff --git a/arch/arm64/include/asm/is_compat.h b/arch/arm64/include/asm/is_compat.h index 8dba5ca..7726beb 100644 --- a/arch/arm64/include/asm/is_compat.h +++ b/arch/arm64/include/asm/is_compat.h @@ -45,18 +45,44 @@ static inline int is_a32_compat_thread(struct thread_info *thread) #endif /* CONFIG_AARCH32_EL0 */ +#ifdef CONFIG_ARM64_ILP32 + +static inline int is_ilp32_compat_task(void) +{ + return test_thread_flag(TIF_32BIT_AARCH64); +} + +static inline int is_ilp32_compat_thread(struct thread_info *thread) +{ + return test_ti_thread_flag(thread, TIF_32BIT_AARCH64); +} + +#else + +static inline int is_ilp32_compat_task(void) +{ + return 0; +} + +static inline int is_ilp32_compat_thread(struct thread_info *thread) +{ + return 0; +} + +#endif /* CONFIG_ARM64_ILP32 */ + #ifdef CONFIG_COMPAT static inline int is_compat_task(void) { - return is_a32_compat_task(); + return is_a32_compat_task() || is_ilp32_compat_task(); } #endif /* CONFIG_COMPAT */ static inline int is_compat_thread(struct thread_info *thread) { - return is_a32_compat_thread(thread); + return is_a32_compat_thread(thread) || is_ilp32_compat_thread(thread); } diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h index 4daa559..8802645 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -119,6 +119,7 @@ static inline struct thread_info *current_thread_info(void) #define TIF_RESTORE_SIGMASK 20 #define TIF_SINGLESTEP 21 #define TIF_32BIT 22 /* AARCH32 process */ +#define TIF_32BIT_AARCH64 23 /* 32 bit process on AArch64(ILP32) */ #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) @@ -130,6 +131,7 @@ static inline struct thread_info *current_thread_info(void) #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) #define _TIF_SECCOMP (1 << TIF_SECCOMP) #define _TIF_32BIT (1 << TIF_32BIT) +#define _TIF_32BIT_AARCH64 (1 << TIF_32BIT_AARCH64) #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE)