Intel IA-32 Manuale Utente

Pagina di 636
Vol. 3A 5-37
INTERRUPT AND EXCEPTION HANDLING
Interrupt 8—Double Fault Exception (#DF)
Exception Class
Abort.
Description
Indicates that the processor detected a second exception while calling an exception handler for
a prior exception. Normally, when the processor detects another exception while trying to call
an exception handler, the two exceptions can be handled serially. If, however, the processor
cannot handle them serially, it signals the double-fault exception. To determine when two faults
need to be signalled as a double fault, the processor divides the exceptions into three classes:
benign exceptions, contributory exceptions, and page faults (see Table 5-4).
Table 5-5 shows the various combinations of exception classes that cause a double fault to be
generated. A double-fault exception falls in the abort class of exceptions. The program or task
cannot be restarted or resumed. The double-fault handler can be used to collect diagnostic infor-
mation about the state of the machine and/or, when possible, to shut the application and/or
system down gracefully or restart the system.
A segment or page fault may be encountered while prefetching instructions; however, this
behavior is outside the domain of Table 5-5. Any further faults generated while the processor is
attempting to transfer control to the appropriate fault handler could still lead to a double-fault
sequence.
Table 5-4.  Interrupt and Exception Classes 
Class
Vector Number
Description
Benign Exceptions and Interrupts
 1
 2
 3
 4
 5
 6
 7
9
16
17
18
19
All
All
Debug
NMI Interrupt
Breakpoint
Overflow
BOUND Range Exceeded
Invalid Opcode
Device Not Available
Coprocessor Segment Overrun
Floating-Point Error
Alignment Check
Machine Check
SIMD floating-point
INT n
INTR
Contributory Exceptions
  0
10
11
12
13
Divide Error
Invalid TSS
Segment Not Present
Stack Fault
General Protection
Page Faults
14
Page Fault