Added comment to note that fninit clears FOP
authorMichael Taufen <mtaufen@gmail.com>
Sat, 5 Mar 2016 00:27:20 +0000 (16:27 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 10 Mar 2016 18:55:41 +0000 (13:55 -0500)
Signed-off-by: Michael Taufen <mtaufen@gmail.com>
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/init.c

index ebb33e7..b9a2449 100644 (file)
@@ -126,6 +126,9 @@ void ancillary_state_init(void)
                // Zero the default extended state memory region before saving.
                // It may be possible for memset to clobber SSE registers.
                memset(&x86_default_fpu, 0x00, sizeof(struct ancillary_state));
+
+               // FNINIT clears FIP and FDP and, even though it is technically a
+               // control instruction, it clears FOP while initializing the FPU.
                asm volatile ("fninit");
 
                /*
@@ -177,6 +180,9 @@ void ancillary_state_init(void)
                // Zero the default extended state memory region before saving.
                // It may be possible for memset to clobber SSE registers.
                memset(&x86_default_fpu, 0x00, sizeof(struct ancillary_state));
+
+               // FNINIT clears FIP and FDP and, even though it is technically a
+               // control instruction, it clears FOP while initializing the FPU.
                asm volatile ("fninit");
 
                // Save the x87 FPU state