summaryrefslogtreecommitdiff
path: root/kernel/src/start.asm
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--kernel/src/start.asm135
1 files changed, 0 insertions, 135 deletions
diff --git a/kernel/src/start.asm b/kernel/src/start.asm
deleted file mode 100644
index c01cbaa..0000000
--- a/kernel/src/start.asm
+++ /dev/null
@@ -1,135 +0,0 @@
-global start
-extern kernel_boot
-extern kernel_main
-extern kernel_start
-extern kernel_end
-bits 32
-
-; base, limit, access, flags
-%macro gdt_entry 4
- db %2 & 0xff
- db (%2 >> 8) & 0xff
- db %1 & 0xff
- db (%1 >> 8) & 0xff
- db (%1 >> 16) & 0xff
- db %3
- db ((%2 >> 16) & 0x0f) | (%4 << 4)
- db (%1 >> 24) & 0xff
-%endmacro
-
-MAGIC equ 0xe85250d6
-FLAGS equ 0
-LENGTH equ mb_end - mb_start
-CHECKSUM equ -(MAGIC + LENGTH)
-
-VGABUF equ 0x000B8000
-KRNMAP equ 0xC0000000
-
-section .multiboot.data
-align 8
-mb_start:
-dd MAGIC
-dd FLAGS
-dd LENGTH
-dd CHECKSUM
-dw 0
-dw 0
-dd 8
-mb_end:
-
-section .rodata
-align 16
-gdt_start:
-gdt_entry 0, 0, 0, 0
-gdt_entry 0, 0xFFFFF, 0x9A, 0xC
-gdt_entry 0, 0xFFFFF, 0x92, 0xC
-gdt_end:
-gdt_descriptor:
- dw gdt_end - gdt_start - 1
- dd gdt_start
-
-section .bootstrap_stack
-align 16
-stack_start:
-resb 16384 ; 16 KiB
-stack_end:
-
-section .bss
-align 4096
-page_directory:
-resb 4096
-page_table1:
-resb 4096
-
-section .multiboot.text
-align 8
-start:
-
- ; push ebx
- ; call kernel_boot
- ; pop eax
-
- mov edi, page_table1 - KRNMAP
- mov esi, 0
- mov ecx, 1023
-
-paging_cmp:
- cmp esi, kernel_start
- jl paging_add
- cmp esi, kernel_end - KRNMAP
- jge paging_map
-
- mov edx, esi
- or edx, 0x003
- mov [edi], edx
-
-paging_add:
- add esi, 4096
- add edi, 4
- loop paging_cmp
-
-paging_map:
- mov dword [page_table1 - KRNMAP + 1023 * 4], VGABUF | 0x003
- mov dword [page_directory - KRNMAP + 0], page_table1 - KRNMAP + 0x003
- mov dword [page_directory - KRNMAP + 768 * 4], page_table1 - KRNMAP + 0x003
-
- mov ecx, page_directory - KRNMAP
- mov cr3, ecx
-
- mov ecx, cr0
- or ecx, 0x80010000
- mov cr0, ecx
-
- lea ecx, load_gdt
- jmp near ecx
-
-section .text
-align 8
-load_gdt:
- cli
- lgdt [gdt_descriptor]
- mov eax, cr0
- or al, 1
- mov cr0, eax
- jmp 0x08:load_kernel
-
-load_kernel:
-
- mov dword [page_directory], 0
- mov ecx, cr3
- mov cr3, ecx
-
- mov ax, 0x10
- mov ds, ax
- mov ss, ax
- mov es, ax
- mov fs, ax
- mov gs, ax
- mov esp, stack_end
- mov ebp, stack_end
- sti
- call kernel_main
- cli
-halt:
- hlt
- jmp halt