*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> i386/i386_vm86 (2)              



NAME    [Toc]    [Back]

     i386_vm86 - set virtual 8086 processor registers and mode

SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <signal.h>
     #include <machine/segments.h>
     #include <machine/sysarch.h>
     #include <machine/vm86.h>

     i386_vm86(struct vm86_struct *vmcp);

DESCRIPTION    [Toc]    [Back]

     i386_vm86() 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 from vmcp->substr.ss_cpu_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  nth 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 nth 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  kth  bit in the vmcp->int21_byuser array is
checked when
     INT 21 is requested and the ah register is k.

     Note: Code using the i386_vm86() function must  be  compiled
using -li386.

RETURN VALUES    [Toc]    [Back]

     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.

ERRORS    [Toc]    [Back]

     i386_vm86() will fail if:

     [EFAULT]  The state at vmcp was not  readable  to  the  user

REFERENCES    [Toc]    [Back]

     Intel, i386 Microprocessor Programmer's Reference Manual.

OpenBSD      3.6                        February     20,     1996
[ Back ]
 Similar pages
Name OS Title
vm86 Linux enter virtual 8086 mode
doublebuffer IRIX sets the display mode to double buffer mode
cmode IRIX sets color map mode as the current mode.
assign_cpu_to_pset Tru64 Assigns a processor to a processor set
pset_assign_cpu Tru64 Assigns a processor to a processor set
unicode_stop Linux put the console out of unicode mode (ie. in 8-bit mode).
vm_map FreeBSD virtual address space portion of virtual memory subsystem
setvideo IRIX set and get video registers
getvideo IRIX set and get video registers
fpc IRIX floatingpoint control registers
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service