[Buildroot] [RFC PATCH v2 0/5] Add ILP32 support in aarch64
Bamvor Jian Zhang
bamvor.zhangjian at huawei.com
Fri Apr 10 09:16:53 UTC 2015
On 2015/3/18 17:49, Zhang Jian(Bamvor) wrote:
Ping.
It seems that no response in recent four weeks.
bamvor
> This is second version of my patches. This previous version is here[1].
> The previous discussion, Gustavo agree that only external toolchain is in
> consideration at this time. I will try to work on the buildroot toolchain
> after current series patch is upstreamed.
>
> ILP32 is very useful when the user want to migrate from arm 32bit to 64bit
> with minimal risk. There is no code changes and almost no footprint changes
> after migration. ILP32 could get the better performance compare with arm 32bit
> (use 64bit register and instruction instead of 32bit one) and aarch64 LP64
> (aarch64 default ABI).
>
> Our test show that the performance of ILP32 is roughly 10% better than arm64
> LP64 while the footprint is 86% of LP64. Because of these, It is useful for
> both embedded and enterprise system.
>
> Here is the details definition of ILP32:
> ILP32 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
>
> LP64 is the default ABI on arm64(Implies -mabi=lp64 while compiling), and the
> kernel remains in LP64 no matter ILP32 enables or not.
>
> These series patches introduce the big endian support in aarch64 and then add
> ILP32 special filename and menuconfig step by step.
>
> The test of build is based on linaro kernel [2] and toolchain built by linaro
> ABE environment[3], anyone could built this toolchain through the simpile
> abe script.
>
> This is my first time I try to contribute the buildroot, feedback is very
> appreciated. Sorry if there are some coding style issues.
>
> changes since v1
> 1. avoid mabi issue in gcc 4.8 while build aarch64 lp64.
> 2. change default libc, toolchain for ilp32 build.
> 3. others changes suggested by Gustavo.
>
> [1] http://lists.busybox.net/pipermail/buildroot/2015-March/122115.html
> [2] https://git.linaro.org/kernel/linux-linaro-tracking.git
> [3] https://wiki.linaro.org/ABE
>
> Zhang Jian(Bamvor) (5):
> aarch64: add big endian(aarch64_be) support
> aarch64: ilp32: handle special file name
> aarch64: ilp32: add ilp32 compiler and linker flags
> aarch64: ilp32: add ilp32 build config
> aarch64: ilp32 defconfig examples
>
> Makefile | 11 +++++-
> arch/Config.in | 12 +++++--
> arch/Config.in.aarch64 | 40 ++++++++++++++++++++-
> configs/aarch64_be_defconfig | 2 ++
> configs/aarch64_be_ilp32_defconfig | 8 +++++
> configs/aarch64_ilp32_defconfig | 8 +++++
> package/Makefile.in | 10 +++++-
> package/gcc/Config.in.host | 3 +-
> toolchain/Config.in | 2 ++
> toolchain/helpers.mk | 4 +--
> toolchain/toolchain-buildroot/Config.in | 27 +++++++-------
> toolchain/toolchain-external/Config.in | 20 +++++++++++
> toolchain/toolchain-external/toolchain-external.mk | 41 ++++++++++++++++++++--
> 13 files changed, 165 insertions(+), 23 deletions(-)
> create mode 100644 configs/aarch64_be_defconfig
> create mode 100644 configs/aarch64_be_ilp32_defconfig
> create mode 100644 configs/aarch64_ilp32_defconfig
>
More information about the buildroot
mailing list