Intel® 64 And IA 32 Architectures Software Developer’s Manual, Volume 3 (3A, 3B, 3C & 3D): System Programming Guide SDM Vol 3:
User Manual: Pdf
Open the PDF directly: View PDF
Page Count: 1628 [warning: Documents this large are best viewed by clicking the View PDF Link!]
- Chapter 1 About This Manual
- Chapter 2 System Architecture Overview
- 2.1 Overview of the System-Level Architecture
- 2.2 Modes of Operation
- 2.3 System Flags and Fields in the EFLAGS Register
- 2.4 Memory-Management Registers
- 2.5 Control Registers
- 2.6 Extended Control Registers (Including XCR0)
- 2.7 Protection Key Rights Register (PKRU)
- 2.8 System Instruction Summary
- 2.8.1 Loading and Storing System Registers
- 2.8.2 Verifying of Access Privileges
- 2.8.3 Loading and Storing Debug Registers
- 2.8.4 Invalidating Caches and TLBs
- 2.8.5 Controlling the Processor
- 2.8.6 Reading Performance-Monitoring and Time-Stamp Counters
- 2.8.7 Reading and Writing Model-Specific Registers
- 2.8.8 Enabling Processor Extended States
- Chapter 3 Protected-Mode Memory Management
- Chapter 4 Paging
- 4.1 Paging Modes and Control Bits
- 4.2 Hierarchical Paging Structures: an Overview
- 4.3 32-Bit Paging
- 4.4 PAE Paging
- 4.5 4-Level Paging
- 4.6 Access Rights
- 4.7 Page-Fault Exceptions
- 4.8 Accessed and Dirty Flags
- 4.9 Paging and Memory Typing
- 4.10 Caching Translation Information
- 4.11 Interactions with Virtual-Machine Extensions (VMX)
- 4.12 Using Paging for Virtual Memory
- 4.13 Mapping Segments to Pages
- Chapter 5 Protection
- 5.1 Enabling and Disabling Segment and Page Protection
- 5.2 Fields and Flags Used for Segment-Level and Page-Level Protection
- 5.3 Limit Checking
- 5.4 Type Checking
- 5.5 Privilege Levels
- 5.6 Privilege Level Checking When Accessing Data Segments
- 5.7 Privilege Level Checking When Loading the SS Register
- 5.8 Privilege Level Checking When Transferring Program Control Between Code Segments
- 5.8.1 Direct Calls or Jumps to Code Segments
- 5.8.2 Gate Descriptors
- 5.8.3 Call Gates
- 5.8.4 Accessing a Code Segment Through a Call Gate
- 5.8.5 Stack Switching
- 5.8.6 Returning from a Called Procedure
- 5.8.7 Performing Fast Calls to System Procedures with the SYSENTER and SYSEXIT Instructions
- 5.8.8 Fast System Calls in 64-Bit Mode
- 5.9 Privileged Instructions
- 5.10 Pointer Validation
- 5.11 Page-Level Protection
- 5.12 Combining Page and Segment Protection
- 5.13 Page-Level Protection and Execute-Disable Bit
- Chapter 6 Interrupt and Exception Handling
- 6.1 Interrupt and Exception Overview
- 6.2 Exception and Interrupt Vectors
- 6.3 Sources of Interrupts
- 6.4 Sources of Exceptions
- 6.5 Exception Classifications
- 6.6 Program or Task Restart
- 6.7 NonMaskable Interrupt (NMI)
- 6.8 Enabling and Disabling Interrupts
- 6.9 Priority Among Simultaneous Exceptions and Interrupts
- 6.10 Interrupt Descriptor Table (IDT)
- 6.11 IDT Descriptors
- 6.12 Exception and Interrupt Handling
- 6.13 Error Code
- 6.14 Exception and Interrupt Handling in 64-bit Mode
- 6.15 Exception and Interrupt Reference
- Interrupt 0—Divide Error Exception (#DE)
- Interrupt 1—Debug Exception (#DB)
- Interrupt 2—NMI Interrupt
- Interrupt 3—Breakpoint Exception (#BP)
- Interrupt 4—Overflow Exception (#OF)
- Interrupt 5—BOUND Range Exceeded Exception (#BR)
- Interrupt 6—Invalid Opcode Exception (#UD)
- Interrupt 7—Device Not Available Exception (#NM)
- Interrupt 8—Double Fault Exception (#DF)
- Interrupt 9—Coprocessor Segment Overrun
- Interrupt 10—Invalid TSS Exception (#TS)
- Interrupt 11—Segment Not Present (#NP)
- Interrupt 12—Stack Fault Exception (#SS)
- Interrupt 13—General Protection Exception (#GP)
- Interrupt 14—Page-Fault Exception (#PF)
- Interrupt 16—x87 FPU Floating-Point Error (#MF)
- Interrupt 17—Alignment Check Exception (#AC)
- Interrupt 18—Machine-Check Exception (#MC)
- Interrupt 19—SIMD Floating-Point Exception (#XM)
- Interrupt 20—Virtualization Exception (#VE)
- Interrupts 32 to 255—User Defined Interrupts
- Chapter 7 Task Management
- Chapter 8 Multiple-Processor Management
- 8.1 Locked Atomic Operations
- 8.2 Memory Ordering
- 8.2.1 Memory Ordering in the Intel® Pentium® and Intel486™ Processors
- 8.2.2 Memory Ordering in P6 and More Recent Processor Families
- 8.2.3 Examples Illustrating the Memory-Ordering Principles
- 8.2.3.1 Assumptions, Terminology, and Notation
- 8.2.3.2 Neither Loads Nor Stores Are Reordered with Like Operations
- 8.2.3.3 Stores Are Not Reordered With Earlier Loads
- 8.2.3.4 Loads May Be Reordered with Earlier Stores to Different Locations
- 8.2.3.5 Intra-Processor Forwarding Is Allowed
- 8.2.3.6 Stores Are Transitively Visible
- 8.2.3.7 Stores Are Seen in a Consistent Order by Other Processors
- 8.2.3.8 Locked Instructions Have a Total Order
- 8.2.3.9 Loads and Stores Are Not Reordered with Locked Instructions
- 8.2.4 Fast-String Operation and Out-of-Order Stores
- 8.2.5 Strengthening or Weakening the Memory-Ordering Model
- 8.3 Serializing Instructions
- 8.4 Multiple-Processor (MP) Initialization
- 8.5 Intel® Hyper-Threading Technology and Intel® Multi-Core Technology
- 8.6 Detecting Hardware Multi-Threading Support and Topology
- 8.7 Intel® Hyper-Threading Technology Architecture
- 8.7.1 State of the Logical Processors
- 8.7.2 APIC Functionality
- 8.7.3 Memory Type Range Registers (MTRR)
- 8.7.4 Page Attribute Table (PAT)
- 8.7.5 Machine Check Architecture
- 8.7.6 Debug Registers and Extensions
- 8.7.7 Performance Monitoring Counters
- 8.7.8 IA32_MISC_ENABLE MSR
- 8.7.9 Memory Ordering
- 8.7.10 Serializing Instructions
- 8.7.11 Microcode Update Resources
- 8.7.12 Self Modifying Code
- 8.7.13 Implementation-Specific Intel HT Technology Facilities
- 8.8 Multi-Core Architecture
- 8.9 Programming Considerations for Hardware Multi-Threading Capable Processors
- 8.10 Management of Idle and Blocked Conditions
- 8.10.1 HLT Instruction
- 8.10.2 PAUSE Instruction
- 8.10.3 Detecting Support MONITOR/MWAIT Instruction
- 8.10.4 MONITOR/MWAIT Instruction
- 8.10.5 Monitor/Mwait Address Range Determination
- 8.10.6 Required Operating System Support
- 8.10.6.1 Use the PAUSE Instruction in Spin-Wait Loops
- 8.10.6.2 Potential Usage of MONITOR/MWAIT in C0 Idle Loops
- 8.10.6.3 Halt Idle Logical Processors
- 8.10.6.4 Potential Usage of MONITOR/MWAIT in C1 Idle Loops
- 8.10.6.5 Guidelines for Scheduling Threads on Logical Processors Sharing Execution Resources
- 8.10.6.6 Eliminate Execution-Based Timing Loops
- 8.10.6.7 Place Locks and Semaphores in Aligned, 128-Byte Blocks of Memory
- 8.11 MP Initialization For P6 Family Processors
- Chapter 9 Processor Management and Initialization
- 9.1 Initialization Overview
- 9.2 x87 FPU Initialization
- 9.3 Cache Enabling
- 9.4 Model-Specific Registers (MSRs)
- 9.5 Memory Type Range Registers (MTRRs)
- 9.6 Initializing SSE/SSE2/SSE3/SSSE3 Extensions
- 9.7 Software Initialization for Real-Address Mode Operation
- 9.8 Software Initialization for Protected-Mode Operation
- 9.9 Mode Switching
- 9.10 Initialization and Mode Switching Example
- 9.11 Microcode Update Facilities
- 9.11.1 Microcode Update
- 9.11.2 Optional Extended Signature Table
- 9.11.3 Processor Identification
- 9.11.4 Platform Identification
- 9.11.5 Microcode Update Checksum
- 9.11.6 Microcode Update Loader
- 9.11.7 Update Signature and Verification
- 9.11.8 Optional Processor Microcode Update Specifications
- 9.11.8.1 Responsibilities of the BIOS
- 9.11.8.2 Responsibilities of the Calling Program
- 9.11.8.3 Microcode Update Functions
- 9.11.8.4 INT 15H-based Interface
- 9.11.8.5 Function 00H—Presence Test
- 9.11.8.6 Function 01H—Write Microcode Update Data
- 9.11.8.7 Function 02H—Microcode Update Control
- 9.11.8.8 Function 03H—Read Microcode Update Data
- 9.11.8.9 Return Codes
- Chapter 10 Advanced Programmable Interrupt Controller (APIC)
- 10.1 Local and I/O APIC Overview
- 10.2 System Bus Vs. APIC Bus
- 10.3 The Intel® 82489DX External APIC, the APIC, the xAPIC, and the X2APIC
- 10.4 Local APIC
- 10.5 Handling Local Interrupts
- 10.6 Issuing Interprocessor Interrupts
- 10.7 System and APIC Bus Arbitration
- 10.8 Handling Interrupts
- 10.8.1 Interrupt Handling with the Pentium 4 and Intel Xeon Processors
- 10.8.2 Interrupt Handling with the P6 Family and Pentium Processors
- 10.8.3 Interrupt, Task, and Processor Priority
- 10.8.4 Interrupt Acceptance for Fixed Interrupts
- 10.8.5 Signaling Interrupt Servicing Completion
- 10.8.6 Task Priority in IA-32e Mode
- 10.9 Spurious Interrupt
- 10.10 APIC Bus Message Passing Mechanism and Protocol (P6 Family, Pentium Processors)
- 10.11 Message Signalled Interrupts
- 10.12 Extended XAPIC (x2APIC)
- 10.12.1 Detecting and Enabling x2APIC Mode
- 10.12.2 x2APIC Register Availability
- 10.12.3 MSR Access in x2APIC Mode
- 10.12.4 VM-Exit Controls for MSRs and x2APIC Registers
- 10.12.5 x2APIC State Transitions
- 10.12.6 Routing of Device Interrupts in x2APIC Mode
- 10.12.7 Initialization by System Software
- 10.12.8 CPUID Extensions And Topology Enumeration
- 10.12.9 ICR Operation in x2APIC Mode
- 10.12.10 Determining IPI Destination in x2APIC Mode
- 10.12.11 SELF IPI Register
- 10.13 APIC Bus Message Formats
- Chapter 11 Memory Cache Control
- 11.1 Internal Caches, TLBs, and Buffers
- 11.2 Caching Terminology
- 11.3 Methods of Caching Available
- 11.4 Cache Control Protocol
- 11.5 Cache Control
- 11.6 Self-Modifying Code
- 11.7 Implicit Caching (Pentium 4, Intel Xeon, and P6 Family Processors)
- 11.8 Explicit Caching
- 11.9 Invalidating the Translation Lookaside Buffers (TLBs)
- 11.10 Store Buffer
- 11.11 Memory Type Range Registers (MTRRs)
- 11.11.1 MTRR Feature Identification
- 11.11.2 Setting Memory Ranges with MTRRs
- 11.11.3 Example Base and Mask Calculations
- 11.11.4 Range Size and Alignment Requirement
- 11.11.5 MTRR Initialization
- 11.11.6 Remapping Memory Types
- 11.11.7 MTRR Maintenance Programming Interface
- 11.11.8 MTRR Considerations in MP Systems
- 11.11.9 Large Page Size Considerations
- 11.12 Page Attribute Table (PAT)
- Chapter 12 Intel® MMX™ Technology System Programming
- Chapter 13 System Programming for Instruction Set Extensions and Processor Extended States
- 13.1 Providing Operating System Support for SSE Extensions
- 13.1.1 Adding Support to an Operating System for SSE Extensions
- 13.1.2 Checking for CPU Support
- 13.1.3 Initialization of the SSE Extensions
- 13.1.4 Providing Non-Numeric Exception Handlers for Exceptions Generated by the SSE Instructions
- 13.1.5 Providing a Handler for the SIMD Floating-Point Exception (#XM)
- 13.2 Emulation of SSE Extensions
- 13.3 Saving and Restoring SSE State
- 13.4 Designing OS Facilities for Saving x87 FPU, SSE AND EXTENDED States on Task or Context Switches
- 13.5 The XSAVE Feature Set and Processor Extended State Management
- 13.5.1 Checking the Support for XSAVE Feature Set
- 13.5.2 Determining the XSAVE Managed Feature States And The Required Buffer Size
- 13.5.3 Enable the Use Of XSAVE Feature Set And XSAVE State Components
- 13.5.4 Provide an Initialization for the XSAVE State Components
- 13.5.5 Providing the Required Exception Handlers
- 13.6 Interoperability Of The XSAVE Feature Set And FXSAVE/FXRSTOR
- 13.7 The XSAVE Feature Set And Processor Supervisor State Management
- 13.8 System Programming For XSAVE ManAged Features
- 13.1 Providing Operating System Support for SSE Extensions
- Chapter 14 Power and Thermal Management
- 14.1 Enhanced Intel Speedstep® Technology
- 14.2 P-State Hardware Coordination
- 14.3 System Software Considerations and Opportunistic processor Performance operation
- 14.4 Hardware-Controlled Performance States (HWP)
- 14.5 Hardware Duty Cycling (HDC)
- 14.6 MWAIT Extensions for Advanced Power Management
- 14.7 Thermal Monitoring and Protection
- 14.8 Package Level Thermal Management
- 14.9 Platform Specific Power Management Support
- Chapter 15 Machine-Check Architecture
- 15.1 Machine-Check Architecture
- 15.2 Compatibility with Pentium Processor
- 15.3 Machine-Check MSRs
- 15.4 Enhanced Cache Error reporting
- 15.5 Corrected Machine Check Error Interrupt
- 15.6 Recovery of Uncorrected Recoverable (UCR) Errors
- 15.7 Machine-Check Availability
- 15.8 Machine-Check Initialization
- 15.9 Interpreting the MCA Error Codes
- 15.10 Guidelines for Writing Machine-Check Software
- Chapter 16 Interpreting Machine-Check Error Codes
- 16.1 Incremental Decoding Information: Processor Family 06H Machine Error Codes For Machine Check
- 16.2 Incremental Decoding Information: Intel Core 2 Processor Family Machine Error Codes For Machine Check
- 16.3 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_1AH, Machine Error Codes For Machine Check
- 16.4 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_2DH, Machine Error Codes For Machine Check
- 16.5 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_3EH, Machine Error Codes For Machine Check
- 16.6 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_3FH, Machine Error Codes For Machine Check
- 16.7 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_56H, Machine Error Codes For Machine Check
- 16.8 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_4FH, Machine Error Codes For Machine Check
- 16.9 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_55H, Machine Error Codes For Machine Check
- 16.10 Incremental Decoding Information: Processor Family with CPUID DisplayFamily_DisplayModel Signature 06_5FH, Machine Error Codes For Machine Check
- 16.11 Incremental Decoding Information: Processor Family 0FH Machine Error Codes For Machine Check
- Chapter 17 Debug, Branch Profile, TSC, and Resource Monitoring Features
- 17.1 Overview of Debug Support Facilities
- 17.2 Debug Registers
- 17.3 Debug Exceptions
- 17.4 Last Branch, Interrupt, and Exception Recording Overview
- 17.4.1 IA32_DEBUGCTL MSR
- 17.4.2 Monitoring Branches, Exceptions, and Interrupts
- 17.4.3 Single-Stepping on Branches
- 17.4.4 Branch Trace Messages
- 17.4.5 Branch Trace Store (BTS)
- 17.4.6 CPL-Qualified Branch Trace Mechanism
- 17.4.7 Freezing LBR and Performance Counters on PMI
- 17.4.8 LBR Stack
- 17.4.9 BTS and DS Save Area
- 17.5 Last Branch, Interrupt, and Exception Recording (Intel® Core™ 2 Duo and Intel® Atom™ Processors)
- 17.6 Last Branch, Call Stack, Interrupt, and Exception Recording for Processors based on Goldmont Microarchitecture
- 17.7 Last Branch, Call Stack, Interrupt, and Exception Recording for Processors based on Goldmont Plus Microarchitecture
- 17.8 Last Branch, Interrupt and Exception Recording for Intel® Xeon Phi™ Processor 7200/5200/3200
- 17.9 Last Branch, Interrupt, and Exception Recording for Processors based on Intel® Microarchitecture code name Nehalem
- 17.10 Last Branch, Interrupt, and Exception Recording for Processors based on Intel® Microarchitecture code name Sandy Bridge
- 17.11 Last Branch, Call Stack, Interrupt, and Exception Recording for Processors based on Haswell Microarchitecture
- 17.12 Last Branch, Call Stack, Interrupt, and Exception Recording for Processors based on Skylake Microarchitecture
- 17.13 Last Branch, Interrupt, and Exception Recording (Processors based on Intel NetBurst® Microarchitecture)
- 17.14 Last Branch, Interrupt, and Exception Recording (Intel® Core™ Solo and Intel® Core™ Duo Processors)
- 17.15 Last Branch, Interrupt, and Exception Recording (Pentium M Processors)
- 17.16 Last Branch, Interrupt, and Exception Recording (P6 Family Processors)
- 17.17 Time-Stamp Counter
- 17.18 Intel® Resource Director Technology (Intel® RDT) Monitoring Features
- 17.18.1 Overview of Cache Monitoring Technology and Memory Bandwidth Monitoring
- 17.18.2 Enabling Monitoring: Usage Flow
- 17.18.3 Enumeration and Detecting Support of Cache Monitoring Technology and Memory Bandwidth Monitoring
- 17.18.4 Monitoring Resource Type and Capability Enumeration
- 17.18.5 Feature-Specific Enumeration
- 17.18.6 Monitoring Resource RMID Association
- 17.18.7 Monitoring Resource Selection and Reporting Infrastructure
- 17.18.8 Monitoring Programming Considerations
- 17.19 Intel® Resource Director Technology (Intel® RDT) Allocation Features
- 17.19.1 Introduction to Cache Allocation Technology (CAT)
- 17.19.2 Cache Allocation Technology Architecture
- 17.19.3 Code and Data Prioritization (CDP) Technology
- 17.19.4 Enabling Cache Allocation Technology Usage Flow
- 17.19.4.1 Enumeration and Detection Support of Cache Allocation Technology
- 17.19.4.2 Cache Allocation Technology: Resource Type and Capability Enumeration
- 17.19.4.3 Cache Allocation Technology: Cache Mask Configuration
- 17.19.4.4 Class of Service to Cache Mask Association: Common Across Allocation Features
- 17.19.5 Code and Data Prioritization (CDP): Enumerating and Enabling L3 CDP Technology
- 17.19.6 Cache Allocation Technology Programming Considerations
- 17.19.7 Introduction to Memory Bandwidth Allocation
- Chapter 18 Performance Monitoring
- 18.1 Performance Monitoring Overview
- 18.2 Architectural Performance Monitoring
- 18.3 Performance Monitoring (Intel® Core™ Processors and Intel® Xeon® Processors)
- 18.3.1 Performance Monitoring for Processors Based on Intel® Microarchitecture Code Name Nehalem
- 18.3.2 Performance Monitoring for Processors Based on Intel® Microarchitecture Code Name Westmere
- 18.3.3 Intel® Xeon® Processor E7 Family Performance Monitoring Facility
- 18.3.4 Performance Monitoring for Processors Based on Intel® Microarchitecture Code Name Sandy Bridge
- 18.3.4.1 Global Counter Control Facilities In Intel® Microarchitecture Code Name Sandy Bridge
- 18.3.4.2 Counter Coalescence
- 18.3.4.3 Full Width Writes to Performance Counters
- 18.3.4.4 PEBS Support in Intel® Microarchitecture Code Name Sandy Bridge
- 18.3.4.5 Off-core Response Performance Monitoring
- 18.3.4.6 Uncore Performance Monitoring Facilities In Intel® Core™ i7-2xxx, Intel® Core™ i5-2xxx, Intel® Core™ i3-2xxx Processor Series
- 18.3.4.7 Intel® Xeon® Processor E5 Family Performance Monitoring Facility
- 18.3.4.8 Intel® Xeon® Processor E5 Family Uncore Performance Monitoring Facility
- 18.3.5 3rd Generation Intel® Core™ Processor Performance Monitoring Facility
- 18.3.6 4th Generation Intel® Core™ Processor Performance Monitoring Facility
- 18.3.6.1 Processor Event Based Sampling (PEBS) Facility
- 18.3.6.2 PEBS Data Format
- 18.3.6.3 PEBS Data Address Profiling
- 18.3.6.4 Off-core Response Performance Monitoring
- 18.3.6.5 Performance Monitoring and Intel® TSX
- 18.3.6.6 Uncore Performance Monitoring Facilities in the 4th Generation Intel® Core™ Processors
- 18.3.6.7 Intel® Xeon® Processor E5 v3 Family Uncore Performance Monitoring Facility
- 18.3.7 5th Generation Intel® Core™ Processor and Intel® Core™ M Processor Performance Monitoring Facility
- 18.3.8 6th Generation Intel® Core™ Processor and 7th Generation Intel® Core™ Processor Performance Monitoring Facility
- 18.4 Performance monitoring (Intel® Xeon™ Phi Processors)
- 18.5 Performance Monitoring (Intel® Atom™ Processors)
- 18.6 Performance Monitoring (Legacy Intel Processors)
- 18.6.1 Performance Monitoring (Intel® Core™ Solo and Intel® Core™ Duo Processors)
- 18.6.2 Performance Monitoring (Processors Based on Intel® Core™ Microarchitecture)
- 18.6.3 Performance Monitoring (Processors Based on Intel NetBurst® Microarchitecture)
- 18.6.3.1 ESCR MSRs
- 18.6.3.2 Performance Counters
- 18.6.3.3 CCCR MSRs
- 18.6.3.4 Debug Store (DS) Mechanism
- 18.6.3.5 Programming the Performance Counters for Non-Retirement Events
- 18.6.3.6 At-Retirement Counting
- 18.6.3.7 Tagging Mechanism for Replay_event
- 18.6.3.8 Processor Event-Based Sampling (PEBS)
- 18.6.3.9 Operating System Implications
- 18.6.4 Performance Monitoring and Intel Hyper-Threading Technology in Processors Based on Intel NetBurst® Microarchitecture
- 18.6.5 Performance Monitoring and Dual-Core Technology
- 18.6.6 Performance Monitoring on 64-bit Intel Xeon Processor MP with Up to 8-MByte L3 Cache
- 18.6.7 Performance Monitoring on L3 and Caching Bus Controller Sub-Systems
- 18.6.8 Performance Monitoring (P6 Family Processor)
- 18.6.9 Performance Monitoring (Pentium Processors)
- 18.7 Counting Clocks
- 18.7.1 Non-Halted Reference Clockticks
- 18.7.2 Cycle Counting and Opportunistic Processor Operation
- 18.7.3 Determining the Processor Base Frequency
- 18.7.3.1 For Intel® Processors Based on Microarchitecture Code Name Sandy Bridge, Ivy Bridge, Haswell and Broadwell
- 18.7.3.2 For Intel® Processors Based on Microarchitecture Code Name Nehalem
- 18.7.3.3 For Intel® Atom™ Processors Based on the Silvermont Microarchitecture (Including Intel Processors Based on Airmont Microarchitecture)
- 18.7.3.4 For Intel® Core™ 2 Processor Family and for Intel® Xeon® Processors Based on Intel Core Microarchitecture
- 18.8 IA32_PERF_CAPABILITIES MSR Enumeration
- Chapter 19 Performance Monitoring Events
- 19.1 Architectural Performance Monitoring Events
- 19.2 Performance Monitoring Events for Intel® Xeon® Processor Scalable Family
- 19.3 Performance Monitoring Events for 6th Generation Intel® Core™ Processor and 7th Generation Intel® Core™ Processor
- 19.4 Performance Monitoring Events for Intel® Xeon Phi™ Processor 3200, 5200, 7200 Series
- 19.5 Performance Monitoring Events for the Intel® Core™ M and 5th Generation Intel® Core™ Processors
- 19.6 Performance Monitoring Events for the 4th Generation Intel® Core™ ProcessorS
- 19.7 Performance Monitoring Events for 3rd Generation Intel® Core™ ProcessorS
- 19.8 Performance Monitoring Events for 2nd Generation Intel® Core™ i7-2xxx, Intel® Core™ i5-2xxx, Intel® Core™ i3-2xxx Processor Series
- 19.9 Performance Monitoring Events for Intel® Core™ i7 Processor Family and Intel® Xeon® Processor Family
- 19.10 Performance Monitoring Events for processors based on Intel® microarchitecture Code Name Westmere
- 19.11 Performance Monitoring Events for Intel® Xeon® Processor 5200, 5400 Series and Intel® Core™2 Extreme Processors QX 9000 Series
- 19.12 Performance Monitoring Events for Intel® Xeon® Processor 3000, 3200, 5100, 5300 Series and Intel® Core™2 Duo ProcessorS
- 19.13 Performance Monitoring Events for Processors Based on the Goldmont Plus Microarchitecture
- 19.14 Performance Monitoring Events for Processors Based on the Goldmont Microarchitecture
- 19.15 Performance Monitoring Events for Processors Based on the Silvermont Microarchitecture
- 19.16 Performance Monitoring Events for 45 nm and 32 nm Intel® Atom™ Processors
- 19.17 Performance Monitoring Events for Intel® Core™ Solo and Intel® Core™ Duo Processors
- 19.18 Pentium® 4 and Intel® Xeon® Processor Performance Monitoring Events
- 19.19 Performance Monitoring Events for Intel® Pentium® M Processors
- 19.20 P6 Family Processor Performance Monitoring Events
- 19.21 Pentium Processor Performance Monitoring Events
- Chapter 20 8086 Emulation
- 20.1 Real-Address Mode
- 20.2 Virtual-8086 Mode
- 20.3 Interrupt and Exception Handling in Virtual-8086 Mode
- 20.4 Protected-Mode Virtual Interrupts
- Chapter 21 Mixing 16-Bit and 32-Bit Code
- Chapter 22 Architecture Compatibility
- 22.1 Processor Families and Categories
- 22.2 Reserved Bits
- 22.3 Enabling New Functions and Modes
- 22.4 Detecting the Presence of New Features Through Software
- 22.5 Intel MMX Technology
- 22.6 Streaming SIMD Extensions (SSE)
- 22.7 Streaming SIMD Extensions 2 (SSE2)
- 22.8 Streaming SIMD Extensions 3 (SSE3)
- 22.9 Additional Streaming SIMD Extensions
- 22.10 Intel Hyper-Threading Technology
- 22.11 Multi-Core Technology
- 22.12 Specific Features of Dual-Core Processor
- 22.13 New Instructions In the Pentium and Later IA-32 Processors
- 22.14 Obsolete Instructions
- 22.15 Undefined Opcodes
- 22.16 New Flags in the EFLAGS Register
- 22.17 Stack Operations and User Software
- 22.18 x87 FPU
- 22.18.1 Control Register CR0 Flags
- 22.18.2 x87 FPU Status Word
- 22.18.3 x87 FPU Control Word
- 22.18.4 x87 FPU Tag Word
- 22.18.5 Data Types
- 22.18.6 Floating-Point Exceptions
- 22.18.6.1 Denormal Operand Exception (#D)
- 22.18.6.2 Numeric Overflow Exception (#O)
- 22.18.6.3 Numeric Underflow Exception (#U)
- 22.18.6.4 Exception Precedence
- 22.18.6.5 CS and EIP For FPU Exceptions
- 22.18.6.6 FPU Error Signals
- 22.18.6.7 Assertion of the FERR# Pin
- 22.18.6.8 Invalid Operation Exception On Denormals
- 22.18.6.9 Alignment Check Exceptions (#AC)
- 22.18.6.10 Segment Not Present Exception During FLDENV
- 22.18.6.11 Device Not Available Exception (#NM)
- 22.18.6.12 Coprocessor Segment Overrun Exception
- 22.18.6.13 General Protection Exception (#GP)
- 22.18.6.14 Floating-Point Error Exception (#MF)
- 22.18.7 Changes to Floating-Point Instructions
- 22.18.7.1 FDIV, FPREM, and FSQRT Instructions
- 22.18.7.2 FSCALE Instruction
- 22.18.7.3 FPREM1 Instruction
- 22.18.7.4 FPREM Instruction
- 22.18.7.5 FUCOM, FUCOMP, and FUCOMPP Instructions
- 22.18.7.6 FPTAN Instruction
- 22.18.7.7 Stack Overflow
- 22.18.7.8 FSIN, FCOS, and FSINCOS Instructions
- 22.18.7.9 FPATAN Instruction
- 22.18.7.10 F2XM1 Instruction
- 22.18.7.11 FLD Instruction
- 22.18.7.12 FXTRACT Instruction
- 22.18.7.13 Load Constant Instructions
- 22.18.7.14 FXAM Instruction
- 22.18.7.15 FSAVE and FSTENV Instructions
- 22.18.8 Transcendental Instructions
- 22.18.9 Obsolete Instructions and Undefined Opcodes
- 22.18.10 WAIT/FWAIT Prefix Differences
- 22.18.11 Operands Split Across Segments and/or Pages
- 22.18.12 FPU Instruction Synchronization
- 22.19 Serializing Instructions
- 22.20 FPU and Math Coprocessor Initialization
- 22.21 Control Registers
- 22.22 Memory Management Facilities
- 22.23 Debug Facilities
- 22.24 Recognition of Breakpoints
- 22.25 Exceptions and/or Exception Conditions
- 22.26 Interrupts
- 22.27 Advanced Programmable Interrupt Controller (APIC)
- 22.28 Task Switching and TSs
- 22.29 Cache Management
- 22.30 Paging
- 22.31 Stack Operations and Supervisor Software
- 22.32 Mixing 16- and 32-Bit Segments
- 22.33 Segment and Address Wraparound
- 22.34 Store Buffers and Memory Ordering
- 22.35 Bus Locking
- 22.36 Bus Hold
- 22.37 Model-Specific Extensions to the IA-32
- 22.38 Two Ways to Run Intel 286 Processor Tasks
- 22.39 Initial State of Pentium, Pentium Pro and Pentium 4 Processors
- Chapter 23 Introduction to Virtual Machine Extensions
- Chapter 24 Virtual Machine Control Structures
- 24.1 Overview
- 24.2 Format of the VMCS Region
- 24.3 Organization of VMCS Data
- 24.4 Guest-State Area
- 24.5 Host-State Area
- 24.6 VM-Execution Control Fields
- 24.6.1 Pin-Based VM-Execution Controls
- 24.6.2 Processor-Based VM-Execution Controls
- 24.6.3 Exception Bitmap
- 24.6.4 I/O-Bitmap Addresses
- 24.6.5 Time-Stamp Counter Offset and Multiplier
- 24.6.6 Guest/Host Masks and Read Shadows for CR0 and CR4
- 24.6.7 CR3-Target Controls
- 24.6.8 Controls for APIC Virtualization
- 24.6.9 MSR-Bitmap Address
- 24.6.10 Executive-VMCS Pointer
- 24.6.11 Extended-Page-Table Pointer (EPTP)
- 24.6.12 Virtual-Processor Identifier (VPID)
- 24.6.13 Controls for PAUSE-Loop Exiting
- 24.6.14 VM-Function Controls
- 24.6.15 VMCS Shadowing Bitmap Addresses
- 24.6.16 ENCLS-Exiting Bitmap
- 24.6.17 Control Field for Page-Modification Logging
- 24.6.18 Controls for Virtualization Exceptions
- 24.6.19 XSS-Exiting Bitmap
- 24.7 VM-Exit Control Fields
- 24.8 VM-Entry Control Fields
- 24.9 VM-Exit Information Fields
- 24.10 VMCS Types: Ordinary and Shadow
- 24.11 Software Use of the VMCS and Related Structures
- Chapter 25 VMX Non-Root Operation
- 25.1 Instructions That Cause VM Exits
- 25.2 Other Causes of VM Exits
- 25.3 Changes to Instruction Behavior in VMX Non-Root Operation
- 25.4 Other Changes in VMX Non-Root Operation
- 25.5 Features Specific to VMX Non-Root Operation
- 25.6 Unrestricted Guests
- Chapter 26 VM Entries
- 26.1 Basic VM-Entry Checks
- 26.2 Checks on VMX Controls and Host-State Area
- 26.3 Checking and Loading Guest State
- 26.3.1 Checks on the Guest State Area
- 26.3.1.1 Checks on Guest Control Registers, Debug Registers, and MSRs
- 26.3.1.2 Checks on Guest Segment Registers
- 26.3.1.3 Checks on Guest Descriptor-Table Registers
- 26.3.1.4 Checks on Guest RIP and RFLAGS
- 26.3.1.5 Checks on Guest Non-Register State
- 26.3.1.6 Checks on Guest Page-Directory-Pointer-Table Entries
- 26.3.2 Loading Guest State
- 26.3.3 Clearing Address-Range Monitoring
- 26.3.1 Checks on the Guest State Area
- 26.4 Loading MSRs
- 26.5 Event Injection
- 26.6 Special Features of VM Entry
- 26.6.1 Interruptibility State
- 26.6.2 Activity State
- 26.6.3 Delivery of Pending Debug Exceptions after VM Entry
- 26.6.4 VMX-Preemption Timer
- 26.6.5 Interrupt-Window Exiting and Virtual-Interrupt Delivery
- 26.6.6 NMI-Window Exiting
- 26.6.7 VM Exits Induced by the TPR Threshold
- 26.6.8 Pending MTF VM Exits
- 26.6.9 VM Entries and Advanced Debugging Features
- 26.7 VM-Entry Failures During or After Loading Guest State
- 26.8 Machine-Check Events During VM Entry
- Chapter 27 VM Exits
- 27.1 Architectural State Before a VM Exit
- 27.2 Recording VM-Exit Information and Updating VM-Entry Control Fields
- 27.3 Saving Guest State
- 27.4 Saving MSRs
- 27.5 Loading Host State
- 27.5.1 Loading Host Control Registers, Debug Registers, MSRs
- 27.5.2 Loading Host Segment and Descriptor-Table Registers
- 27.5.3 Loading Host RIP, RSP, and RFLAGS
- 27.5.4 Checking and Loading Host Page-Directory-Pointer-Table Entries
- 27.5.5 Updating Non-Register State
- 27.5.6 Clearing Address-Range Monitoring
- 27.6 Loading MSRs
- 27.7 VMX Aborts
- 27.8 Machine-Check Events During VM Exit
- Chapter 28 VMX Support for Address Translation
- 28.1 Virtual Processor Identifiers (VPIDs)
- 28.2 The Extended Page Table Mechanism (EPT)
- 28.3 Caching Translation Information
- Chapter 29 APIC Virtualization and Virtual Interrupts
- 29.1 Virtual APIC State
- 29.2 Evaluation and Delivery of Virtual Interrupts
- 29.3 Virtualizing CR8-Based TPR Accesses
- 29.4 Virtualizing Memory-Mapped APIC Accesses
- 29.4.1 Priority of APIC-Access VM Exits
- 29.4.2 Virtualizing Reads from the APIC-Access Page
- 29.4.3 Virtualizing Writes to the APIC-Access Page
- 29.4.4 Instruction-Specific Considerations
- 29.4.5 Issues Pertaining to Page Size and TLB Management
- 29.4.6 APIC Accesses Not Directly Resulting From Linear Addresses
- 29.5 Virtualizing MSR-Based APIC Accesses
- 29.6 Posted-Interrupt Processing
- Chapter 30 VMX Instruction Reference
- 30.1 Overview
- 30.2 Conventions
- 30.3 VMX Instructions
- INVEPT— Invalidate Translations Derived from EPT
- INVVPID— Invalidate Translations Based on VPID
- VMCALL—Call to VM Monitor
- VMCLEAR—Clear Virtual-Machine Control Structure
- VMFUNC—Invoke VM function
- VMLAUNCH/VMRESUME—Launch/Resume Virtual Machine
- VMPTRLD—Load Pointer to Virtual-Machine Control Structure
- VMPTRST—Store Pointer to Virtual-Machine Control Structure
- VMREAD—Read Field from Virtual-Machine Control Structure
- VMRESUME—Resume Virtual Machine
- VMWRITE—Write Field to Virtual-Machine Control Structure
- VMXOFF—Leave VMX Operation
- VMXON—Enter VMX Operation
- 30.4 VM Instruction Error Numbers
- Chapter 31 Virtual-Machine Monitor Programming Considerations
- 31.1 VMX System Programming Overview
- 31.2 Supporting Processor Operating Modes in Guest Environments
- 31.3 Managing VMCS Regions and Pointers
- 31.4 Using VMX Instructions
- 31.5 VMM Setup & Tear Down
- 31.6 Preparation and Launching a Virtual Machine
- 31.7 Handling of VM Exits
- 31.8 Multi-Processor Considerations
- 31.9 32-Bit and 64-Bit Guest Environments
- 31.10 Handling Model Specific Registers
- 31.11 Handling Accesses to Control Registers
- 31.12 Performance Considerations
- 31.13 Use of The VMX-Preemption Timer
- Chapter 32 Virtualization of System Resources
- 32.1 Overview
- 32.2 Virtualization Support for Debugging Facilities
- 32.3 Memory Virtualization
- 32.4 Microcode Update Facility
- Chapter 33 Handling Boundary Conditions in a Virtual Machine Monitor
- 33.1 Overview
- 33.2 Interrupt Handling in VMX Operation
- 33.3 External Interrupt Virtualization
- 33.4 Error Handling by VMM
- 33.5 Handling Activity States by VMM
- Chapter 34 System Management Mode
- 34.1 System Management Mode Overview
- 34.2 System Management Interrupt (SMI)
- 34.3 Switching Between SMM and the Other Processor Operating Modes
- 34.4 SMRAM
- 34.5 SMI Handler Execution Environment
- 34.6 Exceptions and Interrupts Within SMM
- 34.7 Managing Synchronous and Asynchronous System Management Interrupts
- 34.8 NMI Handling While in SMM
- 34.9 SMM Revision Identifier
- 34.10 Auto HALT Restart
- 34.11 SMBASE Relocation
- 34.12 I/O Instruction Restart
- 34.13 SMM Multiple-Processor Considerations
- 34.14 Default Treatment of SMIs and SMM with VMX Operation and SMX Operation
- 34.15 Dual-Monitor Treatment of SMIs and SMM
- 34.15.1 Dual-Monitor Treatment Overview
- 34.15.2 SMM VM Exits
- 34.15.3 Operation of the SMM-Transfer Monitor
- 34.15.4 VM Entries that Return from SMM
- 34.15.4.1 Checks on the Executive-VMCS Pointer Field
- 34.15.4.2 Checks on VM-Execution Control Fields
- 34.15.4.3 Checks on VM-Entry Control Fields
- 34.15.4.4 Checks on the Guest State Area
- 34.15.4.5 Loading Guest State
- 34.15.4.6 VMX-Preemption Timer
- 34.15.4.7 Updating the Current-VMCS and SMM-Transfer VMCS Pointers
- 34.15.4.8 VM Exits Induced by VM Entry
- 34.15.4.9 SMI Blocking
- 34.15.4.10 Failures of VM Entries That Return from SMM
- 34.15.5 Enabling the Dual-Monitor Treatment
- 34.15.6 Activating the Dual-Monitor Treatment
- 34.15.7 Deactivating the Dual-Monitor Treatment
- 34.16 SMI and Processor Extended State Management
- 34.17 Model-Specific System Management Enhancement
- Chapter 35 Intel® Processor Trace
- 35.1 Overview
- 35.2 Intel® Processor Trace Operational Model
- 35.2.1 Change of Flow Instruction (COFI) Tracing
- 35.2.2 Software Trace Instrumentation with PTWRITE
- 35.2.3 Power Event Tracing
- 35.2.4 Trace Filtering
- 35.2.5 Packet Generation Enable Controls
- 35.2.6 Trace Output
- 35.2.7 Enabling and Configuration MSRs
- 35.2.7.1 General Considerations
- 35.2.7.2 IA32_RTIT_CTL MSR
- 35.2.7.3 Enabling and Disabling Packet Generation with TraceEn
- 35.2.7.4 IA32_RTIT_STATUS MSR
- 35.2.7.5 IA32_RTIT_ADDRn_A and IA32_RTIT_ADDRn_B MSRs
- 35.2.7.6 IA32_RTIT_CR3_MATCH MSR
- 35.2.7.7 IA32_RTIT_OUTPUT_BASE MSR
- 35.2.7.8 IA32_RTIT_OUTPUT_MASK_PTRS MSR
- 35.2.8 Interaction of Intel® Processor Trace and Other Processor Features
- 35.3 Configuration and programming Guideline
- 35.3.1 Detection of Intel Processor Trace and Capability Enumeration
- 35.3.2 Enabling and Configuration of Trace Packet Generation
- 35.3.3 Flushing Trace Output
- 35.3.4 Warm Reset
- 35.3.5 Context Switch Consideration
- 35.3.6 Cycle-Accurate Mode
- 35.3.7 Decoder Synchronization (PSB+)
- 35.3.8 Internal Buffer Overflow
- 35.3.9 Operational Errors
- 35.4 Trace Packets and Data Types
- 35.4.1 Packet Relationships and Ordering
- 35.4.2 Packet Definitions
- 35.4.2.1 Taken/Not-taken (TNT) Packet
- 35.4.2.2 Target IP (TIP) Packet
- 35.4.2.3 Deferred TIPs
- 35.4.2.4 Packet Generation Enable (TIP.PGE)
- 35.4.2.5 Packet Generation Disable (TIP.PGD)
- 35.4.2.6 Flow Update (FUP) Packet
- 35.4.2.7 Paging Information (PIP) Packet
- 35.4.2.8 MODE Packets
- 35.4.2.9 TraceStop Packet
- 35.4.2.10 Core:Bus Ratio (CBR) Packet
- 35.4.2.11 Timestamp Counter (TSC) Packet
- 35.4.2.12 Mini Time Counter (MTC) Packet
- 35.4.2.13 TSC/MTC Alignment (TMA) Packet
- 35.4.2.14 Cycle Count Packet (CYC) Packet
- 35.4.2.15 VMCS Packet
- 35.4.2.16 Overflow (OVF) Packet
- 35.4.2.17 Packet Stream Boundary (PSB) Packet
- 35.4.2.18 PSBEND Packet
- 35.4.2.19 Maintenance (MNT) Packet
- 35.4.2.20 PAD Packet
- 35.4.2.21 PTWRITE Packet
- 35.4.2.22 Execution Stop (EXSTOP) Packet
- 35.4.2.23 MWAIT Packet
- 35.4.2.24 Power Entry (PWRE) Packet
- 35.4.2.25 Power Exit (PWRX) Packet
- 35.5 Tracing in VMX Operation
- 35.6 Tracing and SMM Transfer Monitor (STM)
- 35.7 Packet Generation Scenarios
- 35.8 Software Considerations
- Chapter 36 Introduction to Intel® Software Guard Extensions
- Chapter 37 Enclave Access Control and Data Structures
- 37.1 Overview of Enclave Execution Environment
- 37.2 Terminology
- 37.3 Access-control Requirements
- 37.4 Segment-based Access Control
- 37.5 Page-based Access Control
- 37.6 Intel® SGX Data Structures Overview
- 37.7 SGX Enclave Control Structure (SECS)
- 37.8 Thread Control Structure (TCS)
- 37.9 State Save Area (SSA) Frame
- 37.10 Page Information (PAGEINFO)
- 37.11 Security Information (SECINFO)
- 37.12 Paging Crypto MetaData (PCMD)
- 37.13 Enclave Signature Structure (SIGSTRUCT)
- 37.14 EINIT Token Structure (EINITTOKEN)
- 37.15 Report (REPORT)
- 37.16 Report Target Info (TARGETINFO)
- 37.17 Key Request (KEYREQUEST)
- 37.18 Version Array (VA)
- 37.19 Enclave Page Cache Map (EPCM)
- Chapter 38 Enclave Operation
- 38.1 Constructing an Enclave
- 1. The application hands over the enclave content along with additional information required by the enclave creation API to the enclave creation service running at privilege level 0.
- 38.1.1 ECREATE
- 38.1.2 EADD and EEXTEND Interaction
- 38.1.3 EINIT Interaction
- 38.1.4 Intel® SGX Launch Control Configuration
- 38.2 Enclave Entry and Exiting
- 38.3 Calling Enclave Procedures
- 38.4 Intel® SGX Key and Attestation
- 38.5 EPC and Management of EPC Pages
- 38.5.1 EPC Implementation
- 38.5.2 OS Management of EPC Pages
- 38.5.3 Eviction of Enclave Pages
- 38.5.4 Loading an Enclave Page
- 38.5.5 Eviction of an SECS Page
- 38.5.6 Eviction of a Version Array Page
- 38.5.7 Allocating a Regular Page
- 38.5.8 Allocating a TCS Page
- 38.5.9 Trimming a Page
- 38.5.10 Restricting the EPCM Permissions of a Page
- 38.5.11 Extending the EPCM Permissions of a Page
- 38.6 Changes to Instruction Behavior Inside an Enclave
- 38.1 Constructing an Enclave
- Chapter 39 Enclave Exiting Events
- Chapter 40 SGX Instruction References
- 40.1 Intel® SGX Instruction Syntax and Operation
- 40.2 Intel® SGX Instruction Reference
- 40.3 Intel® SGX System Leaf Function Reference
- EADD—Add a Page to an Uninitialized Enclave
- EAUG—Add a Page to an Initialized Enclave
- EBLOCK—Mark a page in EPC as Blocked
- ECREATE—Create an SECS page in the Enclave Page Cache
- EDBGRD—Read From a Debug Enclave
- EDBGWR—Write to a Debug Enclave
- EEXTEND—Extend Uninitialized Enclave Measurement by 256 Bytes
- EINIT—Initialize an Enclave for Execution
- ELDB/ELDU—Load an EPC page and Marked its State
- EMODPR—Restrict the Permissions of an EPC Page
- EMODT—Change the Type of an EPC Page
- EPA—Add Version Array
- EREMOVE—Remove a page from the EPC
- ETRACK—Activates EBLOCK Checks
- EWB—Invalidate an EPC Page and Write out to Main Memory
- 40.4 Intel® SGX User Leaf Function Reference
- 40.4.1 Instruction Column in the Instruction Summary Table
- Chapter 41 Intel® SGX Interactions with IA32 and Intel® 64 Architecture
- 41.1 Intel® SGX Availability in Various Processor Modes
- 41.2 IA32_FEATURE_CONTROL
- 41.3 Interactions with Segmentation
- 41.4 Interactions with Paging
- 41.5 Interactions with VMX
- 41.6 Intel® SGX Interactions with Architecturally-visible Events
- 41.7 Interactions with the Processor Extended State and Miscellaneous State
- 41.7.1 Requirements and Architecture Overview
- 41.7.2 Relevant Fields in Various Data Structures
- 41.7.3 Processor Extended States and ENCLS[ECREATE]
- 41.7.4 Processor Extended States and ENCLU[EENTER]
- 41.7.5 Processor Extended States and AEX
- 41.7.6 Processor Extended States and ENCLU[ERESUME]
- 41.7.7 Processor Extended States and ENCLU[EEXIT]
- 41.7.8 Processor Extended States and ENCLU[EREPORT]
- 41.7.9 Processor Extended States and ENCLU[EGETKEY]
- 41.8 Interactions with SMM
- 41.9 Interactions of INIT, SIPI, and Wait-for-SIPI with Intel® SGX
- 41.10 Interactions with DMA
- 41.11 Interactions with TXT
- 41.12 Interactions with Caching of Linear-address Translations
- 41.13 Interactions with Intel® Transactional Synchronization Extensions (Intel® TSX)
- 41.14 Intel® SGX Interactions with S states
- 41.15 Intel® SGX Interactions with Machine Check Architecture (MCA)
- 41.16 Intel® SGX INTERACTIONS WITH PROTECTED MODE VIRTUAL INTERRUPTS
- 41.17 Intel SGX Interaction with Protection Keys
- Chapter 42 Enclave Code Debug and Profiling
- 42.1 Configuration and Controls
- 42.2 Single Step Debug
- 42.3 Code and Data Breakpoints
- 42.4 INT3 Consideration
- 42.5 Branch Tracing
- 42.6 Interaction with Performance Monitoring
- Appendix A VMX Capability Reporting Facility
- Appendix B Field Encoding in VMCS
- Appendix C VMX Basic Exit Reasons