From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753475AbdCAWAT (ORCPT ); Wed, 1 Mar 2017 17:00:19 -0500 Received: from mail-dm3nam03on0062.outbound.protection.outlook.com ([104.47.41.62]:20039 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752642AbdCAWAN (ORCPT ); Wed, 1 Mar 2017 17:00:13 -0500 Authentication-Results: lists.infradead.org; dkim=none (message not signed) header.d=none;lists.infradead.org; dmarc=none action=none header.from=caviumnetworks.com; From: Yury Norov To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Arnd Bergmann , Catalin Marinas Cc: Yury Norov , Andrew Pinski , Andrew Pinski , Adam Borowski , Chris Metcalf , Steve Ellcey , Maxim Kuvyrkov , Ramana Radhakrishnan , Florian Weimer , Bamvor Zhangjian , Andreas Schwab , Chris Metcalf , Heiko Carstens , schwidefsky@de.ibm.com, broonie@kernel.org, Joseph Myers , christoph.muellner@theobroma-systems.com, szabolcs.nagy@arm.com, klimov.linux@gmail.com, Nathan_Lynch@mentor.com, agraf@suse.de, Prasun.Kapoor@caviumnetworks.com, geert@linux-m68k.org, philipp.tomsich@theobroma-systems.com, manuel.montezelo@gmail.com, linyongting@huawei.com, davem@davemloft.net, zhouchengming1@huawei.com Subject: [PATCH v7 resend 00/20] ILP32 for ARM64 Date: Thu, 2 Mar 2017 00:49:08 +0530 Message-Id: <1488395968-14313-1-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [27.97.135.110] X-ClientProxiedBy: AM4PR02CA0037.eurprd02.prod.outlook.com (10.165.239.175) To SN1PR07MB2253.namprd07.prod.outlook.com (10.164.47.147) X-MS-Office365-Filtering-Correlation-Id: fd6941f6-ec97-4dd0-bb31-08d460d7e84d X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:SN1PR07MB2253; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2253;3:Vc66TPHyLrN0BH2/Cbm+KjB4DwJ1a7t4mCfVlZ9SO02Cn6HDW6JRaKOlNozA6QS7KYiL4uhuPne+VPpLP6cuu3wLC8KIbDu/pcoSa4+YvUoCJRErczaKrKpDRdQDhrrr2GWpKixKo1aQ3kbmjmeyA3ZPT5dPLtYNLxXMGwI1P9rBRhHopHivE4/qgtGH0fxCxZxj/DEgniaPLP4LLG6dkFJVDNN2HRwK1DquDwShaO51TxkRtg1Iss02c49eOO31vNLJisTF/cD/qGDU65/eLg==;25:z7XDdu4n2plv4Cb5F5ZwveOfpTSpUONtRJCT26qlUXmIU0bNAHXj+GIxbkK4tA7Nw9PMmijAGVz7SoRHneUYWzFFzNTdVmDtMw300C6gH0z1TDe3lwGE3ShTuvDpsQ9GtYkTwkJ39VmjtmZCTdSfSECZWfgi+uGDWe8FSZRX5cqzq3+L6aQdfmS5jLIFP7oYD0gPv3LBjYE16Csz4SiBz0DROiR2c5N0dQa6K2ZoH81Lx39CatmWFTUfzhzBAXCOg4mja/MRBby6kxDmVo24fgLn1IW/mWFyDjHH0aWubqD85uHXXBR7TCRnb93tSXS+/28FEbunAinhkRf6GOUtpVhXj5bscTEaxdx+1izHuES9GA8hdDJqR3dJFIKY5gdrQsWUpV7/YMSLBgFaVRcwPySmQrMENPYpN23Jx3Z/XR2nLWuKg1k8LOG+zpJhYCai0p00ig/IAW8MZR85IYyonQ== X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2253;31:RFyZc/jDdh0SJOyFxzYpmZOnbVqRM++E15pbBWKh/ILGgXbaGShTqsUGT9UP7Bj8WXVIr1e8FkUV9ZZjNPLbZ56/v+D0v6EzoU9zsEDcpS9BWkwKlHmCahMciCPQGXytp7QFay7Eq05h17maC02/pJUhovcghz11crlOsGOB3TpZ/x6ED7c2OATvEpgtDLTM7LCakyVqVJQRPkCeKB4y7fUxX0I0T2e8cfz7J3wWII0=;20:B4kn/p51jQ8kJNW85DIoKteObhpBuDgfsKHXo8mWs5ZWbJA6EWg/vl21fJDJCCj+U40xTZk6cfUT0XLP88HQbCQwsu5SfpPdmGLTpYn3RlAZFkogmvBkGF+o5yBcL6ZttQFg7wqRuDhQWWoKZslVSzMR1/kiGRhBt1MbXWsmlVivd+f6ZEkmmjuyaynvRwgX4lqLH7uXGIYVc8wJ5w0nW0zE+2Zmhf5z6j6sTHgE8cDA3/rqUDP/qXdCqQbdaNE1WKNz+atgz6f1SDJLimzKn+JNVf5kUe8KsLWlpgESxsQwLZ+gQjubySj1KJmPFOWEBqldGAE6pWoF6pn8yCqJjVSn3vs2C1PKhGEugxmHlLlXhBdbeguD8huAFk4U9LGzcxYaY2UQpKW5EoBb3JrlNS0r1t6gcN8xVEWjeVshIpFn4nfU4Cts+Wb98oJ68K4gYGAaQcITTcHK8oeozmmajxxQXopHhpOxiI8wuZym8jjEtrSgSwKvYtVhQ/cW2wyEm5wmGt6Qvl3D4p8qQXAN3A3f4bUuPzP/UB1zG3gpywtSDe/Pa5LLh5NYs7waGN0bx8lP7HF4kuKXATyXEoRywF5yPCLeZS2oG3ULh3D61P8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123555025)(20161123564025)(20161123558025)(20161123562025)(20161123560025)(6072148);SRVR:SN1PR07MB2253;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2253; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2253;4:JktGMFOb1Am4y8in2ZF8uPrq8B2it4eYXQfRj1WbPwEYv8NFpy7z9uXFhUEV5y/pFWsl5q8Lxv4lWBsEJ6IvVZeq6zc9lg+Fw3jhmiMlyiPNc0jvBmgQJCUBbETDDeNkT+y+0WvrWhcFQff5kaVzPVl40TZlX8md53pGfLXxhlZdpPWcu1uJzyDcg3WaTm1mAi/vBFK5p/aiBQpX5ikbmIXbN2KeqM1B/B4Ice77zmeuW/ZSVLkd7wsdMXzSVbeJUNhfJEyQFwIcljcx1H9MwH1PUHiuYw9d4+kGupotYCpJXftcObo1hs+Gm3oS/PYV6XGrk0NZtU7u9dixIwH/KW10qJIvRn6m/RBNa/brXKmKuq4JvAgyHGyejIOORDMzwEN1JJeTPX/BE83Fp8oeswx00bCgZFjAJG4RtFB0Sc8I3F6ZWDA4chNIeEvEwcdwBqhMQmRxuNj0i6vqydmnN5CWmR4JgfCCc8fT8NI5dFZAXt9QisSopgNRZsdbA7iI8PY36aNLaKF0+a4jh9gRP7YMix/bxObXeH85+EXMKuj4/DfNyLgzM+DZRp6Tl6g414LV+Oe9RzAXw/CK1uY04sSUpu0DsgbVCVnu10oaCTbme7YOFk4DGqRjw2woml+NmbvQT5/+7Et5adfjFr2fmQ== X-Forefront-PRVS: 0233768B38 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(2906002)(305945005)(7736002)(7416002)(33646002)(50986999)(76506005)(47776003)(3846002)(4326008)(6496005)(6116002)(38730400002)(66066001)(48376002)(81166006)(189998001)(6486002)(42186005)(36756003)(50226002)(92566002)(50466002)(25786008)(8676002)(5009440100003)(5660300001)(6666003)(5003940100001)(53936002)(6306002)(54906002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR07MB2253;H:localhost;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2253;23:dQjvGYYauuIIzSyuDJoXDu9oGZVhxsI2XMHzOzGggVlM0ZVzL4CLFmzHSGCoGZfBKmEGXAIh8o1SY/6m7qG0+8h6PQ3r7oXtDE2hPQwOonB/lRiy5Lv9FSRzUpPq9/VIUTKI/BkSNctYxXuHDtm4SQQQQlWyQ5I8T+pkCzXOKg/NMFAjqx3fUa/cNZuNzYwDKh9S92XoJYJU20LpM1CsJtGJhS863gV6WOoFWMEm5RPvy/y6g5ZjLQVa1lfe7j2lYo/n6V6Tb1NT8us9+x6w6TkDH4zF5s89oThdf3lzGqvPtc8K26MaQKSISU506yrgJZNldb6I53ytt+G3q/uHEsYNmtp9fbnPIJHOR9Bno8dQoi9B2LIauCQS20j73ah3ZjQJmT2yUo3aeniY/dAU9/wa/s3uZZ4v5z21D+i22XBSBYK5F+L73zqiZ855eipw3CSwZQtYne0eM2mj0QAOxGUUVhawZ+XLVdcVa+/ox8eetm7b/03PGAdu5E7y9WKBzF/i4MllvwCooCaO5eSrSzeVWUuGide4bQ/VZCUaj+qYLdt8Vko434fAhfdQAIWRGh7JNy5lh7sm1/rvzctGZ/EtnnNB76PasmE4f8x6n3g6ideGPV6FeoB8/DfAsFypUYIpf+hNFKPZYocPc4yU8jQzawqmwq4vNSyEaJ3d5nFQIm+stp5o5m8FFW/ySaJZPJmDVQ82wAHanjWWPUEFT6VXiFSrjy0jg1qNSjs4DFMVnf0S5Mkx0y+LICvcAvljQmbuevXzIA8qtnIWSZz/3TGGRBv6x8BTBNZVa68fc8Rx1obWKys7sVgiuSOxS9KiHIn83sjpNFqLufjENb83WhUtMj6c+xn/6j9WY/BH/ywrL6OdPEBTXishoKaX4GDOez30pDH/uWOW0LQAqap1HBll98BPhcLLSozxi2OMWNXp4fE0j1RCgO8cQDlC2Jde X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2253;6:Bk2NJimDZdMOHPn/19OhE6PKhG+s/z9YX3vJ2w2JGW4DRoyrb5kWsIaEtvlX3R2CDFbdhz6JsZmcXubtIB9+G/47PskBbBneENkWiblsGJM93IPYXPh53IkGG7+8YLADb68J06Hk7zI1U4/KnHwIKLlZ3z+AHhDAftVjGFfbTxJDdBwc/vDDFII7vf8ORfP53RY1n/D9EGYX8d0P8/elFpA0WlarKemnurDAiBT1ZwXkVqizdJGPIPbzpxWOMkcmdPofRI4csGSNvxknCbBmeIfUxOLP2bdTh9VykuGzdQg3IHBXkLfZqpUsu/gOEKbx+y2rfJf3BX3AMy/O7wCDZ6g2BHqifl0VN5ux4scXVmG04w2K4p6CN+nGFqzSIau7xJLwLeIcLuewo2iI+7JK8A==;5:iuTVQTVEehO4guurCi8bBAQG4bUWT7Vd4thKqIZ8R2WOAhTbBneYW2iX+Hv5KnLPVly6SDxcuYBovLIDMHpwrH0hYyL6yaUSKZg8Q46w2OWad67T4aOFRz/8PIvmEvTVek0ilDG9XrHRF8IrwAoPVoJy4xpCZ/YTNH0KU1VBHAI=;24:NaK6/4lpFMOZ6AipbEvw4pKATsGEQFzB3Id3V6wTEspzM3YaghQPjcYzBoPpcdfLyuCu0DKho3oX2Ryou9gH5XQBxoxrEJsxJ7Il7VDuJXM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2253;7:+9QqH8bBYmteDw6Xc3lrk2qvn8GaTNo7rAwoNVwcLSVOGU1URsqROw7l9X6qdhWQwYvBL24SQENB9j7WdukmEZoyC65VyPmc2lctwTF5xA2ywXrmRB0ExTY4SElw0eiQG7tDH+iAyI1Fw9iLETbTjuOaut9gMTZ0ok0qY+nSfEGgrtCe1KvJ2pPCO64ZzxjLTAKm1DVp0+c5BSeSzlVM1LzDvALHiD/y8EZ3beeZ1t0h6bZQkoh2smkiUQ5g80i1WcV6g1fxCDgUWuOZP3vdUTJAas+UJreLO4h8t0Tmi9imoYIQdYXB4IYqasDe/AP9OSeyqQr4BFYXEkUfWegNOg== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2017 19:19:38.9288 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2253 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series enables aarch64 with ilp32 mode. As supporting work, it introduces ARCH_32BIT_OFF_T configuration option that is enabled for existing 32-bit architectures but disabled for new arches (so 64-bit off_t is is used by new userspace). Also it deprecates getrlimit and setrlimit syscalls prior to prlimit64. This version is based on linux-next from 2017-03-01. It works with glibc-2.25, and tested with LTP, glibc testsuite, trinity, lmbench, CPUSpec. Patches 1, 2, 3 and 8 are general, and may be applied separately. This is the rebase of v7 - no major changes has been made. Kernel and GLIBC trees: https://github.com/norov/linux/tree/ilp32-20170301 https://github.com/norov/glibc/tree/dev9 (GLIBC patches are managed by Steve Ellcey, so my tree is only for reference.) Changes: v3: https://lkml.org/lkml/2014/9/3/704 v4: https://lkml.org/lkml/2015/4/13/691 v5: https://lkml.org/lkml/2015/9/29/911 v6: https://lkml.org/lkml/2016/5/23/661 v7: RFC nowrap: https://lkml.org/lkml/2016/6/17/990 v7: RFC2 nowrap: https://lkml.org/lkml/2016/8/17/245 v7: RFC3 nowrap: https://lkml.org/lkml/2016/10/21/883 v7: https://lkml.org/lkml/2017/1/9/213 v7: Resend: fixed couple of typos, rebased on next-20170301 Andrew Pinski (6): arm64: rename COMPAT to AARCH32_EL0 in Kconfig arm64: ensure the kernel is compiled for LP64 arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 arm64: ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it arm64: ilp32: introduce ilp32-specific handlers for sigframe and ucontext arm64:ilp32: add ARM64_ILP32 to Kconfig Philipp Tomsich (1): arm64:ilp32: add vdso-ilp32 and use for signal return Yury Norov (13): compat ABI: use non-compat openat and open_by_handle_at variants 32-bit ABI: introduce ARCH_32BIT_OFF_T config option asm-generic: Drop getrlimit and setrlimit syscalls from default list arm64: ilp32: add documentation on the ILP32 ABI for ARM64 thread: move thread bits accessors to separated file arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 arm64: introduce binfmt_elf32.c arm64: ilp32: introduce binfmt_ilp32.c arm64: ilp32: share aarch32 syscall handlers arm64: signal: share lp64 signal routines to ilp32 arm64: signal32: move ilp32 and aarch32 common code to separated file arm64: ptrace: handle ptrace_request differently for aarch32 and ilp32 Documentation/arm64/ilp32.txt | 45 +++++++ arch/Kconfig | 4 + arch/arc/Kconfig | 1 + arch/arc/include/uapi/asm/unistd.h | 1 + arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 19 ++- arch/arm64/Makefile | 5 + arch/arm64/include/asm/compat.h | 19 +-- arch/arm64/include/asm/elf.h | 32 ++--- arch/arm64/include/asm/fpsimd.h | 2 +- arch/arm64/include/asm/ftrace.h | 2 +- arch/arm64/include/asm/hwcap.h | 6 +- arch/arm64/include/asm/is_compat.h | 90 ++++++++++++++ arch/arm64/include/asm/memory.h | 5 +- arch/arm64/include/asm/processor.h | 11 +- arch/arm64/include/asm/ptrace.h | 2 +- arch/arm64/include/asm/seccomp.h | 2 +- arch/arm64/include/asm/signal32.h | 9 +- arch/arm64/include/asm/signal32_common.h | 27 ++++ arch/arm64/include/asm/signal_common.h | 33 +++++ arch/arm64/include/asm/signal_ilp32.h | 38 ++++++ arch/arm64/include/asm/syscall.h | 2 +- arch/arm64/include/asm/thread_info.h | 4 +- arch/arm64/include/asm/unistd.h | 8 +- arch/arm64/include/asm/vdso.h | 6 + arch/arm64/include/uapi/asm/bitsperlong.h | 9 +- arch/arm64/include/uapi/asm/unistd.h | 13 ++ arch/arm64/kernel/Makefile | 18 ++- arch/arm64/kernel/asm-offsets.c | 9 +- arch/arm64/kernel/binfmt_elf32.c | 32 +++++ arch/arm64/kernel/binfmt_ilp32.c | 85 +++++++++++++ arch/arm64/kernel/cpufeature.c | 8 +- arch/arm64/kernel/cpuinfo.c | 20 +-- arch/arm64/kernel/entry.S | 34 +++++- arch/arm64/kernel/entry32.S | 80 ------------ arch/arm64/kernel/entry32_common.S | 107 ++++++++++++++++ arch/arm64/kernel/entry_ilp32.S | 22 ++++ arch/arm64/kernel/head.S | 2 +- arch/arm64/kernel/hw_breakpoint.c | 8 +- arch/arm64/kernel/perf_regs.c | 2 +- arch/arm64/kernel/process.c | 7 +- arch/arm64/kernel/ptrace.c | 80 ++++++++++-- arch/arm64/kernel/signal.c | 102 ++++++++++------ arch/arm64/kernel/signal32.c | 107 ---------------- arch/arm64/kernel/signal32_common.c | 135 ++++++++++++++++++++ arch/arm64/kernel/signal_ilp32.c | 170 ++++++++++++++++++++++++++ arch/arm64/kernel/sys_ilp32.c | 100 +++++++++++++++ arch/arm64/kernel/traps.c | 5 +- arch/arm64/kernel/vdso-ilp32/.gitignore | 2 + arch/arm64/kernel/vdso-ilp32/Makefile | 74 +++++++++++ arch/arm64/kernel/vdso-ilp32/vdso-ilp32.S | 33 +++++ arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S | 95 ++++++++++++++ arch/arm64/kernel/vdso.c | 69 +++++++++-- arch/arm64/kernel/vdso/gettimeofday.S | 20 ++- arch/arm64/kernel/vdso/vdso.S | 6 +- arch/blackfin/Kconfig | 1 + arch/c6x/include/uapi/asm/unistd.h | 1 + arch/cris/Kconfig | 1 + arch/frv/Kconfig | 1 + arch/h8300/Kconfig | 1 + arch/h8300/include/uapi/asm/unistd.h | 1 + arch/hexagon/Kconfig | 1 + arch/hexagon/include/uapi/asm/unistd.h | 1 + arch/m32r/Kconfig | 1 + arch/m68k/Kconfig | 1 + arch/metag/Kconfig | 1 + arch/metag/include/uapi/asm/unistd.h | 1 + arch/microblaze/Kconfig | 1 + arch/mips/Kconfig | 1 + arch/mn10300/Kconfig | 1 + arch/nios2/Kconfig | 1 + arch/nios2/include/uapi/asm/unistd.h | 1 + arch/openrisc/Kconfig | 1 + arch/openrisc/include/uapi/asm/unistd.h | 1 + arch/parisc/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/score/Kconfig | 1 + arch/score/include/uapi/asm/unistd.h | 1 + arch/sh/Kconfig | 1 + arch/sparc/Kconfig | 1 + arch/tile/Kconfig | 1 + arch/tile/include/uapi/asm/unistd.h | 1 + arch/tile/kernel/compat.c | 3 + arch/unicore32/Kconfig | 1 + arch/unicore32/include/uapi/asm/unistd.h | 1 + arch/x86/Kconfig | 1 + arch/x86/um/Kconfig | 1 + arch/xtensa/Kconfig | 1 + drivers/clocksource/arm_arch_timer.c | 2 +- include/linux/fcntl.h | 2 +- include/linux/thread_bits.h | 63 ++++++++++ include/linux/thread_info.h | 54 +------- include/uapi/asm-generic/unistd.h | 10 +- 93 files changed, 1586 insertions(+), 408 deletions(-) create mode 100644 Documentation/arm64/ilp32.txt create mode 100644 arch/arm64/include/asm/is_compat.h create mode 100644 arch/arm64/include/asm/signal32_common.h create mode 100644 arch/arm64/include/asm/signal_common.h create mode 100644 arch/arm64/include/asm/signal_ilp32.h create mode 100644 arch/arm64/kernel/binfmt_elf32.c create mode 100644 arch/arm64/kernel/binfmt_ilp32.c create mode 100644 arch/arm64/kernel/entry32_common.S create mode 100644 arch/arm64/kernel/entry_ilp32.S create mode 100644 arch/arm64/kernel/signal32_common.c create mode 100644 arch/arm64/kernel/signal_ilp32.c create mode 100644 arch/arm64/kernel/sys_ilp32.c create mode 100644 arch/arm64/kernel/vdso-ilp32/.gitignore create mode 100644 arch/arm64/kernel/vdso-ilp32/Makefile create mode 100644 arch/arm64/kernel/vdso-ilp32/vdso-ilp32.S create mode 100644 arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S create mode 100644 include/linux/thread_bits.h -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: ynorov@caviumnetworks.com (Yury Norov) Date: Thu, 2 Mar 2017 00:49:08 +0530 Subject: [PATCH v7 resend 00/20] ILP32 for ARM64 Message-ID: <1488395968-14313-1-git-send-email-ynorov@caviumnetworks.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org This series enables aarch64 with ilp32 mode. As supporting work, it introduces ARCH_32BIT_OFF_T configuration option that is enabled for existing 32-bit architectures but disabled for new arches (so 64-bit off_t is is used by new userspace). Also it deprecates getrlimit and setrlimit syscalls prior to prlimit64. This version is based on linux-next from 2017-03-01. It works with glibc-2.25, and tested with LTP, glibc testsuite, trinity, lmbench, CPUSpec. Patches 1, 2, 3 and 8 are general, and may be applied separately. This is the rebase of v7 - no major changes has been made. Kernel and GLIBC trees: https://github.com/norov/linux/tree/ilp32-20170301 https://github.com/norov/glibc/tree/dev9 (GLIBC patches are managed by Steve Ellcey, so my tree is only for reference.) Changes: v3: https://lkml.org/lkml/2014/9/3/704 v4: https://lkml.org/lkml/2015/4/13/691 v5: https://lkml.org/lkml/2015/9/29/911 v6: https://lkml.org/lkml/2016/5/23/661 v7: RFC nowrap: https://lkml.org/lkml/2016/6/17/990 v7: RFC2 nowrap: https://lkml.org/lkml/2016/8/17/245 v7: RFC3 nowrap: https://lkml.org/lkml/2016/10/21/883 v7: https://lkml.org/lkml/2017/1/9/213 v7: Resend: fixed couple of typos, rebased on next-20170301 Andrew Pinski (6): arm64: rename COMPAT to AARCH32_EL0 in Kconfig arm64: ensure the kernel is compiled for LP64 arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 arm64: ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it arm64: ilp32: introduce ilp32-specific handlers for sigframe and ucontext arm64:ilp32: add ARM64_ILP32 to Kconfig Philipp Tomsich (1): arm64:ilp32: add vdso-ilp32 and use for signal return Yury Norov (13): compat ABI: use non-compat openat and open_by_handle_at variants 32-bit ABI: introduce ARCH_32BIT_OFF_T config option asm-generic: Drop getrlimit and setrlimit syscalls from default list arm64: ilp32: add documentation on the ILP32 ABI for ARM64 thread: move thread bits accessors to separated file arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 arm64: introduce binfmt_elf32.c arm64: ilp32: introduce binfmt_ilp32.c arm64: ilp32: share aarch32 syscall handlers arm64: signal: share lp64 signal routines to ilp32 arm64: signal32: move ilp32 and aarch32 common code to separated file arm64: ptrace: handle ptrace_request differently for aarch32 and ilp32 Documentation/arm64/ilp32.txt | 45 +++++++ arch/Kconfig | 4 + arch/arc/Kconfig | 1 + arch/arc/include/uapi/asm/unistd.h | 1 + arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 19 ++- arch/arm64/Makefile | 5 + arch/arm64/include/asm/compat.h | 19 +-- arch/arm64/include/asm/elf.h | 32 ++--- arch/arm64/include/asm/fpsimd.h | 2 +- arch/arm64/include/asm/ftrace.h | 2 +- arch/arm64/include/asm/hwcap.h | 6 +- arch/arm64/include/asm/is_compat.h | 90 ++++++++++++++ arch/arm64/include/asm/memory.h | 5 +- arch/arm64/include/asm/processor.h | 11 +- arch/arm64/include/asm/ptrace.h | 2 +- arch/arm64/include/asm/seccomp.h | 2 +- arch/arm64/include/asm/signal32.h | 9 +- arch/arm64/include/asm/signal32_common.h | 27 ++++ arch/arm64/include/asm/signal_common.h | 33 +++++ arch/arm64/include/asm/signal_ilp32.h | 38 ++++++ arch/arm64/include/asm/syscall.h | 2 +- arch/arm64/include/asm/thread_info.h | 4 +- arch/arm64/include/asm/unistd.h | 8 +- arch/arm64/include/asm/vdso.h | 6 + arch/arm64/include/uapi/asm/bitsperlong.h | 9 +- arch/arm64/include/uapi/asm/unistd.h | 13 ++ arch/arm64/kernel/Makefile | 18 ++- arch/arm64/kernel/asm-offsets.c | 9 +- arch/arm64/kernel/binfmt_elf32.c | 32 +++++ arch/arm64/kernel/binfmt_ilp32.c | 85 +++++++++++++ arch/arm64/kernel/cpufeature.c | 8 +- arch/arm64/kernel/cpuinfo.c | 20 +-- arch/arm64/kernel/entry.S | 34 +++++- arch/arm64/kernel/entry32.S | 80 ------------ arch/arm64/kernel/entry32_common.S | 107 ++++++++++++++++ arch/arm64/kernel/entry_ilp32.S | 22 ++++ arch/arm64/kernel/head.S | 2 +- arch/arm64/kernel/hw_breakpoint.c | 8 +- arch/arm64/kernel/perf_regs.c | 2 +- arch/arm64/kernel/process.c | 7 +- arch/arm64/kernel/ptrace.c | 80 ++++++++++-- arch/arm64/kernel/signal.c | 102 ++++++++++------ arch/arm64/kernel/signal32.c | 107 ---------------- arch/arm64/kernel/signal32_common.c | 135 ++++++++++++++++++++ arch/arm64/kernel/signal_ilp32.c | 170 ++++++++++++++++++++++++++ arch/arm64/kernel/sys_ilp32.c | 100 +++++++++++++++ arch/arm64/kernel/traps.c | 5 +- arch/arm64/kernel/vdso-ilp32/.gitignore | 2 + arch/arm64/kernel/vdso-ilp32/Makefile | 74 +++++++++++ arch/arm64/kernel/vdso-ilp32/vdso-ilp32.S | 33 +++++ arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S | 95 ++++++++++++++ arch/arm64/kernel/vdso.c | 69 +++++++++-- arch/arm64/kernel/vdso/gettimeofday.S | 20 ++- arch/arm64/kernel/vdso/vdso.S | 6 +- arch/blackfin/Kconfig | 1 + arch/c6x/include/uapi/asm/unistd.h | 1 + arch/cris/Kconfig | 1 + arch/frv/Kconfig | 1 + arch/h8300/Kconfig | 1 + arch/h8300/include/uapi/asm/unistd.h | 1 + arch/hexagon/Kconfig | 1 + arch/hexagon/include/uapi/asm/unistd.h | 1 + arch/m32r/Kconfig | 1 + arch/m68k/Kconfig | 1 + arch/metag/Kconfig | 1 + arch/metag/include/uapi/asm/unistd.h | 1 + arch/microblaze/Kconfig | 1 + arch/mips/Kconfig | 1 + arch/mn10300/Kconfig | 1 + arch/nios2/Kconfig | 1 + arch/nios2/include/uapi/asm/unistd.h | 1 + arch/openrisc/Kconfig | 1 + arch/openrisc/include/uapi/asm/unistd.h | 1 + arch/parisc/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/score/Kconfig | 1 + arch/score/include/uapi/asm/unistd.h | 1 + arch/sh/Kconfig | 1 + arch/sparc/Kconfig | 1 + arch/tile/Kconfig | 1 + arch/tile/include/uapi/asm/unistd.h | 1 + arch/tile/kernel/compat.c | 3 + arch/unicore32/Kconfig | 1 + arch/unicore32/include/uapi/asm/unistd.h | 1 + arch/x86/Kconfig | 1 + arch/x86/um/Kconfig | 1 + arch/xtensa/Kconfig | 1 + drivers/clocksource/arm_arch_timer.c | 2 +- include/linux/fcntl.h | 2 +- include/linux/thread_bits.h | 63 ++++++++++ include/linux/thread_info.h | 54 +------- include/uapi/asm-generic/unistd.h | 10 +- 93 files changed, 1586 insertions(+), 408 deletions(-) create mode 100644 Documentation/arm64/ilp32.txt create mode 100644 arch/arm64/include/asm/is_compat.h create mode 100644 arch/arm64/include/asm/signal32_common.h create mode 100644 arch/arm64/include/asm/signal_common.h create mode 100644 arch/arm64/include/asm/signal_ilp32.h create mode 100644 arch/arm64/kernel/binfmt_elf32.c create mode 100644 arch/arm64/kernel/binfmt_ilp32.c create mode 100644 arch/arm64/kernel/entry32_common.S create mode 100644 arch/arm64/kernel/entry_ilp32.S create mode 100644 arch/arm64/kernel/signal32_common.c create mode 100644 arch/arm64/kernel/signal_ilp32.c create mode 100644 arch/arm64/kernel/sys_ilp32.c create mode 100644 arch/arm64/kernel/vdso-ilp32/.gitignore create mode 100644 arch/arm64/kernel/vdso-ilp32/Makefile create mode 100644 arch/arm64/kernel/vdso-ilp32/vdso-ilp32.S create mode 100644 arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S create mode 100644 include/linux/thread_bits.h -- 2.7.4