Linux's x32 ABI is 64-bit code with 32-bit pointers. All the advantages of 64-bit but with a cache footprint similar to 32-bit code. Plain old 32-bit code uses the i386 ABI, not x32.
x32 is a Linux ABI that combines the larger register set of x86_64 with smaller memory and cache footprint using 32-bit pointers. Code produced for the environment can run up to 40% faster than non-x32 code.
The official ABI documentation is here (in LaTeX source). (TODO: find a pdf built from that source).
x32 is not the same thing as legacy 32-bit. (That's the Intel386 or i386 System V psABI. See also the x86 tag wiki for more ABI links).
x32 support was added to the Linux 3.4 kernel. It requires GLIBC 2.11 and GCC 4.8. In addition, a modern distribution, like Debian 8, Fedora 17 or Ubuntu 13.04 is needed.
The x32 extensions must be compiled into the kernel, and must be enabled at boot time with a option like GRUB_CMDLINE_LINUX="syscall.x32=y"
.
The x32 ABI is rarely used. Some modern distros (like Arch) don't build support for it in their default kernel. Many people either don't think the extra complication of supporting another ABI (and set of libraries) is worth the performance benefit, or don't realize the performance benefit of the reduced cache footprint.