V86-64 is a linux kernel patch that enables obsolete 8086 programs to be operational on contemporary x86-64 AMD and Intel processors, providing compatibility between legacy and new software.
At this time, only the vm86() system call is backed up for 32-bit Linux programs. It is also possible to add support for 64-bit programs by assigning it a system call number, but that has not been executed yet. Furthermore, the vm86_old() system call is not currently supported. However, DOSEMU 1.4.0/1.2.2 (32-bit) works satisfactorily, and the patch has been tested with FreeDOS and PC-DOS 2000, Microsoft Windows 3.1 (DOSEMU 1.4.0). DPMI also works efficiently.
SMP is backed up by the patch, but it has not yet been fully tested. SMP has a problem with multi-threading on memory area in addresses from 0x00110000 to 0x00113FFF, which caused by the four pages used by the monitor to govern the V86 program. This can result in a segfault for other threads of the user space monitor process. To evade this, userspace V86 monitors should not use these pages.
The patch is currently very experimental and requires extensive testing. It should be used at one’s own risk. At the moment, only AMD64 is tested, and EM64T might also work, but it has to be tested to confirm its effectiveness.
To use the patch, please apply it to your kernel source tree installation. For instance, CD to /usr/src and then bunzip2.
Version 20080608: N/A