Bootloader enter unreal mode at the start of stage2

This commit is contained in:
Bananymous 2023-11-17 14:22:21 +02:00
parent 407a7b80c5
commit 03b80ed113
1 changed files with 41 additions and 0 deletions

View File

@ -53,6 +53,10 @@ stage2_main:
movw $hello_msg, %si movw $hello_msg, %si
call puts; call print_newline call puts; call print_newline
call enter_unreal_mode
movw $unreal_enter_msg, %si
call puts; call print_newline
call get_memory_map call get_memory_map
call read_user_command_line call read_user_command_line
@ -77,8 +81,45 @@ stage2_main:
jmp halt jmp halt
enter_unreal_mode:
cli
pushw %ds
lgdt gdtr
movl %cr0, %eax
orb $1, %al
movl %eax, %cr0
ljmpl $0x8, $.enter_unreal_mode_pmode
.enter_unreal_mode_pmode:
movw $0x10, %bx
movw %bx, %ds
andb 0xFE, %al
movl %eax, %cr0
ljmpl $0x0, $.enter_unreal_mode_unreal
.enter_unreal_mode_unreal:
popw %ds
sti
ret
hello_msg: hello_msg:
.asciz "This is banan-os bootloader" .asciz "This is banan-os bootloader"
unreal_enter_msg:
.asciz "Entered unreal mode"
start_kernel_load_msg: start_kernel_load_msg:
.asciz "Starting to load kernel" .asciz "Starting to load kernel"
gdt:
.quad 0x0000000000000000
.quad 0x00009A000000FFFF
.quad 0x00CF92000000FFFF
gdtr:
.short . - gdt - 1
.quad gdt