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