Mailinglist Archive: opensuse-buildservice (132 mails)

< Previous Next >
[opensuse-buildservice] [RFC] Is there any plan to add ILP32 support for aarch64?
  • From: Bamvor Jian Zhang <bamvor.zhangjian@xxxxxxxxxx>
  • Date: Mon, 26 Jan 2015 17:30:11 +0800
  • Message-id: <54C60923.2060301@huawei.com>
Hi, guys

This is Bamvor Jian Zhang from Huawei OS team.

Recently, I am working on enable the ILP32 support for arm64 based on the
community work[kernel\_ilp32][glibc\_ilp32].

ILP32 is a method for running 32bit application on 64bit platform, such
binary is elf32 with aarch64 assembly and is compiled by 64bit compiler.
Refer the following table:

\- | arm 32bit | arm64 ILP32 | arm64 LP64
----------------|-------------|-------------|-------------
instruction set | armv7-a | armv8-a | armv8-a
int | 32bit | 32bit | 32bit
long | 32bit | **32bit** | 64bit
pointer | 32bit | **32bit** | 64bit

x32 and n32 is the ILP32 ABI in x86\_64 and MIPS 64 respectively.

Right now, more than 99% of LTP test cases is passed. And we get 2.6% to 7.9%
performance improvement compare with aarch64 without any optimization or tuning.
Base on these work, we are sure that ILP32 is worth to work on and we could feel
more confident if more and more packages build and test.

The obs seems the best way to build ilp32 packages, I wondering is there any
document or guidance about how to add ILP32 to an architecture or how to add a
new ABI to a new architecture?

I got 4 commit about aarch64 in obs source code[openbuildservice] with
"git log --grep aarch64":
effc064 [backend] aarch64 workers can also build 32bit arm
e0bd2e5 [api] add aarch64 to xml schema file
b71ecfe [api] add aarch64 architecture
0c08cbe [backend] add aarch64 architecture

But I still not puzzled about how to start.

I also found some Linux32 definitions in obs source code[openbuildservice],
does it
mean the ilp32 is supported on the following architecture?

src/backend/BSCando.pm: 'x86_64' => [ 'x86_64', 'i586:linux32',
'i686:linux32' ],
src/backend/BSCando.pm: 'parisc64'=> [ 'hppa64', 'hppa:linux32' ],
src/backend/BSCando.pm: 'ppc64' => [ 'ppc64le', 'ppc64', 'ppc:linux32' ],
src/backend/BSCando.pm: 'ppc64p7' => [ 'ppc64le', 'ppc64p7', 'ppc:linux32'
],
src/backend/BSCando.pm: 'ppc64le' => [ 'ppc64le', 'ppc64', 'ppc:linux32' ],
src/backend/BSCando.pm: 's390x' => [ 's390x', 's390:linux32' ],
src/backend/BSCando.pm: 'sparc64' => [ 'sparc64v', 'sparc64', 'sparcv9v',
'sparcv9', 'sparcv8:linux32', 'sparc:linux32' ],

BTW: basically, add ilp32 support means that adding ilp32 support to kernel,
gcc and glibc. And pass CC or CXX with additional -mabi=ilp32 to overwrite the
default -mabi=lp64 when building the packages.

regards

bamvor

[kernel\_ilp32] kernel ilp32 patch(v3): https://lkml.org/lkml/2014/9/3/704
[glibc\_ilp32] glibc ilp32 patch:
https://sourceware.org/ml/libc-alpha/2014-10/msg00596.html
[openbuildservice] https://github.com/openSUSE/open-build-service.git

--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-buildservice+owner@xxxxxxxxxxxx

< Previous Next >
Follow Ups