Bootloader: cleanup code
This commit is contained in:
parent
f0cf54e194
commit
2fec718590
|
@ -13,12 +13,10 @@
|
||||||
|
|
||||||
.global stage1_main
|
.global stage1_main
|
||||||
stage1_main:
|
stage1_main:
|
||||||
# setup segments
|
# setup segments and stack
|
||||||
movw $0, %ax
|
xorw %ax, %ax
|
||||||
movw %ax, %ds
|
movw %ax, %ds
|
||||||
movw %ax, %es
|
movw %ax, %es
|
||||||
|
|
||||||
# setup stack
|
|
||||||
movw %ax, %ss
|
movw %ax, %ss
|
||||||
movl $0x7C00, %esp
|
movl $0x7C00, %esp
|
||||||
|
|
||||||
|
@ -53,6 +51,8 @@ stage2_main:
|
||||||
movw $hello_msg, %si
|
movw $hello_msg, %si
|
||||||
call puts; call print_newline
|
call puts; call print_newline
|
||||||
|
|
||||||
|
lgdt gdtr
|
||||||
|
|
||||||
call enter_unreal_mode
|
call enter_unreal_mode
|
||||||
movw $unreal_enter_msg, %si
|
movw $unreal_enter_msg, %si
|
||||||
call puts; call print_newline
|
call puts; call print_newline
|
||||||
|
@ -86,32 +86,32 @@ stage2_main:
|
||||||
|
|
||||||
cli
|
cli
|
||||||
|
|
||||||
|
# kernel entry point
|
||||||
|
movl %eax, %ecx
|
||||||
|
|
||||||
|
# setup kernel parameters
|
||||||
|
movl $0xD3C60CFF, %eax
|
||||||
|
movl $banan_boot_info, %ebx
|
||||||
|
|
||||||
# setup protected mode
|
# setup protected mode
|
||||||
movl %cr0, %ebx
|
movl %cr0, %edx
|
||||||
orb $1, %bl
|
orb $1, %dl
|
||||||
movl %ebx, %cr0
|
movl %edx, %cr0
|
||||||
|
|
||||||
# jump to kernel in protected mode
|
# jump to protected mode
|
||||||
ljmpl $0x18, $protected_mode
|
ljmpl $0x18, $protected_mode
|
||||||
|
|
||||||
|
|
||||||
.code32
|
.code32
|
||||||
protected_mode:
|
protected_mode:
|
||||||
movw $0x10, %bx
|
# setup protected mode segments
|
||||||
movw %bx, %ds
|
movw $0x10, %dx
|
||||||
movw %bx, %es
|
movw %dx, %ds
|
||||||
movw %bx, %fs
|
movw %dx, %es
|
||||||
movw %bx, %gs
|
movw %dx, %fs
|
||||||
movw %bx, %ss
|
movw %dx, %gs
|
||||||
|
movw %dx, %ss
|
||||||
movl %eax, %ecx
|
|
||||||
|
|
||||||
movl $0xD3C60CFF, %eax
|
|
||||||
movl $banan_boot_info, %ebx
|
|
||||||
xorl %edx, %edx
|
|
||||||
xorl %esi, %esi
|
|
||||||
xorl %edi, %edi
|
|
||||||
|
|
||||||
|
# jump to kernel entry
|
||||||
jmp *%ecx
|
jmp *%ecx
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,8 +120,6 @@ enter_unreal_mode:
|
||||||
cli
|
cli
|
||||||
pushw %ds
|
pushw %ds
|
||||||
|
|
||||||
lgdt gdtr
|
|
||||||
|
|
||||||
movl %cr0, %eax
|
movl %cr0, %eax
|
||||||
orb $1, %al
|
orb $1, %al
|
||||||
movl %eax, %cr0
|
movl %eax, %cr0
|
||||||
|
@ -152,9 +150,9 @@ start_kernel_load_msg:
|
||||||
|
|
||||||
gdt:
|
gdt:
|
||||||
.quad 0x0000000000000000
|
.quad 0x0000000000000000
|
||||||
.quad 0x00009A000000FFFF
|
.quad 0x008F9A000000FFFF # 16-bit code
|
||||||
.quad 0x00CF92000000FFFF
|
.quad 0x00CF92000000FFFF # 32-bit data
|
||||||
.quad 0x00CF9A000000FFFF
|
.quad 0x00CF9A000000FFFF # 32-bit code
|
||||||
gdtr:
|
gdtr:
|
||||||
.short . - gdt - 1
|
.short . - gdt - 1
|
||||||
.quad gdt
|
.quad gdt
|
||||||
|
|
Loading…
Reference in New Issue