Bug 11877

Summary: Add aarch64 ilp32 framework
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Armin Kuster <akuster>
Component: coreAssignee: Ross Burton <ross.burton>
Status: RESOLVED WONTFIX QA Contact:
Severity: enhancement    
Priority: Low CC: akuster808, jon.mason, mark.hatle, meta.mr.watcher, meta.watcher, raj.khem, randy.macleod, ross.burton
Version: 2.4   
Target Milestone: Future   
Hardware: x86   
OS: Multiple   
URL: https://static.docs.arm.com/dai0490/a/DAI0490A_ilp32_for_aarch64_whitepaper.pdf
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)

Description Armin Kuster 2017-07-31 18:09:13 UTC
ilp32 is an ABI to run on v8 64-bit-only cores. Thus it has the same basic properties as aarch32 or armv7 code (ints, long and pointers are 32bit), but only uses the armv8 A64 instruction set. It is exactly the same concept as x32 on the x86 architecture.
Comment 1 Mark Hatle 2017-07-31 19:25:01 UTC
From looking at earlier versions of the work, it seemed like it should be centered on kernel (ABI), libc, toolchain and 'tune'.  So a pretty low impact change, for a good reward.  (Similar in many ways to MIPS64 n32.)
Comment 2 Khem Raj 2017-07-31 19:31:48 UTC
has use in networking stacks, although I am not very excited about new ABIs
Comment 4 akuster 2020-10-22 08:22:03 UTC
Is this something Arm would like to support/add?
Comment 5 Jon Mason 2020-10-22 09:03:35 UTC
It should work and be supported.  Arm will take the task to add it to our internal testing to make sure it works and will continue to work.
Comment 6 Ross Burton 2020-10-22 09:04:08 UTC
Yeah, I'll take this and see what we can do.
Comment 7 Ross Burton 2020-10-27 03:25:09 UTC
Cost-benefit for this is marginal at best.

IA X32 is a win because of the hugely increased number of registers, whereas 32-bit ARM already has lots of registers.

Linux itself doesn't support ilp32, there's a branch with initial support here:

https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git/log/?h=staging/ilp32-5.1

But that was abandoned with 5.1.

glibc doesn't support ilp32 either, and are waiting on the kernel to merge support. Linaro have a branch:

https://git.linaro.org/toolchain/glibc.git/log/?h=arm/ilp32

Fundamentally it's going to be less interesting than X32, but is still in the bootstrap phase.

If this gets integrated into the mainline kernel and glibc we can revisit this, but currently the meta-arm maintainers are not going to work on this.