kernel: bsp: update vm-region api usage

This commit is contained in:
2026-02-08 15:52:04 +00:00
parent fb7d7635c2
commit c424e8127e

View File

@@ -86,7 +86,7 @@ static kern_status_t map_executable(
status = vm_region_create( status = vm_region_create(
task->t_address_space, task->t_address_space,
"exec", "exec",
VM_REGION_ANY_MAP_ADDRESS, VM_REGION_ANY_OFFSET,
exec_size, exec_size,
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXEC | VM_PROT_USER, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXEC | VM_PROT_USER,
&region); &region);
@@ -103,25 +103,26 @@ static kern_status_t map_executable(
return KERN_NO_MEMORY; return KERN_NO_MEMORY;
} }
off_t text_offset = bsp->bsp_trailer.bsp_exec_offset virt_addr_t text_base = 0, data_base = 0;
+ 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;
tracek("exec_offset=%llx, text_faddr=%llx", off_t text_foffset = bsp->bsp_trailer.bsp_exec_offset
bsp->bsp_trailer.bsp_exec_offset, + bsp->bsp_trailer.bsp_text_faddr;
bsp->bsp_trailer.bsp_text_faddr); off_t data_foffset = 0;
tracek("text_offset=%llx, data_offset=%llx", text_offset, data_offset); off_t text_voffset = bsp->bsp_trailer.bsp_text_vaddr;
tracek("text_base=%llx, data_base=%llx", text_base, data_base); 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( status = vm_region_map_object(
region, region,
text_base, text_voffset,
bsp->bsp_vmo, bsp->bsp_vmo,
text_offset, text_foffset,
bsp->bsp_trailer.bsp_text_size, bsp->bsp_trailer.bsp_text_size,
VM_PROT_READ | VM_PROT_EXEC | VM_PROT_USER, VM_PROT_READ | VM_PROT_EXEC | VM_PROT_USER,
&text_base); &text_base);
@@ -131,9 +132,9 @@ static kern_status_t map_executable(
status = vm_region_map_object( status = vm_region_map_object(
region, region,
data_base, data_voffset,
data, data,
data_offset, data_foffset,
bsp->bsp_trailer.bsp_data_size, bsp->bsp_trailer.bsp_data_size,
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_USER, VM_PROT_READ | VM_PROT_WRITE | VM_PROT_USER,
&data_base); &data_base);
@@ -141,6 +142,8 @@ static kern_status_t map_executable(
return status; return status;
} }
tracek("text_base=%08llx, data_base=%08llx", text_base, data_base);
*entry = text_base + bsp->bsp_trailer.bsp_exec_entry; *entry = text_base + bsp->bsp_trailer.bsp_exec_entry;
return KERN_OK; return KERN_OK;
} }
@@ -164,7 +167,7 @@ kern_status_t bsp_launch_async(struct bsp *bsp, struct task *task)
status = vm_region_map_object( status = vm_region_map_object(
task->t_address_space, task->t_address_space,
VM_REGION_ANY_MAP_ADDRESS, VM_REGION_ANY_OFFSET,
user_stack, user_stack,
0, 0,
BOOTSTRAP_STACK_SIZE, BOOTSTRAP_STACK_SIZE,