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_backup | 87 -------------------------------------- 1 file changed, 87 deletions(-) delete mode 100644 src/bootloader/enter_kernel_backup (limited to 'src/bootloader/enter_kernel_backup') diff --git a/src/bootloader/enter_kernel_backup b/src/bootloader/enter_kernel_backup deleted file mode 100644 index 7631f20..0000000 --- a/src/bootloader/enter_kernel_backup +++ /dev/null @@ -1,87 +0,0 @@ -[extern main] -[extern _kernel_stack_loc] -enter_longmode: -cli - -; TODO check if a20 is already set -mov al, 0x92 -or al, 2 -out 0x92, al - -lgdt [protected_gdt.descriptor] -mov eax, cr0 -or eax, 0x1 -mov cr0, eax - -mov eax, 0x8 -mov ds, eax - -jmp 0x8:init_longmode - -bits 32 -init_longmode: -mov ebp, 0xffff -mov esp, ebp -mov ax, PROTECTED_DATA_SEGMENT -mov ds, ax -mov ss, ax -mov es, ax -mov fs, ax -mov gs, ax - -mov edi, 0x3000 ; this is where our page tables will be -mov cr3, edi -mov eax, 0 ; what we'll be putting there -mov ecx, 4096 ; how many times we'll put it there -rep stosd ; kinda like memset(&edi, ecx, edi) -mov edi, cr3 - -mov DWORD [edi], 0x4003 ; pml4e[0] = pdpe -add edi, 0x1000 -mov DWORD [edi], 0x5003 ; pdpe[0] = pde -add edi, 0x1000 -mov DWORD [edi], 0x6003 ; pde[0] = pte -add edi, 0x1000 - -mov ebx, 0x00000003 ; the flags -mov ecx, 512; the loop counter, will map 2 mib - -.idmap_pte_loop: -mov DWORD [edi], ebx -add ebx, 0x1000 ; physical address. Should leave us at 0x7000 -add edi, 8 ; position in page table -loop .idmap_pte_loop - -mov eax, cr4 -or eax, 1 << 5 -mov cr4, eax - -mov ecx, 0xc0000080 -rdmsr -or eax, 1 << 8 -wrmsr - -mov eax, cr0 -or eax, 1 << 31 | 1 << 0 ; this is where we set paging and protected mode (respectively)! -mov cr0, eax - - -mov ecx, 0xc0000080 -rdmsr -or eax, 1 << 8 -wrmsr - -mov eax, cr0 -or eax, 1 << 31 -mov cr0, eax - -lgdt [long_gdt.descriptor] - -jmp LONG_CODE_SEGMENT:enter_kernel -enter_kernel: -bits 64 -mov rbp, _kernel_stack_loc -mov rsp, _kernel_stack_loc -call main ; where we actually call the kernel -jmp $ -ret -- cgit v1.2.3