summaryrefslogtreecommitdiff
path: root/src/bootloader/enter_kernel_backup
diff options
context:
space:
mode:
authorBrett Weiland <brett_weiland@bpcspace.com>2021-03-24 15:36:54 -0500
committerBrett Weiland <brett_weiland@bpcspace.com>2021-03-24 15:38:09 -0500
commit14b109ea24dc5cb1db948de57a2a44c80ef4622e (patch)
treee397997d9c8d9c1b50a5a5235d38c6b0e8f24b5b /src/bootloader/enter_kernel_backup
parent13000d6f44d66da795e92e4b2ddc37ce879bf275 (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_backup')
-rw-r--r--src/bootloader/enter_kernel_backup87
1 files changed, 0 insertions, 87 deletions
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