Recientemente an email was released through the Linux Kernel mailing list and this email has as its main objective remove the code from the x32 subarchitecture implementation (not to be confused with x86 IA-32).
Which allows you to use the 32-bit memory addressing model (hybrid x86 and x86_64) on x86 64-bit systems.
What is the x32 architecture?
It is important to mention that the x32 sub-architecture is a hybrid x86_64 ABI, which allows a 32-bit memory addressing model to be used on 64-bit systems (the processor operates in 64-bit mode, but uses 32-bit pointers and arithmetic operations).
ABI X32 allows applications to take full advantage of the x86_64 architecture, such as additional registers and faster instructions, PIC ABI.
At the same time, ABI X32 supports 32-bit memory pointers, which saves memory, contributes to more efficient filling of the processor cache, and has a positive effect on the overall speed of code execution.
The limitation of ABI X32 is the impossibility of directing more than 4 GB of memory from the application.
X32 support has been part of the Linux Kernel since its 3.4 release, formed in May 2012.
Table of Contents
Developers will debate whether to continue with the maintenance of this architecture or not
According to developer proposing removal of x32 technology it has not been justified and has not found a practical application in modern industrial layouts.
Besides, andl x32 code uses quite controversial method of working with system calls, which creates the risk of interrupting normal operation after processing the system call implementations.
Linus Torvalds said he would agree to removing x32 if no arguments are submitted or if the systems in which the x32 subarchitecture has been applied are not presented.
Linus also noted that the use of the x32 architecture was apparently limited to extreme performance testings, as support for this subarchitecture is associated with a great deal of hassle in maintaining distributions and the development environment.
I am seriously considering submitting a patch to remove x32 support from Linux. Here are some issues with this:
- It is not entirely clear that it has users. As far as I know, it is supported on Gentoo and Debian
- The way the calling system works is very strange. Most syscalls on x32 enter via their * native * (i.e. not COMPAT_SYSCALL_DEFINE) with the entry point, and this is intentional.
For example, adjtimex () uses the native input, not the compat input, because the x32 struct timex matches the x86_64 layout. But a handful of syscalls have separate entry points - these are the syscalls that start at 512.
These enter through the COMPAT_SYSCALL_DEFINE entry points.
X32 syscalls that are * not * in the 512 range violate every semblance of the kernel syscall convention.
In syscall handlers, in_compat_syscall () returns true, but the COMPAT_SYSCALL_DEFINE entry is not invoked this is insane and you run the risk of breaking things when people refactor their syscall implementations.
And above all, no one tries these things.
On one occasion, When testing x32, one of the Gentoo developers concluded that the performance improvement when switching to ABI x32 is not as great as the synthetic tests show From the makers of ABI x32:
significant progress is seen only when compared to the previous x86 architecture, but when compared to the current x86-64 architecture, the gain is negligible (SPEC tests by the creators of x32 showed up to 40% acceleration compared with the classic ABI x86_64, tests with the H.264 codec showed an acceleration of 15-20%).