Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B, Instruction Set Reference, N-Z
Vol. 2B 4-333
INSTRUCTION SET REFERENCE, N-Z
Operation
IF PE = 0 (* Executing in real-address mode *)
THEN
IF
← 1; (* Set Interrupt Flag *)
ELSE (* Executing in protected mode or virtual-8086 mode *)
IF VM
= 0 (* Executing in protected mode*)
THEN
IF IOPL
≥ CPL
THEN
IF
← 1; (* Set Interrupt Flag *)
ELSE
IF (IOPL < CPL) and (CPL
= 3) and (VIP = 0)
THEN
VIF
← 1; (* Set Virtual Interrupt Flag *)
ELSE
#GP(0);
FI;
FI;
ELSE (* Executing in Virtual-8086 mode *)
IF IOPL
= 3
THEN
IF
← 1; (* Set Interrupt Flag *)
Table 4-4. Decision Table for STI Results
PE VM IOPL CPL PVI VIP VME STI Result
0XXXXXX IF = 1
10
≥ CPLXXXX IF = 1
10< CPL310X VIF = 1
10< CPL < 3XXX GP Fault
10
< CPL X 0 X X GP Fault
10< CPL X X 1 X GP Fault
113XXXX IF = 1
11< 3X X 0 1 VIF = 1
11
< 3X X 1 X GP Fault
11< 3XXX0 GP Fault
NOTES:
X = This setting has no impact.