X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/ca038e65d1ccf0dae9e624baa4b4d173ea8ad175..fedfd71f5492177a7c7d7fd2bd1529a832106395:/lunaix-os/arch/x86/boot.S diff --git a/lunaix-os/arch/x86/boot.S b/lunaix-os/arch/x86/boot.S index 8e019a5..1eddb52 100644 --- a/lunaix-os/arch/x86/boot.S +++ b/lunaix-os/arch/x86/boot.S @@ -13,6 +13,10 @@ stack_top: .section .text + .global start_ + .type start_, @function /* Optional, this just give the + * linker more knowledge about the label + */ start_: movl $stack_top, %esp /* @@ -22,7 +26,26 @@ 3. Enable paging */ call _kernel_init + + subl $0x6, %esp + movl $_gdt, 2(%esp) + movw _gdt_limit, %ax + movw %ax, (%esp) + lgdt (%esp) + addl $0x6, %esp + movw $0x10, %cx + movw %cx, %es + movw %cx, %ds + movw %cx, %fs + movw %cx, %gs + movw %cx, %ss + + pushw $0x08 + pushl $_after_gdt + retf + + _after_gdt: pushl %ebx call _kernel_main