diff options
author | Jon Santmyer <jon@jonsantmyer.com> | 2025-09-10 13:28:28 -0400 |
---|---|---|
committer | Jon Santmyer <jon@jonsantmyer.com> | 2025-09-10 13:28:28 -0400 |
commit | 7f350e7ee1c2c38e5ac0b6c22c17388f6c78f0b5 (patch) | |
tree | aef9904e2495ce840319f2815cd859c47294c88a /arch/x86_64/syscall | |
parent | 032a7bc4d79efea100a00cf3464bea3249a07ff6 (diff) | |
download | jove-kernel-7f350e7ee1c2c38e5ac0b6c22c17388f6c78f0b5.tar.gz jove-kernel-7f350e7ee1c2c38e5ac0b6c22c17388f6c78f0b5.tar.bz2 jove-kernel-7f350e7ee1c2c38e5ac0b6c22c17388f6c78f0b5.zip |
refactor paging code. regression on loading init program
Diffstat (limited to 'arch/x86_64/syscall')
-rw-r--r-- | arch/x86_64/syscall/invoke-mapping.c | 8 | ||||
-rw-r--r-- | arch/x86_64/syscall/wrappers.h | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86_64/syscall/invoke-mapping.c b/arch/x86_64/syscall/invoke-mapping.c index be401d6..5fde8be 100644 --- a/arch/x86_64/syscall/invoke-mapping.c +++ b/arch/x86_64/syscall/invoke-mapping.c @@ -16,7 +16,7 @@ s_handle_invoke_mapping_exists( size_t payload_at ) { - pmle_t *pml4 = (pmle_t*)vmem_phys_tovirt(target_entry->data); + pmle_t *pml4 = (pmle_t*)pptr_tovirt_ident(target_entry->data); pmle_t *target_pml; uint8_t target_depth; SYSCALL_PAYLOAD_TAKEPML(payload, payload_at, pml4, target_depth, target_pml); @@ -36,7 +36,7 @@ s_handle_invoke_mapping_map( size_t payload_at ) { - pmle_t *pml4 = (pmle_t*)vmem_phys_tovirt(target_entry->data); + pmle_t *pml4 = (pmle_t*)pptr_tovirt_ident(target_entry->data); pmle_t *target_pml; uint8_t target_depth; SYSCALL_PAYLOAD_TAKEPML(payload, payload_at, pml4, target_depth, target_pml); @@ -85,7 +85,7 @@ s_handle_invoke_mapping_unmap( size_t payload_at ) { - pmle_t *pml4 = (pmle_t*)vmem_phys_tovirt(target_entry->data); + pmle_t *pml4 = (pmle_t*)pptr_tovirt_ident(target_entry->data); pmle_t *target_pml; uint8_t target_depth; SYSCALL_PAYLOAD_TAKEPML(payload, payload_at, pml4, target_depth, target_pml); @@ -105,7 +105,7 @@ s_handle_invoke_mapping_unmap( if(dest_entry->type != KO_NONE) return KE_FULL; uintptr_t pmle_addr = target_pml->paddr << 12; - size_t *untyped = vmem_phys_tovirt(pmle_addr); + size_t *untyped = pptr_tovirt_ident(pmle_addr); __asm__ volatile("invlpg (%0)":: "r"(untyped): "memory"); *untyped = 0x1000; diff --git a/arch/x86_64/syscall/wrappers.h b/arch/x86_64/syscall/wrappers.h index a6fdf88..0803262 100644 --- a/arch/x86_64/syscall/wrappers.h +++ b/arch/x86_64/syscall/wrappers.h @@ -8,7 +8,7 @@ SYSCALL_PAYLOAD_TAKEL(payload, at, depth, uint8_t); \ if(((depth + 1) * sizeof(uint16_t)) + at >= KO_MESSAGE_BYTES) return KE_BADMSG; \ if(depth == 0 && *(uint16_t*)&payload[at] > 255) return KE_OOB; \ - pml = page_mapping_traverse(pml4, depth, (uint16_t*)&payload[at]); \ + pml = pml4_traverse(pml4, depth, (uint16_t*)&payload[at]); \ at += (depth + 1) * sizeof(uint16_t) #endif |