git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dynamic memory manager (malloc & free)
[lunaix-os.git]
/
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 4e114e9c50153c1f8d1370aa05521a4129e615dd..ca72830b7a6fec17ef4f3ce3680ce4d908055032 100644
(file)
--- 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)
_after_gdt:
movl $mb_info, (%esp)
- call _kernel_init
+
+ call _kernel_pre_init
+
+ subl $6, %esp
# 加载 IDT
movl $_idt, 2(%esp)
# 加载 IDT
movl $_idt, 2(%esp)
@@
-47,12
+50,20
@@
movw %ax, (%esp)
lidt (%esp)
movw %ax, (%esp)
lidt (%esp)
+ addl $6, %esp
+
+ sti
+
+ call _kernel_init
+
/*
加载新的栈指针,位于0xffbfffff,但因为16字节对齐的需求,低四位清零。
为什么不是0xffffffff? 因为0xffc00000 - 0xffffffff 这4MiB的空间用于
对页表与页目录的循环映射。
*/
/*
加载新的栈指针,位于0xffbfffff,但因为16字节对齐的需求,低四位清零。
为什么不是0xffffffff? 因为0xffc00000 - 0xffffffff 这4MiB的空间用于
对页表与页目录的循环映射。
*/
- mov $0xffbffff0, %esp
+ mov $0xffbffff0, %esp
+
+ call _kernel_post_init
/* 进入内核 */
call _kernel_main
/* 进入内核 */
call _kernel_main