kernel: bsp: update vm-region api usage
This commit is contained in:
39
kernel/bsp.c
39
kernel/bsp.c
@@ -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,
|
||||||
®ion);
|
®ion);
|
||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user