X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/cd09c4b222e4ddf45a42522563ae2471a829d1c8..844a2c39e4bb2cc778dba7bd3aea21cb07483fad:/lunaix-os/kernel/asm/x86/prologue.S diff --git a/lunaix-os/kernel/asm/x86/prologue.S b/lunaix-os/kernel/asm/x86/prologue.S index 4e114e9..ca72830 100644 --- a/lunaix-os/kernel/asm/x86/prologue.S +++ b/lunaix-os/kernel/asm/x86/prologue.S @@ -39,7 +39,10 @@ _after_gdt: movl $mb_info, (%esp) - call _kernel_init + + call _kernel_pre_init + + subl $6, %esp # 加载 IDT movl $_idt, 2(%esp) @@ -47,12 +50,20 @@ movw %ax, (%esp) lidt (%esp) + addl $6, %esp + + sti + + call _kernel_init + /* 加载新的栈指针,位于0xffbfffff,但因为16字节对齐的需求,低四位清零。 为什么不是0xffffffff? 因为0xffc00000 - 0xffffffff 这4MiB的空间用于 对页表与页目录的循环映射。 */ - mov $0xffbffff0, %esp + mov $0xffbffff0, %esp + + call _kernel_post_init /* 进入内核 */ call _kernel_main