From 7f350e7ee1c2c38e5ac0b6c22c17388f6c78f0b5 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Wed, 10 Sep 2025 13:28:28 -0400 Subject: refactor paging code. regression on loading init program --- arch/x86_64/syscall/invoke-mapping.c | 8 ++++---- arch/x86_64/syscall/wrappers.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'arch/x86_64/syscall') 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 -- cgit v1.2.1