diff options
author | Brett Weiland <brett_weiland@bpcspace.com> | 2021-03-24 15:36:54 -0500 |
---|---|---|
committer | Brett Weiland <brett_weiland@bpcspace.com> | 2021-03-24 15:38:09 -0500 |
commit | 14b109ea24dc5cb1db948de57a2a44c80ef4622e (patch) | |
tree | e397997d9c8d9c1b50a5a5235d38c6b0e8f24b5b /src/bootloader/enter_kernel.asm | |
parent | 13000d6f44d66da795e92e4b2ddc37ce879bf275 (diff) |
modified: README.md
modified: compiler/create_crosscompiler.sh
deleted: notes
modified: src/.gdb_history
deleted: src/amd64_vol2.pdf
modified: src/bootloader/bios_functions/bios_disk.asm
modified: src/bootloader/bios_functions/print.asm
modified: src/bootloader/bootloader.asm
modified: src/bootloader/cpu_check.asm
modified: src/bootloader/enter_kernel.asm
deleted: src/bootloader/enter_kernel_backup
modified: src/bootloader/gdt.asm
deleted: src/bootloader/multicore.asm
deleted: src/bootloader/notes
new file: src/debug/gdbinit.gdb
deleted: src/indigo_os
modified: src/kernel/include/libc.h
modified: src/kernel/include/paging.h
modified: src/kernel/include/video.h
modified: src/kernel/kernel.c
modified: src/kernel/libs/acpi.c
modified: src/kernel/libs/drivers/serial.c
modified: src/kernel/libs/drivers/video.c
modified: src/kernel/libs/libc.c
modified: src/kernel/libs/page.c
modified: src/link.ld
modified: src/makefile
new file: tools/README.md
modified: tools/page/page.py
Diffstat (limited to 'src/bootloader/enter_kernel.asm')
-rw-r--r-- | src/bootloader/enter_kernel.asm | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/bootloader/enter_kernel.asm b/src/bootloader/enter_kernel.asm index c9991e3..d3933cf 100644 --- a/src/bootloader/enter_kernel.asm +++ b/src/bootloader/enter_kernel.asm @@ -1,5 +1,6 @@ [extern main] [extern _kernel_stack_loc] +[extern _stage1_pagetable] enter_longmode: cli @@ -29,7 +30,7 @@ mov es, ax mov fs, ax mov gs, ax -mov edi, 0x4000 ; 0x3000 +mov edi, _stage1_pagetable ; 0x3000 mov cr3, edi mov eax, 0 mov ecx, 0xc00 ; 0x1000 @@ -37,14 +38,14 @@ rep stosd mov edi, cr3 -mov DWORD [edi], 0x5003 ; pml4e[0] = pdpe +mov DWORD [edi], _stage1_pagetable + 0x1003 ; pml4e[0] = pdpe add edi, 0x1000 -mov DWORD [edi], 0x6003 ; pdpe[0] = pde +mov DWORD [edi], _stage1_pagetable + 0x2003 ; pdpe[0] = pde add edi, 0x1000 mov DWORD [edi], 0x83 ; pde[0] = pte mov eax, cr4 -or eax, 1 << 5 +or eax, 0x620 mov cr4, eax ;end of setting up pages @@ -65,9 +66,11 @@ or eax, 1 << 8 wrmsr mov eax, cr0 -or eax, 1 << 31 +and ax, 0xfffb +or eax, 0x80000002 mov cr0, eax + lgdt [long_gdt.descriptor] jmp LONG_CODE_SEGMENT:enter_kernel |