From 5c73cacd283b9c17fd5777f29707ae87f8150714 Mon Sep 17 00:00:00 2001
From: Amelia Coutard <eliottulio.coutard@gmail.com>
Date: Thu, 5 May 2022 19:11:06 +0200
Subject: [PATCH] Moved the kernel to 1MiB (to avoid problems with low
 memory-mapped IO).

Also had to change the low mapping to 2GiB instead of 2MiB, because the stack finished after 2MiB.
---
 linker.ld  |  2 ++
 src/boot.S | 27 ++++++++++-----------------
 2 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/linker.ld b/linker.ld
index 60de5eb..7c4e9f6 100644
--- a/linker.ld
+++ b/linker.ld
@@ -3,6 +3,8 @@ ENTRY(_start)
 KERNEL_VMA = 0xFFFFFFFF80000000;
 SECTIONS {
 
+	. = 1M;
+
 	.bootstrap ALIGN(4K) : {
 		*(.multiboot_header)
 		. = ALIGN(4K);
diff --git a/src/boot.S b/src/boot.S
index e745a0f..53a9162 100644
--- a/src/boot.S
+++ b/src/boot.S
@@ -77,16 +77,21 @@ TSS:
 TSS_END:
 .set TSS_SIZE, TSS_END - TSS
 .align 0x1000
+#TODO replace with actual RAM detection
+.globl test_ram
+test_ram: .quad 256
+          .quad 0
+          .skip 0x1000 * 256 - 16 # 1MiB RAM
+PDPT_low:  .quad 0x83
+           .quad 0x83 + 1024 * 1024 * 1024
+           .skip 0x1000 - 16
 PDPT_high: .skip 0x1000 - 16
            .quad 0x83
            .quad 0x83 + 1024 * 1024 * 1024
 
 .section .bss
 .align 0x1000
-PML4T:     .skip 0x1000
-PDPT_low:  .skip 0x1000
-PDT:       .skip 0x1000
-PT:        .skip 0x1000
+PML4T: .skip 0x1000
 phys_mem_map: .skip 0x1000 * 128 - 8
 .align 16
 stack_bottom:
@@ -152,21 +157,9 @@ _start:
 	mov $PML4T - KERNEL_VMA, %eax
 	mov %eax, %cr3
 	mov $PDPT_low - KERNEL_VMA + 3, %eax
-	mov %eax, PML4T - KERNEL_VMA + 0 * 8
+	mov %eax, PML4T - KERNEL_VMA +   0 * 8
 	mov $PDPT_high - KERNEL_VMA + 3, %eax
 	mov %eax, PML4T - KERNEL_VMA + 511 * 8
-	mov $PDT - KERNEL_VMA + 3, %eax
-	mov %eax, PDPT_low - KERNEL_VMA + 0 * 8
-	mov $PT - KERNEL_VMA + 3, %eax
-	mov %eax, PDT - KERNEL_VMA + 0 * 8
-
-	mov $PT - KERNEL_VMA, %edi
-	mov $0x0003, %ebx
-	mov $512, %ecx
-1:	mov %ebx, (%edi)
-	add $0x1000, %ebx
-	add $8, %edi
-	loop 1b
 
 	# Enable PAE paging:
 	mov %cr4, %eax
-- 
2.46.0