3-236
INSTRUCTION SET REFERENCE
FSAVE/FNSAVEStore FPU State (Continued)
When operating a Pentium
®
or Intel486 processor in MS-DOS compatibility mode, it is
possible (under unusual circumstances) for an FNSAVE instruction to be interrupted prior to
being executed to handle a pending FPU exception.
Refer to Section E.2.1.3, No-Wait FPU Instructions Can Get FPU Interrupt in Window in
Appendix E, Guidelines for Writing FPU Exception Handlers of the Intel Architecture Software
Developers Manual, Volume 1, for a description of these circumstances. An FNSAVE instruc-
tion cannot be interrupted in this way on a Pentium
®
Pro processor.
Operation
(* Save FPU State and Registers *)
DEST(FPUControlWord)
<
FPUControlWord;
DEST(FPUStatusWord)
<
FPUStatusWord;
DEST(FPUTagWord)
<
FPUTagWord;
DEST(FPUDataPointer)
<
FPUDataPointer;
DEST(FPUInstructionPointer)
<
FPUInstructionPointer;
DEST(FPULastInstructionOpcode)
<
FPULastInstructionOpcode;
DEST(ST(0))
<
ST(0);
DEST(ST(1))
<
ST(1);
DEST(ST(2))
<
ST(2);
DEST(ST(3))
<
ST(3);
DEST(ST(4))
<
ST(4);
DEST(ST(5))
<
ST(5);
DEST(ST(6))
<
ST(6);
DEST(ST(7))
<
ST(7);
(* Initialize FPU *)
FPUControlWord
<
037FH;
FPUStatusWord
<
0;
FPUTagWord
<
FFFFH;
FPUDataPointer
<
0;
FPUInstructionPointer
<
0;
FPULastInstructionOpcode
<
0;
FPU Flags Affected
The C0, C1, C2, and C3 flags are saved and then cleared.
Floating-Point Exceptions
None.