diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-19 11:06:32 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-19 11:06:32 -0400 |
| commit | 44f9642bfc9ce9f740d508670befb569e06621a2 (patch) | |
| tree | ff64ec6fd0562b4b9e6ba665fceeec52f2371840 /arch/x86_64/hal/paging.c | |
| parent | b2920331b103d43793ac8be927a80a593ce0be5a (diff) | |
| download | jove-kernel-44f9642bfc9ce9f740d508670befb569e06621a2.tar.gz jove-kernel-44f9642bfc9ce9f740d508670befb569e06621a2.tar.bz2 jove-kernel-44f9642bfc9ce9f740d508670befb569e06621a2.zip | |
Diffstat (limited to 'arch/x86_64/hal/paging.c')
| -rw-r--r-- | arch/x86_64/hal/paging.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/arch/x86_64/hal/paging.c b/arch/x86_64/hal/paging.c index d5bcee3..35d39e2 100644 --- a/arch/x86_64/hal/paging.c +++ b/arch/x86_64/hal/paging.c @@ -162,6 +162,16 @@ inline bool pagedir_mapping_is_present(virtaddr_t *mapping) return ((page_t*)mapping)->p; } +inline bool pagedir_mapping_is_writeable(virtaddr_t *mapping) +{ + return ((page_t*)mapping)->rw; +} + +inline bool pagedir_mapping_is_executable(virtaddr_t *mapping) +{ + return ((page_t*)mapping)->xd; +} + inline void pagedir_mapping_set_pfn(virtaddr_t *mapping, size_t pfn) { ((page_t*)mapping)->pfn = pfn; @@ -205,7 +215,7 @@ int pagedir_map_frame(page_t *pml4, int pagedir_map_frame_type(page_t *pml4, uintptr_t pptr, uintptr_t vptr, - struct syscall_pagedir_flags flg, int type) + struct pagedir_mapping_flags flg, int type) { uintmax_t real_flg = PAGE_USER | (type << PAGE_SHL_TYPE); if(flg.writeable) { @@ -219,7 +229,7 @@ int pagedir_map_frame_type(page_t *pml4, int pagedir_map_untyped_frame( jove_owned_obj_t *tgt, jove_perm_obj_t *untyped, - uintptr_t vptr, struct syscall_pagedir_flags flg) + uintptr_t vptr, struct pagedir_mapping_flags flg) { page_t *pml4 = obj_deref(tgt); @@ -260,7 +270,7 @@ int pagedir_map_table(page_t *pml4, target_table = &pml2[pml2i]; goto map_table; } - return EHASMAP; + return -EHASMAP; map_table: memset(frame_ident, 0, 0x1000); @@ -288,7 +298,7 @@ int pagedir_map_untyped_table( int pagedir_map_shmem_frame( jove_owned_obj_t *tgt, jove_perm_obj_t *shmem, uint8_t page_offset, - uintptr_t vptr, struct syscall_pagedir_flags flg) + uintptr_t vptr, struct pagedir_mapping_flags flg) { page_t *pml4 = obj_deref(tgt); |
