IA-32 Intel® Architecture and Intel® Extended Memory 64 Technology
Total Page:16
File Type:pdf, Size:1020Kb
Intel® 64 and IA-32 Architectures Software Developer’s Manual Documentation Changes August 2008 Notice: The Intel® 64 and IA-32 architectures may contain design defects or errors known as errata that may cause the product to deviate from published specifications. Current characterized errata are documented in the specification updates. Document Number: 252046-022 INFORMATIONLegal Lines and Disclaimers IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended for use in medical, life saving, or life sustaining applications. Intel may make changes to specifications and product descriptions at any time, without notice. 64-bit computing on Intel architecture requires a computer system with a processor, chipset, BIOS, operating system, device drivers and applications enabled for Intel® 64 architecture. Performance will vary depending on your hardware and software configurations. Consult with your system vendor for more information. Designers must not rely on the absence or characteristics of any features or instructions marked “reserved” or “undefined.” Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order. I2C is a two-wire communications bus/protocol developed by Philips. SMBus is a subset of the I2C bus/protocol and was developed by Intel. Implementations of the I2C bus/protocol may require licenses from various entities, including Philips Electronics N.V. and North American Philips Corporation. Intel, Pentium, Intel Core, Intel Xeon, Intel 64, Intel NetBurst, and the Intel logo, and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries. *Other names and brands may be claimed as the property of others. Copyright © 2002–2008, Intel Corporation. All rights reserved.. 2Intel® 64 and IA-32 Architectures Software Developer’s Manual Documentation Changes Contents Revision History . 4 Preface . 5 Summary Tables of Changes . 6 Documentation Changes. 7 Intel® 64 and IA-32 Architectures Software Developer’s Manual Documentation Changes 3 Revision History Revision History Revision Description Date -001 • Initial release November 2002 • Added 1-10 Documentation Changes. -002 • Removed old Documentation Changes items that already have been December 2002 incorporated in the published Software Developer’s manual • Added 9 -17 Documentation Changes. • Removed Documentation Change #6 - References to bits Gen and Len -003 Deleted. February 2003 • Removed Documentation Change #4 - VIF Information Added to CLI Discussion • Removed Documentation changes 1-17. -004 June 2003 • Added Documentation changes 1-24. • Removed Documentation Changes 1-24. -005 September 2003 • Added Documentation Changes 1-15. -006 • Added Documentation Changes 16- 34. November 2003 • Updated Documentation changes 14, 16, 17, and 28. -007 January 2004 • Added Documentation Changes 35-45. • Removed Documentation Changes 1-45. -008 March 2004 • Added Documentation Changes 1-5. -009 • Added Documentation Changes 7-27. May 2004 • Removed Documentation Changes 1-27. -010 August 2004 • Added Documentation Changes 1. -011 • Added Documentation Changes 2-28. November 2004 • Removed Documentation Changes 1-28. -012 March 2005 • Added Documentation Changes 1-16. • Updated title. -013 • There are no Documentation Changes for this revision of the July 2005 document. -014 • Added Documentation Changes 1-21. September 2005 • Removed Documentation Changes 1-21. -015 March 9, 2006 • Added Documentation Changes 1-20. -016 • Added Documentation changes 21-23. March 27, 2006 • Removed Documentation Changes 1-23. -017 September 2006 • Added Documentation Changes 1-36. -018 • Added Documentation Changes 37-42. October 2006 • Removed Documentation Changes 1-42. -019 March 2007 • Added Documentation Changes 1-19. -020 • Added Documentation Changes 20-27. May 2007 • Removed Documentation Changes 1-27. -021 November 2007 • Added Documentation Changes 1-6 • Removed Documentation Changes 1-6 -022 August 2008 • Added Documentation Changes 1-6 4Intel® 64 and IA-32 Architectures Software Developer’s Manual Documentation Changes Preface Preface This document is an update to the specifications contained in the Affected Documents table below. This document is a compilation of device and documentation errata, specification clarifications and changes. It is intended for hardware system manufacturers and software developers of applications, operating systems, or tools. Affected Documents Document Document Title Number/Location Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic 253665 Architecture Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2A: 253666 Instruction Set Reference, A-M Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2B: 253667 Instruction Set Reference, N-Z Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A: 253668 System Programming Guide. Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3B: 253669 System Programming Guide Nomenclature Documentation Changes include typos, errors, or omissions from the current published specifications. These will be incorporated in any new release of the specification. Intel® 64 and IA-32 Architectures Software Developer’s Manual Documentation Changes 5 Summary Tables of Changes Summary Tables of Changes The following table indicates documentation changes which apply to the Intel® 64 and IA-32 architectures. This table uses the following notations: Codes Used in Summary Tables Change bar to left of table row indicates this erratum is either new or modified from the previous version of the document. Documentation Changes No. DOCUMENTATION CHANGES 1 Extended Control Registers (Chapter 2, Vol 3A) 2 Various Updates Throughout Chapter to Reference MAXPHYADDR as an Address Width (Chapter 3, Vol 3A) 3 Page-Level Protection and Execute-Disable Bit (Chapter 4, Vol 3A) 4 Machine-Check Exceptions (Chapter 5, Vol 3A) 5 Various Updates Throughout Chapter (Chapter 7, Vol 3A) 6 Preventing Caching (Chapter 10, Vol 3A) 6Intel® 64 and IA-32 Architectures Software Developer’s Manual Documentation Changes Documentation Changes Documentation Changes 1. Extended Control Registers (Chapter 2, Vol 3A) Change bars show changes to Chapter 2 of the Intel® 64 and IA-32 Architectures Soft- ware Developer’s Manual, Volume 3A: System Programming Guide. 2.6 Extended Control Registers (including the XFEATURE_ENABLED_MASK Register) If CPUID.01H:ECX.XSAVE[bit 26] is 1, the processor supports one or more extended control registers (XCRs). Currently, the only such register defined is XCR0, the XFEATURE_ENABLED_MASK register. This register specifies the set of processor states that the operating system enables on that processor, e.g. x87 FPU States, SSE states, and other processor extended states that Intel 64 architecture may introduce in the future. The OS programs XCR0 to reflect the features it supports. 63 2 1 0 1 Reserved for XCR0 bit vector expansion Reserved / Future processor extended states SSE state x87 FPU/MMX state (must be 1) Reserved (must be 0) Figure 2-7. XFEATURE_ENABLED_MASK Register (XCR0) Software can access XCR0 only if CR4.OSXSAVE[bit 18] = 1. (This bit is also readable as CPUID.01H:ECX.OSXSAVE[bit 27].) The layout of XCR0 is architected to allow software to use CPUID leaf function 0DH to enumerate the set of bits that the processor supports in XCR0 (see CPUID instruction in Intel® 64 and IA-32 Architectures Software Devel- oper’s Manual, Volume 2A). Each processor state (X87 FPU state, SSE state, or a future processor extended state) is represented by a bit in XCR0. The OS can enable future processor extended states in a forward manner by specifying the appropriate bit mask value using the XSETBV instruction according to the results of the CPUID leaf 0DH. With the exception of bit 63, each bit in the XFEATURE_ENABLED_MASK register (XCR0) corresponds to a subset of the processor states. XCR0 thus provides space for up to 63 Intel® 64 and IA-32 Architectures Software Developer’s Manual Documentation Changes 7 Documentation Changes sets of processor state extensions. Bit 63 of XCR0 is reserved for future expansion and will not represent a processor extended state. Currently, the XFEATURE_ENABLED_MASK register (XCR0) has two processor states defined, with up to 61 bits reserved for future processor extended states: • XCR0.X87 (bit 0): If 1, indicates x87 FPU state (including MMX register states) is supported in the processor. Bit 0 must be 1. An attempt to write 0 causes a #GP exception. • XCR0.SSE (bit 1): If 1, indicates MXCSR and XMM registers (XMM0-XMM15 in 64-bit mode, otherwise XMM0-XMM7) are supported by XSAVE/XRESTOR in the processor. Any attempt to set a reserved bit (as determined by the contents of EAX and EDX after executing CPUID with EAX=0DH,