fix: identity-map first 4 GiB to cover framebuffer MMIO

Co-authored-by: aider (openrouter/anthropic/claude-opus-4.7) <aider@aider.chat>
This commit is contained in:
2026-05-05 22:23:46 +03:00
parent d8fad1765e
commit 29ad4c2835
+12 -3
View File
@@ -34,7 +34,7 @@ pml4:
pdpt: pdpt:
.space 4096 .space 4096
pd: pd:
.space 4096 .space 4096 * 4
.align 16 .align 16
stack_bottom: stack_bottom:
@@ -64,13 +64,22 @@ _start:
orl $0x03, %eax orl $0x03, %eax
movl %eax, pml4 movl %eax, pml4
/* Populate 4 PDPT entries, each pointing to one of 4 PDs.
* This identity-maps the first 4 GiB using 2 MiB pages,
* which covers typical framebuffer/MMIO regions. */
movl $pd, %eax movl $pd, %eax
orl $0x03, %eax orl $0x03, %eax
movl %eax, pdpt movl %eax, pdpt + 0
addl $4096, %eax
movl %eax, pdpt + 8
addl $4096, %eax
movl %eax, pdpt + 16
addl $4096, %eax
movl %eax, pdpt + 24
movl $0x00000083, %eax movl $0x00000083, %eax
movl $pd, %edi movl $pd, %edi
movl $512, %ecx movl $2048, %ecx
1: 1:
movl %eax, (%edi) movl %eax, (%edi)
addl $0x200000, %eax addl $0x200000, %eax