]> Zhao Yanbai Git Server - minix.git/commitdiff
kernel: fpu init to separate function; also move fpu init down
authorBen Gras <ben@minix3.org>
Wed, 28 Apr 2010 13:25:29 +0000 (13:25 +0000)
committerBen Gras <ben@minix3.org>
Wed, 28 Apr 2010 13:25:29 +0000 (13:25 +0000)
moving the fpu code causes exceptions raised by it to be trapped
neatly instead of causing a triple fault, before the IDT is initialized.

kernel/arch/i386/arch_system.c

index 486785d4f2eb88a867fdf06c173e3b78103aba11..67e19f0582de79a7667c7b5907e2f9df9aa82bfe 100644 (file)
@@ -136,7 +136,7 @@ PRIVATE void tss_init(struct tss_s * tss, void * kernel_stack,
        *((reg_t *)(tss->sp0 + 1 * sizeof(reg_t))) = cpu;
 }
 
-PUBLIC void arch_init(void)
+PRIVATE void fpu_init(void)
 {
        unsigned short cw, sw;
 
@@ -184,7 +184,10 @@ PUBLIC void arch_init(void)
                 osfxsr_feature = 0;
                 return;
         }
+}
 
+PUBLIC void arch_init(void)
+{
 #ifdef CONFIG_APIC
        /*
         * this is setting kernel segments to cover most of the phys memory. The
@@ -208,6 +211,7 @@ PUBLIC void arch_init(void)
        }
 #endif
 
+       fpu_init();
 }
 
 #define COM1_BASE       0x3F8