diff options
author | Jon Santmyer <jon@jonsantmyer.com> | 2025-09-04 12:01:44 -0400 |
---|---|---|
committer | Jon Santmyer <jon@jonsantmyer.com> | 2025-09-04 12:01:44 -0400 |
commit | 032a7bc4d79efea100a00cf3464bea3249a07ff6 (patch) | |
tree | dab1be8053ac540e4163ffbff850fefa4f22171f /arch/x86_64/memory/page-mapping.c | |
parent | d26eb8b54969e79d933a8e20f2725343cd42deab (diff) | |
download | jove-kernel-main.tar.gz jove-kernel-main.tar.bz2 jove-kernel-main.zip |
syscall message unmaps upon invokemain
Diffstat (limited to 'arch/x86_64/memory/page-mapping.c')
-rw-r--r-- | arch/x86_64/memory/page-mapping.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86_64/memory/page-mapping.c b/arch/x86_64/memory/page-mapping.c index 0de5bfa..d4b4e98 100644 --- a/arch/x86_64/memory/page-mapping.c +++ b/arch/x86_64/memory/page-mapping.c @@ -1,6 +1,7 @@ #include "arch/x86_64/page-mapping.h" #include "arch/x86_64/page.h" #include <stddef.h> +#include "print.h" pmle_t* page_mapping_traverse(pmle_t *pml4, uint8_t depth, uint16_t *path) @@ -13,3 +14,15 @@ page_mapping_traverse(pmle_t *pml4, uint8_t depth, uint16_t *path) if(!pmle->p) return NULL; return page_mapping_traverse(pmle_table, depth - 1, path + 1); } + +pmle_t* +mem_mapping_vptr_mapping(pmle_t *pml4, uint8_t depth, uintptr_t vptr) +{ + uint64_t pathval = 0; + uint16_t *path = (uint16_t*)&pathval; + + for(uint8_t i = 0; i < depth; i++) { + path[i] = PML_I_FOR_LAYER(vptr, 4 - i); + } + return page_mapping_traverse(pml4, depth - 1, path); +} |