vm86old, vm86 — enter virtual 8086 mode


#include <sys/vm86.h>

int vm86old(struct vm86_struct *info);

int vm86(unsigned long fn, struct vm86plus_struct *v86);


The system call vm86() was introduced in Linux 0.97p2. In Linux 2.1.15 and 2.0.28, it was renamed to vm86old(), and a new vm86() was introduced. The definition of struct vm86_struct was changed in 1.1.8 and 1.1.9.

These calls cause the process to enter VM86 mode (virtual-8086 in Intel literature), and are used by dosemu.

VM86 mode is an emulation of real mode within a protected mode task.

Return Value

On success, zero is returned. On error, -1 is returned, and errno is set appropriately.



This return value is specific to i386 and indicates a problem with getting user-space data.


This return value indicates the call is not implemented on the present architecture.


Saved kernel stack exists. (This is a kernel sanity check; the saved stack should exist only within vm86 mode itself.)

Conforming to

This call is specific to Linux on 32-bit Intel processors, and should not be used in programs intended to be portable.


This page is part of release 5.04 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.

Referenced By

capabilities(7), modify_ldt(2), syscalls(2), systemd.exec(5), unimplemented(2).

The man page vm86old(2) is an alias of vm86(2).

2009-02-20 Linux Programmer's Manual