set virtual 8086 processor registers
will set the process into virtual 8086 mode using the registers and
selectors specified by the context pointed to by vmcp.
The processor registers are set from
vmcp->substr.regs, and the emulated processor type
The kernel keeps a pointer to the context, and uses the tables
stored at vmcp->int_byuser and
vmcp->int21_byuser for fast virtual interrupt
handling. If the n
th bit is
clear in the first of these arrays, then the kernel may directly emulate the
real-mode x86 INT n instruction handling. If the
th bit is set, then the
process is delivered a signal when an INT instruction is executed.
Since MS-DOS puts many DOS functions onto interrupt 21, it is
handled specially: the k
in the vmcp->int21_byuser array is checked when INT
21 is requested and the ah
register is k.
Code using the
function must be compiled using
This routine does not normally return: 32-bit mode will be restored by the delivery of a signal to the process. In case of an error in setting the VM86 mode, a value of -1 is returned and the global variable errno is set to indicate the error.
i386_vm86() will fail if:
- The state at vmcp was not readable to the user process.
Intel, i386 Microprocessor Programmer's Reference Manual.