diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2025-01-10 12:36:29 -0500 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-01-10 12:36:29 -0500 |
commit | 03ada6227edbb33abf5737151feedc1369e3128a (patch) | |
tree | 6657bb4158e38a96a2df7e9e058d5551cc4fe476 /kernel/mm/virtual_mm/virtual_mm.c | |
parent | e9f6c95657ed1fbfe71cdf88cc903d91f3acdac8 (diff) |
kernel: mm: virtual: Fix the wrong calculation of the flag bitmasks
Diffstat (limited to 'kernel/mm/virtual_mm/virtual_mm.c')
-rw-r--r-- | kernel/mm/virtual_mm/virtual_mm.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/mm/virtual_mm/virtual_mm.c b/kernel/mm/virtual_mm/virtual_mm.c index 278a491..1e85e0c 100644 --- a/kernel/mm/virtual_mm/virtual_mm.c +++ b/kernel/mm/virtual_mm/virtual_mm.c @@ -18,6 +18,9 @@ #include <stdint.h> +#include <libk/stdio.h> + +#include <mm/physical_mm.h> #include <mm/virtual_mm.h> extern uint32_t kernel_start; @@ -25,3 +28,16 @@ extern uint32_t kernel_end; uint32_t page_directory[PAGE_DIRECTORY_SIZE]; uint32_t initial_page_table[PAGE_TABLE_SIZE]; + +bool +virtual_mm_allocate_page(uint32_t *pt_entry) +{ + void *ptr = physical_mm_allocate_block(); + if (!ptr) + return false; + + SET_FRAME(pt_entry, ptr); + ADD_ATTRIB(pt_entry, PTE_PRESENT); + + return true; +} |