diff options
Diffstat (limited to 'Kernel/Arch/i386/Boot')
-rw-r--r-- | Kernel/Arch/i386/Boot/boot.S | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/Kernel/Arch/i386/Boot/boot.S b/Kernel/Arch/i386/Boot/boot.S index 4fce416868..d0ced81de4 100644 --- a/Kernel/Arch/i386/Boot/boot.S +++ b/Kernel/Arch/i386/Boot/boot.S @@ -194,10 +194,13 @@ start: orl $0x80000000, %eax movl %eax, %cr0 + /* set up stack */ + mov $stack_top, %esp + and $-16, %esp + /* jmp to an address above the 3GB mark */ - push %cs - push $1f - retf + movl $1f,%eax + jmp *%eax 1: movl %cr3, %eax movl %eax, %cr3 @@ -212,10 +215,7 @@ start: addl $8, %edi loop 1b - /* set up initial stack and jump into C++ land */ - mov $stack_top, %esp - and $-16, %esp - + /* jump into C++ land */ addl $0xc0000000, %ebx movl %ebx, multiboot_info_ptr |