diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-08-02 18:59:51 +0200 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-08-02 19:39:10 +0200 |
| commit | c0a8113ba0b7cd6984cc685ec63f79bef3bc9899 (patch) | |
| tree | 8fc1095310e3624c9db85254396ebdbf62e7b79e /kernel/boot.S | |
| parent | 132510156e1b907498dd83724f12ca101ae32f88 (diff) | |
framebuffer multiboot2
Diffstat (limited to 'kernel/boot.S')
| -rw-r--r-- | kernel/boot.S | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/kernel/boot.S b/kernel/boot.S index 4276c98..e870c37 100644 --- a/kernel/boot.S +++ b/kernel/boot.S @@ -6,6 +6,10 @@ _start: mov $stack_top, %esp + pushl $0 + pushl %eax + pushl $0 + pushl %ebx call check_multiboot call check_cpuid @@ -62,6 +66,19 @@ setup_page_tables: or $0x3, %eax mov %eax, page_table_lvl3 + mov $page_table_lvl2 + 4096, %eax + or $0x3, %eax + mov %eax, page_table_lvl3+8 + + mov $page_table_lvl2 + 8192, %eax + or $0x3, %eax + mov %eax, page_table_lvl3+16 + + mov $page_table_lvl2 + 12288, %eax + or $0x3, %eax + mov %eax, page_table_lvl3+24 + + movl $0, %ecx 1: movl $0x200000, %eax @@ -71,7 +88,7 @@ setup_page_tables: leal (%edx, %ecx, 8), %edx movl %eax, (%edx) inc %ecx - cmp $512, %ecx + cmp $512*4, %ecx jne 1b ret @@ -100,15 +117,12 @@ enable_paging: ret no_multiboot: - movl $0x4f4d, 0xb8000 hlt no_cpuid: - movl $0x4f43, 0xb8000 hlt no_long_mode: - movl $0x4f4c, 0xb8000 hlt @@ -125,8 +139,9 @@ page_table_lvl4: .skip 4096 page_table_lvl3: .skip 4096 +// map first 4GB page_table_lvl2: - .skip 4096 + .skip 4096*4 .section .rodata gdt64: |
