summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/syscall
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2025-09-10 13:28:28 -0400
committerJon Santmyer <jon@jonsantmyer.com>2025-09-10 13:28:28 -0400
commit7f350e7ee1c2c38e5ac0b6c22c17388f6c78f0b5 (patch)
treeaef9904e2495ce840319f2815cd859c47294c88a /arch/x86_64/syscall
parent032a7bc4d79efea100a00cf3464bea3249a07ff6 (diff)
downloadjove-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.c8
-rw-r--r--arch/x86_64/syscall/wrappers.h2
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