Intel 253668-032US ユーザーズマニュアル

ページ / 806
17-14   Vol. 3
8086 EMULATION
17.2.6 
Leaving Virtual-8086 Mode
The processor can leave the virtual-8086 mode only through an interrupt or excep-
tion. The following are situations where an interrupt or exception will lead to the 
processor leaving virtual-8086 mode (see Figure 17-3):
The processor services a hardware interrupt generated to signal the suspension 
of execution of the virtual-8086 application. This hardware interrupt may be 
generated by a timer or other external mechanism. Upon receiving the hardware 
interrupt, the processor enters protected mode and switches to a protected-
mode (or another virtual-8086 mode) task either through a task gate in the 
protected-mode IDT or through a trap or interrupt gate that points to a handler 
that initiates a task switch. A task switch from a virtual-8086 task to another task 
loads the EFLAGS register from the TSS of the new task. The value of the VM flag 
in the new EFLAGS determines if the new task executes in virtual-8086 mode or 
not.
The processor services an exception caused by code executing the virtual-8086 
task or services a hardware interrupt that “belongs to” the virtual-8086 task. 
Here, the processor enters protected mode and services the exception or 
hardware interrupt through the protected-mode IDT (normally through an 
interrupt or trap gate) and the protected-mode exception- and interrupt-
handlers. The processor may handle the exception or interrupt within the context 
of the virtual 8086 task and return to virtual-8086 mode on a return from the 
handler procedure. The processor may also execute a task switch and handle the 
exception or interrupt in the context of another task.
The processor services a software interrupt generated by code executing in the 
virtual-8086 task (such as a software interrupt to call a MS-DOS* operating 
system routine). The processor provides several methods of handling these 
software interrupts, which are discussed in detail in Section 17.3.3, “Class 
3—Software Interrupt Handling in Virtual-8086 Mode”
. Most of them involve the 
processor entering protected mode, often by means of a general-protection 
(#GP) exception. In protected mode, the processor can send the interrupt to the 
virtual-8086 monitor for handling and/or redirect the interrupt back to the 
application program running in virtual-8086 mode task for handling.
IA-32 processors that incorporate the virtual mode extension (enabled with the 
VME flag in control register CR4) are capable of redirecting software-generated 
interrupts back to the program’s interrupt handlers without leaving virtual-8086 
mode. See Section 17.3.3.4, “Method 5: Software Interrupt Handling”, for more 
information on this mechanism.
A hardware reset initiated by asserting the RESET or INIT pin is a special kind of 
interrupt. When a RESET or INIT is signaled while the processor is in virtual-8086 
mode, the processor leaves virtual-8086 mode and enters real-address mode.
Execution of the HLT instruction in virtual-8086 mode will cause a general-
protection (GP#) fault, which the protected-mode handler generally sends to the 
virtual-8086 monitor. The virtual-8086 monitor then determines the correct