Intel IA-32 User Manual
Page 17
Vol. 3A
xvii
CONTENTS
PAGE
17.29.1.
Large Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-34
17.29.2.
PCD and PWT Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-34
17.29.3.
Enabling and Disabling Paging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-35
17.30.
STACK OPERATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-35
17.30.1.
Selector Pushes and Pops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-35
17.30.2.
Error Code Pushes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-36
17.30.3.
Fault Handling Effects on the Stack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-36
17.30.4.
Interlevel RET/IRET From a 16-Bit Interrupt or Call Gate . . . . . . . . . . . . . . . . 17-36
17.31.
MIXING 16- AND 32-BIT SEGMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-36
17.32.
SEGMENT AND ADDRESS WRAPAROUND. . . . . . . . . . . . . . . . . . . . . . . . . . . 17-37
17.32.1.
Segment Wraparound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-38
17.33.
STORE BUFFERS AND MEMORY ORDERING . . . . . . . . . . . . . . . . . . . . . . . . 17-38
17.34.
BUS LOCKING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-40
17.35.
BUS HOLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-40
17.36.
MODEL-SPECIFIC EXTENSIONS TO THE IA-32 . . . . . . . . . . . . . . . . . . . . . . . 17-40
17.36.1.
Model-Specific Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-40
17.36.2.
RDMSR and WRMSR Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-41
17.36.3.
Memory Type Range Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-41
17.36.4.
Machine-Check Exception and Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 17-42
17.36.5.
Performance-Monitoring Counters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-42
17.37.
TWO WAYS TO RUN INTEL 286 PROCESSOR TASKS . . . . . . . . . . . . . . . . . . 17-43
CHAPTER 18
DEBUGGING AND PERFORMANCE MONITORING
18.1
OVERVIEW OF THE DEBUGGING SUPPORT FACILITIES. . . . . . . . . . . . . . . . . 18-1
18.2
DEBUG REGISTERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2
18.2.1
Debug Address Registers (DR0-DR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-3
18.2.2
Debug Registers DR4 and DR5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4
18.2.3
Debug Status Register (DR6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4
18.2.4
Debug Control Register (DR7). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-5
18.2.5
Breakpoint Field Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-6
18.2.6
Debug Registers and Intel EM64T. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-7
18.3
DEBUG EXCEPTIONS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-7
18.3.1
Debug Exception (#DB)—Interrupt Vector 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-8
18.3.1.1
Instruction-Breakpoint Exception Condition . . . . . . . . . . . . . . . . . . . . . . . . . 18-9
18.3.1.2
Data Memory and I/O Breakpoint Exception Conditions. . . . . . . . . . . . . . . 18-10
18.3.1.3
General-Detect Exception Condition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-11
18.3.1.4
Single-Step Exception Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-11
18.3.1.5
Task-Switch Exception Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-11
18.3.2
Breakpoint Exception (#BP)—Interrupt Vector 3 . . . . . . . . . . . . . . . . . . . . . . . 18-12
18.4
LAST BRANCH RECORDING OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-12
18.5
LAST BRANCH, INTERRUPT, AND EXCEPTION RECORDING
(PENTIUM 4 AND INTEL XEON PROCESSORS). . . . . . . . . . . . . . . . . . . . . . . . 18-12
18.5.1
CPL-Qualified Last Branch Recording Mechanism . . . . . . . . . . . . . . . . . . . . . 18-13
18.5.2
MSR_DEBUGCTLA MSR (Pentium 4 and Intel Xeon Processors) . . . . . . . . . 18-15
18.5.3
LBR Stack (Pentium 4 and Intel Xeon Processors) . . . . . . . . . . . . . . . . . . . . . 18-16
18.5.3.1
LBR Stack and Intel EM64T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-18
18.5.4
Monitoring Branches, Exceptions, and Interrupts (Pentium 4 and
Intel Xeon Processors) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-18
18.5.5
Single-Stepping on Branches, Exceptions, and Interrupts . . . . . . . . . . . . . . . 18-18
18.5.6
Branch Trace Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-19
18.5.7
Last Exception Records (Pentium 4 and Intel Xeon Processors) . . . . . . . . . . 18-19