From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753978AbcAGXjI (ORCPT ); Thu, 7 Jan 2016 18:39:08 -0500 Received: from mail-bl2on0078.outbound.protection.outlook.com ([65.55.169.78]:44032 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752721AbcAGXjD (ORCPT ); Thu, 7 Jan 2016 18:39:03 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , , , CC: , , , , , , , , , , , , , , Andrew Pinski Subject: [PATCH v6 09/21] arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 Date: Fri, 8 Jan 2016 02:34:27 +0300 Message-ID: <1452209679-19445-10-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1452209679-19445-1-git-send-email-ynorov@caviumnetworks.com> References: <1452209679-19445-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: AM3PR01CA039.eurprd01.prod.exchangelabs.com (10.141.191.29) To CO2PR07MB620.namprd07.prod.outlook.com (10.141.228.156) X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB620;2:zBsfKHZBFbGW4oruC+XS5Pp576/WumXs4iSdEao+EoocOSc4CotLee6SYXspvIMdwMopW3+Hqtzy3xnro8E0MuMiDHkRZ0QIN4Cfj1CLB2w8JO83kD1KTcF/uf4Pj8K7r5/whZ9V55BaVBd14W++qQ==;3:4TPQf49de6O+HXBOnL9wEK4UIMLOsuXnzjQHYvDd0l28aqzVVfo4eAywWnT24UTmcxMWEIl5WznSV8s1Ieln3dKRg+H4HQu7o0K44+7dVfTdVKfcCZzo/Lu9mxmJ5AQP;25:6rbiBNOmE/c2uVoPjk4rS1KCZla1+4jSHTvoNwZxnWndLvj5fuTph7jX/ooGni5UuBTTHvyEEft9L1hR+zMPBEd474b0A7ilrgdRmMdIxrdl4PRkJQvxg2SD3m0fFnTZ1IBPq50vOEH3xs8yrxRFEFqMjASuHYgUQ8O0CSIMtwN/mntzS1C1Ujz89gO/SyLWqZkuENawY+YMeUwO03x9HwaTi5h5Fv6hQ80qOPN3j0eqmAI1SpGhSkp/X9lf+fQ4 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO2PR07MB620; X-MS-Office365-Filtering-Correlation-Id: 1b53f9a6-f915-4acf-f354-08d317bbb890 X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB620;20:oDgtRu92YHsjeoNYwXELW83U9UDR4ECYA2KuPMG0JkY7TKX6nW/7LEe3wQEF6m88MKK/3E988xECTiPx45bHFdI6dSzw8dhCptakJTX51BTr8MF3d9DRoS9iW3rx38gzD0meJCeVhTLhuaB0rMWG5SJcUsWC0uaZH0eAhxBnhM+NywfPwWWWKvw+/duchn0XnWHBm+twQlIO1EDSDxMCwBM+4kPovKky6SSrrF82zebwTbjIyoqxNn02iUBusxmQLdFQHfNigkOY8n9Yu7NJDPwK/qcxTX+e2CBGpG7t4MkaU+I7dNeNpdm1QedQl62yDaYSfcU+EKBUVGStN60IGZFdyQcFYdTe5ixHYrrpdHtoiKlpxuAPzrPhfwaTO8HMpbWKn8U4ROnL2Ak/lHWu/Bs46Rmuq7doZ6kczCFlCwND/BxEhOy77nkH3tE2777/14wdHfEBEgTBFBHUSYCwLVi2WpsHi3jMW5yUCMx4rt3C1AXj+qTLfQAv01K//FrxjqhNJ4zD0zLi/1wgpXsHcx3UZP6cscuVe5MWfNmgL+fbGJ0/Z7PFzL/Th5BRf7LuVs9dJ++MR16Cukjc6NH9w1gZ0SM2HL0YmTEwvdl+l5Y= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236414709691187); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(8121501046)(5005006)(10201501046)(3002001);SRVR:CO2PR07MB620;BCL:0;PCL:0;RULEID:;SRVR:CO2PR07MB620; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB620;4:WJUiiHEeq5m12kXxttkubs/RrDpikYNyTDjIWWVZs5nkxQKLl4l5lVztiKacAWtIq/YQtGU3PrO70YWXazM8CM9VmxEVU0iZ2b84snMI4zT55MPigleSjmcn42aR/FxA1QVU8bTkPxQdajf4cNYtQHRSntrtiDhhr9Wio+zwH/8Q7A7VeuxRtAUV+dJ+7uflVPS78JhuYHmnxoVa3SdezPMUXa1y/tG/1/n0zhG/Sb3an1uxBEG/zN2Q3cQ+BJOSt6spFt2zM6kFnvOejNzpO1EoZkm5D2YoAljCQrSD1RoxUmlLs5vrNv9tCvycxRDoXnqc3R8/DK/yDxSiAK/kCwgTms/Jfy+QLVRaL6y2tGwlHTFIwqz7vDaA0zy1Y2UV+ozNsrQO+UEfFBZJ34lyuXH5uonOsHaEbzsQ6dvH00e06XijyBDT+L3aLjTf4Wmf X-Forefront-PRVS: 0814A2C7A3 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6069001)(6009001)(199003)(189002)(87976001)(2201001)(36756003)(3846002)(6116002)(1096002)(92566002)(33646002)(5001770100001)(76506005)(2950100001)(2906002)(4326007)(4001430100002)(5003940100001)(47776003)(5001960100002)(66066001)(77096005)(19580405001)(229853001)(42186005)(40100003)(5004730100002)(48376002)(101416001)(5008740100001)(106356001)(586003)(107886002)(76176999)(81156007)(122386002)(50226001)(97736004)(189998001)(50986999)(19580395003)(50466002)(105586002)(142933001)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR07MB620;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR07MB620;23:FWOeDWAx3M3K0kF8NPks3s2AbmNyDts61FWOWnBibl?= =?us-ascii?Q?kEWeWiuRqGxjW1aU+xKdy5P/HRqndDWrDfVgBqKyGBDotMdrry8AHdzRvTRf?= =?us-ascii?Q?iGO5kvqNKBnXXVxD4xdqajY5Upk8Mievrv1i4B4HumPB7OOsZqp/szjBrNs9?= =?us-ascii?Q?5ckcCqhR5oI/4EBsGGwrfepazCSKFoSIpqRB1RqkL/39Kts3UmC4mKU3CWTU?= =?us-ascii?Q?Hs0tNpZivHfPlOvBiFsve8fGa6fjJolL/eIDzpxdkzsEGRRqyLiFvptedD+T?= =?us-ascii?Q?iYdzxTAXgGikdREk5CyNYWQOkePX7eCr30Ax3llnRnC+Xymi8231+JJjlBy8?= =?us-ascii?Q?DRPqmMIpVvMF3JX31hmNVOFsVkj0M3syORRbmz03JlbB1n4cNo5E8Td0lFPe?= =?us-ascii?Q?/AdN6Di8r+5hfy+ZDnQpupTlw4306aneVdGC2zN+nibtGS96fLBf0CYVvl0g?= =?us-ascii?Q?tI6qlVofdUOEggfg+Pbpa4VIqa5jsFcc4MKRJ39QJ+E4pvUpS6ndzFp7Fre7?= =?us-ascii?Q?iTvHv4MHxM6djMYEqGXZus8RT0aTrwmUCv/Mx5ZHXGsnV57rm0786dDjRnTz?= =?us-ascii?Q?VIj4SElmuS3YqgCdlN7RKskY8fl9BQ6jquvt4RNfe6WSzD5Rw3Tj9aY4h2fV?= =?us-ascii?Q?62KIZl6E6CphGPZcWCujrD+2SdaEgxVND19T39OoBvMVaXKGjOJYd7kfYajj?= =?us-ascii?Q?VWU8NaRFpB+H+Z3FgzxmMMlGKiDtOWCycOjgcZ3fazAF9uBmF9v+FGMKFqh2?= =?us-ascii?Q?VWShSzrt9Ztt73Iz1nRvOhlMujMj4JyplkO7+vd3Yf/kehLTDY6R6tKdPcIl?= =?us-ascii?Q?AFTnmuVHRzJTQr9HMP/TrmAa+27Mz+FALN71db/aLlPFcHBgI2Au4mt7nYev?= =?us-ascii?Q?GrIYWBdRO0DLmWkEQ50daGn+S5sn7dnyjHBEHowcyKrazdpFE75l9GLTuh68?= =?us-ascii?Q?8uwvl5C3Vyo0fLF7VbICkJu/NGq+eiLbQwhjYCoVPruOGMK3IWyla4yDCPIH?= =?us-ascii?Q?NHM9WjYqec+LNDlF7TZPWMMLAzmMnqm3dyDyY8mcrjlAjLulIWflgsN0KmEW?= =?us-ascii?Q?owWkSl4PnWrHGlYjA/udq4ttNaRFre448Lv+I93r+ptW+XWFPR3AI0ETqXng?= =?us-ascii?Q?R2ZT5NVISbzUUA3+HdQMZGWBHXLpeROEXu589C02dwYsMpxUkBJ6muE3MTmn?= =?us-ascii?Q?lrP18NPB2Wr9RcpwhM4dPbzSTp1rE1Adqy?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB620;5:Jl4sx4wVSbS/AnbpfL7Ss0B3b1eZtcs0B5cYnL7vVV1anujsIi08RCrFPakQ7hjZgSGsltMxtgwKIf3AcIADU+KNVFugP+X4F3FZ3Pdf0UlZgaqSJCteOpnwnwdXtaTwIJNjio4BZCAurzG5/hETmA==;24:9xANnCNrEXhS3zn7afkEqqWCoMCSu8D5CTEvkLeWWel/8spl2r14xhhbEsD8KMMagDeVehpX7UiLaALypNLldkPorU3WfYe79w9mUTOdnoI= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2016 23:39:00.7670 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB620 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 are 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 | 28 +++++++++++++++++++++++++++- arch/arm64/include/asm/thread_info.h | 1 + 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index 2f62ded..5e27a64 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h @@ -135,7 +135,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) #define ARCH_DLINFO \ do { \ @@ -174,7 +178,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 6139b5a..55134cf 100644 --- a/arch/arm64/include/asm/is_compat.h +++ b/arch/arm64/include/asm/is_compat.h @@ -45,11 +45,37 @@ 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 */ diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h index dd046c5..c74d4f5 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -113,6 +113,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) -- 2.5.0