22f2f875ad
A nice thing about requiring a vDSO is that it makes it incredibly easy to provide full support for running 32-bit processes on 64-bit systems. Instead of letting the kernel be responsible for composing/decomposing 64-bit arguments across multiple registers/stack slots, all of this can now be done in the vDSO. This means that there is no need to provide duplicate copies of certain system calls, like the sys_lseek() and freebsd32_lseek() we have for COMPAT_FREEBSD32. This change imports a new vDSO from the CloudABI repository that has automatically generated code in it that copies system call arguments into a buffer, padding them to eight bytes and zero-extending any pointers/size_t arguments. After returning from the kernel, it does the inverse: extracting return values, in the process truncating pointers/size_t values to 32 bits. Obtained from: https://github.com/NuxiNL/cloudabi |
||
---|---|---|
.. | ||
cloudabi32_types.h | ||
cloudabi64_types.h | ||
cloudabi_types_common.h | ||
cloudabi_vdso_aarch64.S | ||
cloudabi_vdso_i686_on_64bit.S | ||
cloudabi_vdso_i686.S | ||
cloudabi_vdso_x86_64.S | ||
syscalls32.master | ||
syscalls64.master |