CPU ID - EFlags registers

Bit Flag name Description
00 Carry Flag Set when an arithmetic operation generates a carry or a borrow. Provides an overflow indication for unsigned arithmetic.
01 undefined Always set to 1
02 Parity Flag Set when the parity of the lower 8 bits of the result is even.
03 undefined Always set to 0
04 Auxiliary Flag Set when an arithmetic operation generates a carry or a borrow out of bit 3. This is used in performing Binary Coded Decimal operations.
05 undefined Always set to 0
06 Zero Flag Set when the result of an operation is 0.
07 Sign Flag Set to the most significant bit of the result of an operation. The most significant bit is the sign bit in two's complement notation.
08 Trap Flag (1) A single-step interrupt will occur after every instruction.
(0) Normal instruction execution
(!) Trap Flag is always cleared when an interrupt is generated either by software or hardware.
09 Interrupt Flag (1) Enables the recognition of external interrupts.
(0) External interrupts are held pending.
10 Direction Flag (1) String instructions post-decrement the string index register after each step.
(0) String instructions post-increment the string index register after each step.
11 Overflow Flag Set if the result of an arithmetic operation is too large or too small to be represented as a two's complement integer in the number of bits available to store the result
12 I/O Privilege Level Supports protection model. Indicates the privilege level required to perform I/O instructions. If the current privilege level is numerically less than or equal to the IOPL, I/O intructions can be executed.
13
14 Nested Task Flag (1) Controls operation of IRET instruction. The IRET (interrupt return) instruction will return through a task switch to the task indicated in the current TSS.
(0) A normal return is performed by restoring EFLAGS, CS and EIP with values from the stack
15 undefined Always set to 0
16 Restart Flag (1) Indicates that debug faults should be ignored.
(0) Debug faults are accepted.
(!) This bit is cleared by the processor at the successful completion of every instruction, and is set when a fault other than a debug fault is signalled.
17 Virtual Mode Flag (1) Processor will execute this task in Virtual 8086 mode.
(0) Processor will execute this task in normal protected mode.
18 Alignment Check (1) Processor will generate an Alignment Check Fault whenever a memory reference is made from privilege level 3 to a misaligned address. A misaligned address is defined as any data reference that is not evenly divisible by its size.
(0) Processor operates normal; it does not generate faults on misaligned addresses.
(!) 486 and higher only
19 Virtual Interrupt Flag (1) Virtualizes Interrupt flag when Virtual 8086 Mode Extensions or Protected Mode Extensions are enabled. When set indicates that interrupts are handled as usual.
(0) Indicates that current task should not receive external interrupts. If an interrupt is generated while this flag is clear then a protected mode exception is generated.
(!) Virtual or Protected Mode Extensions Supported Only
20 Virtual Interrupt Pending This bit is used by the operating system to indicate to the processor that a virtualized interrupt is pending for the current task. If set, then any attempt to toggle the Virtual Interrupt Flag to the on state will generate a protected mode exception.
(!) Virtual or Protected Mode Extensions Supported Only
21 ID Flag If this bit can be toggled then the processor supports the CPUID instruction.
22 undefined Always set to 0
23 undefined Always set to 0
24 undefined Always set to 0
25 undefined Always set to 0
26 undefined Always set to 0
27 undefined Always set to 0
28 undefined Always set to 0
29 undefined Always set to 0
30 undefined Always set to 0
31 undefined Always set to 0