From 472ec944d2ed81d0304cc6cac80946a6a44776be Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Sat, 19 Apr 2025 16:36:51 -0400 Subject: UEFI and republicans --- kernel/memory/memory.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'kernel/memory/memory.c') diff --git a/kernel/memory/memory.c b/kernel/memory/memory.c index 2d560f4..6bdfe38 100644 --- a/kernel/memory/memory.c +++ b/kernel/memory/memory.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include "memory.h" @@ -68,7 +69,8 @@ void memory_init(void) { struct memory_map mmap; if (mboot_get_mmap(&mmap)) - panic("failed to load memory map"); + if (efi_get_mmap(&mmap)) + panic("failed to load memory map"); kernel_mem_ctx = &_kernel_mem_ctx; kernel_mem_ctx->pml4 = kernel_pml4; @@ -79,4 +81,12 @@ void memory_init(void) virtaddr_init(kernel_mem_ctx->virtctx); physalloc_init(&mmap); sti(); + + // identiy map EFI functions + for (size_t i = 0; i < mmap.entry_count; i++) { + struct memory_segment *seg = &mmap.entries[i]; + if (seg->type != SEG_TYPE_EFI) + continue; + kmapaddr((void *)seg->addr, (void *)seg->addr, seg->len, F_WRITEABLE); + } } -- cgit v1.2.3-freya