X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/0264889df8dd6775d765416a13804bc4ed8cc3f7..fedfd71f5492177a7c7d7fd2bd1529a832106395:/lunaix-os/arch/x86/boot.S diff --git a/lunaix-os/arch/x86/boot.S b/lunaix-os/arch/x86/boot.S index 29746ee..1eddb52 100644 --- a/lunaix-os/arch/x86/boot.S +++ b/lunaix-os/arch/x86/boot.S @@ -14,7 +14,9 @@ .section .text .global start_ - .type start_, @function + .type start_, @function /* Optional, this just give the + * linker more knowledge about the label + */ start_: movl $stack_top, %esp /* @@ -24,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