a bit refactoring on kernel_init
[lunaix-os.git] / lunaix-os / kernel / asm / x86 / prologue.S
index 0716b4898b76078ba2888be16882ced6d443d117..ca72830b7a6fec17ef4f3ce3680ce4d908055032 100644 (file)
     _after_gdt:
 
         movl $mb_info, (%esp)
-        call _kernel_init
 
-        /* 
-            加载新的栈指针,位于0xffbfffff,但因为16字节对齐的需求,低四位清零。
-            为什么不是0xffffffff? 因为0xffc00000 - 0xffffffff 这4MiB的空间用于
-            对页表与页目录的循环映射。
-        */
-        mov $0xffbffff0, %esp
-
-        call _kernel_post_init
+        call _kernel_pre_init
 
         subl $6, %esp
 
 
         addl $6, %esp
 
+        sti
+
+        call _kernel_init
+
+        /* 
+            加载新的栈指针,位于0xffbfffff,但因为16字节对齐的需求,低四位清零。
+            为什么不是0xffffffff? 因为0xffc00000 - 0xffffffff 这4MiB的空间用于
+            对页表与页目录的循环映射。
+        */
+        mov $0xffbffff0, %esp
+
+        call _kernel_post_init
+
         /* 进入内核 */  
         call _kernel_main