From c424e8127ea8a241aa420d33745f92e3b24e1458 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 8 Feb 2026 15:52:04 +0000 Subject: [PATCH] kernel: bsp: update vm-region api usage --- kernel/bsp.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/kernel/bsp.c b/kernel/bsp.c index ebffc79..8559558 100644 --- a/kernel/bsp.c +++ b/kernel/bsp.c @@ -86,7 +86,7 @@ static kern_status_t map_executable( status = vm_region_create( task->t_address_space, "exec", - VM_REGION_ANY_MAP_ADDRESS, + VM_REGION_ANY_OFFSET, exec_size, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXEC | VM_PROT_USER, ®ion); @@ -103,25 +103,26 @@ static kern_status_t map_executable( return KERN_NO_MEMORY; } - off_t text_offset = bsp->bsp_trailer.bsp_exec_offset - + bsp->bsp_trailer.bsp_text_faddr; - off_t data_offset = 0; - virt_addr_t text_base = region->vr_entry.e_base_address - + bsp->bsp_trailer.bsp_text_vaddr; - virt_addr_t data_base = region->vr_entry.e_base_address - + bsp->bsp_trailer.bsp_data_vaddr; + virt_addr_t text_base = 0, data_base = 0; - tracek("exec_offset=%llx, text_faddr=%llx", - bsp->bsp_trailer.bsp_exec_offset, - bsp->bsp_trailer.bsp_text_faddr); - tracek("text_offset=%llx, data_offset=%llx", text_offset, data_offset); - tracek("text_base=%llx, data_base=%llx", text_base, data_base); + off_t text_foffset = bsp->bsp_trailer.bsp_exec_offset + + bsp->bsp_trailer.bsp_text_faddr; + off_t data_foffset = 0; + off_t text_voffset = bsp->bsp_trailer.bsp_text_vaddr; + off_t data_voffset = bsp->bsp_trailer.bsp_data_vaddr; + + tracek("text_foffset=%06llx, data_foffset=%06llx", + text_foffset, + data_foffset); + tracek("text_voffset=%08llx, data_voffset=%08llx", + text_voffset, + data_voffset); status = vm_region_map_object( region, - text_base, + text_voffset, bsp->bsp_vmo, - text_offset, + text_foffset, bsp->bsp_trailer.bsp_text_size, VM_PROT_READ | VM_PROT_EXEC | VM_PROT_USER, &text_base); @@ -131,9 +132,9 @@ static kern_status_t map_executable( status = vm_region_map_object( region, - data_base, + data_voffset, data, - data_offset, + data_foffset, bsp->bsp_trailer.bsp_data_size, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_USER, &data_base); @@ -141,6 +142,8 @@ static kern_status_t map_executable( return status; } + tracek("text_base=%08llx, data_base=%08llx", text_base, data_base); + *entry = text_base + bsp->bsp_trailer.bsp_exec_entry; return KERN_OK; } @@ -164,7 +167,7 @@ kern_status_t bsp_launch_async(struct bsp *bsp, struct task *task) status = vm_region_map_object( task->t_address_space, - VM_REGION_ANY_MAP_ADDRESS, + VM_REGION_ANY_OFFSET, user_stack, 0, BOOTSTRAP_STACK_SIZE,