From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753676AbcHQLsQ (ORCPT ); Wed, 17 Aug 2016 07:48:16 -0400 Received: from mail-co1nam03on0050.outbound.protection.outlook.com ([104.47.40.50]:15998 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753615AbcHQLsM (ORCPT ); Wed, 17 Aug 2016 07:48:12 -0400 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> X-Mailer: git-send-email 2.7.4 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 Content-Type: text/plain X-Originating-IP: [95.143.213.121] 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; 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 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 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) -- 2.7.4