This port is arm64 with a 32-bit ABI instead of a 64bit ABI. It is exactly equivalent to x32 on x86. The instruction set is 64-bit armv8, but not using the default LP64 ABI (64-bit longs and pointers) but the ILP32 ABI (ints, longs and pointers are all 32bit, same as they are on armhf/armel).

It gives exactly the same functionality as existing 32-bit ARM, but using the v8 instruction set. This is significant on arm cores that _only_ support v8, such as the Cavium ThunderX, where you also have software that is not 64-bit-safe.

It is fairly experimental at the moment (2016/2017) and whilst there is some upstream toolchain support, kernel and glibc support have not yet qbeen upstreamed ( July 2017) and may never be - there is some debate about whether the kernel people wish to maintain it.

Documentation

Linaro maintains a wiki page at https://wiki.linaro.org/Platform/arm64-ilp32

Status

Linaro is doing bootstrap work so that it is possible to build this in Debian. It is unlikely to become a Debian port unless it achieves sufficient interest and maturity to be maintainable. This may happen if enough 64-bit-only cores are produced, whilst interest in 32-bit-only software remains.

packages (unstable) are available here: http://people.linaro.org/~wookey/ilp32

There is a working cross-toolchain there, plus a set of cross-built packages. The idea is to get to the point where a debootstrappable image exists.

The rebootstrap branch containing all the patches lives here: https://anonscm.debian.org/cgit/users/wookey/rebootstrap.git/log/?h=ilp32

Debian differences

The debian port is a 'proper' multiarchable port for this ABI. Most other efforts so far have been to build an aarch64/arm64 toolchain which can build both LP64 and ILP32 ABI binaries, and treat everything as multilib. ?OpenSuse did an OBS build of a pile of packages to produce a set of arm64ilp32 binaries in 2016.

Patches/BUGs

dpkg
binutils 
gcc-6
glibc
libaio
openssl
libgpg-error
gmp  

kernel

Here's how to build an arm64ilp32 kernel