From 14b109ea24dc5cb1db948de57a2a44c80ef4622e Mon Sep 17 00:00:00 2001 From: Brett Weiland Date: Wed, 24 Mar 2021 15:36:54 -0500 Subject: 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 --- src/bootloader/enter_kernel.asm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/bootloader/enter_kernel.asm') 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 -- cgit v1.2.3