Intel 64 and IA-32 Architectures Software Developer's Manual
Intel 64 and IA-32 Architectures Software Developer's Manual
Intel 64 and IA-32 Architectures Software Developer's Manual
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Documentation Changes<br />
Virtual-8086 Mode Exceptions<br />
#GP(0)<br />
If a memory oper<strong>and</strong> effective address is outside the CS, DS, ES,<br />
FS, or GS segment limit.<br />
#SS(0)<br />
If a memory oper<strong>and</strong> effective address is outside the SS segment<br />
limit.<br />
#NM CR0.EM[bit 2] or CR0.TS[bit 3] = 1.<br />
#PF(fault-code) If a page fault occurs.<br />
#AC(0)<br />
If alignment checking is enabled <strong>and</strong> an unaligned memory reference<br />
is made.<br />
Compatibility Mode Exceptions<br />
Same exceptions as in Protected Mode.<br />
<strong>64</strong>-Bit Mode Exceptions<br />
#SS(0)<br />
If a memory address referencing the SS segment is in a non-canonical<br />
form.<br />
#GP(0)<br />
If the memory address is in a non-canonical form.<br />
#NM CR0.EM[bit 2] or CR0.TS[bit 3] = 1.<br />
#MF<br />
If there is a pending x87 FPU exception.<br />
#PF(fault-code) If a page fault occurs.<br />
#AC(0)<br />
If alignment checking is enabled <strong>and</strong> an unaligned memory reference<br />
is made while the current privilege level is 3.<br />
22. CPUID register reference corrected<br />
In Section 7.5.5 of the <strong>Intel</strong> ® <strong>64</strong> <strong>and</strong> <strong>IA</strong>-<strong>32</strong> <strong>Architectures</strong> <strong>Software</strong> Developer’s <strong>Manual</strong>,<br />
Volume 3A, the name of a register (EBX) has been corrected. Part of the section has<br />
been reprinted below. See the change bar.<br />
-------------------------------------------------------------------<br />
7.5.5 Identifying Logical Processors in an MP System<br />
After the BIOS has completed the MP initialization protocol, each logical processor can be<br />
uniquely identified by its local APIC ID. <strong>Software</strong> can access these APIC IDs in either of<br />
the following ways:<br />
• Read APIC ID for a local APIC — Code running on a logical processor can execute<br />
a MOV instruction to read the processor’s local APIC ID register (see Section 8.4.6,<br />
“Local APIC ID”). This is the ID to use for directing physical destination mode<br />
interrupts to the processor.<br />
• Read ACPI or MP table — As part of the MP initialization protocol, the BIOS creates<br />
an ACPI table <strong>and</strong> an MP table. These tables are defined in the Multiprocessor Specification<br />
Version 1.4 <strong>and</strong> provide software with a list of the processors in the system<br />
<strong>and</strong> their local APIC IDs. The format of the ACPI table is derived from the ACPI specification,<br />
which is an industry st<strong>and</strong>ard power management <strong>and</strong> platform configuration<br />
specification for MP systems.<br />
• Read Initial APIC ID — An APIC ID is assigned to a logical processor during power<br />
up <strong>and</strong> is called the initial APIC ID. This is the APIC ID reported by<br />
CPUID.1:EBX[31:24] <strong>and</strong> may be different from the current value read from the<br />
local APIC. Use the initial APIC ID to determine the topological relationship between<br />
logical processors.<br />
34 <strong>Intel</strong> ® <strong>64</strong> <strong>and</strong> <strong>IA</strong>-<strong>32</strong> <strong>Architectures</strong> <strong>Software</strong> Developer’s <strong>Manual</strong> Documentation Changes