wip untypeds boot
This commit is contained in:
parent
644426d806
commit
1bc062081e
|
@ -94,3 +94,58 @@ initial mapping:
|
||||||
5. now kernel is able to address physical memory through it's (negative) kernel mapping.
|
5. now kernel is able to address physical memory through it's (negative) kernel mapping.
|
||||||
6. prepare init thread VSpace
|
6. prepare init thread VSpace
|
||||||
- this is more complicated wrt mapping
|
- this is more complicated wrt mapping
|
||||||
|
|
||||||
|
|
||||||
|
// The region of the initial thread is the user image + ipcbuf and boot info.
|
||||||
|
|
||||||
|
/* setup virtual memory for the kernel */
|
||||||
|
map_kernel_window();
|
||||||
|
|
||||||
|
/* Construct an initial address space with enough virtual addresses
|
||||||
|
* to cover the user image + ipc buffer and bootinfo frames */
|
||||||
|
it_pd_cap = create_it_address_space(root_cnode_cap, it_v_reg);
|
||||||
|
|
||||||
|
/* Create and map bootinfo frame cap */
|
||||||
|
create_bi_frame_cap(
|
||||||
|
root_cnode_cap,
|
||||||
|
it_pd_cap,
|
||||||
|
bi_frame_pptr,
|
||||||
|
bi_frame_vptr
|
||||||
|
);
|
||||||
|
|
||||||
|
/* create the initial thread's IPC buffer */
|
||||||
|
ipcbuf_cap = create_ipcbuf_frame(root_cnode_cap, it_pd_cap, ipcbuf_vptr);
|
||||||
|
|
||||||
|
/* create all userland image frames */
|
||||||
|
create_frames_ret =
|
||||||
|
create_frames_of_region(
|
||||||
|
root_cnode_cap,
|
||||||
|
it_pd_cap,
|
||||||
|
ui_reg,
|
||||||
|
true,
|
||||||
|
pv_offset
|
||||||
|
);
|
||||||
|
ndks_boot.bi_frame->userImageFrames = create_frames_ret.region;
|
||||||
|
|
||||||
|
... later ...
|
||||||
|
|
||||||
|
/* create the initial thread */
|
||||||
|
if (!create_initial_thread(
|
||||||
|
root_cnode_cap,
|
||||||
|
it_pd_cap,
|
||||||
|
v_entry,
|
||||||
|
bi_frame_vptr,
|
||||||
|
ipcbuf_vptr,
|
||||||
|
ipcbuf_cap
|
||||||
|
)) {
|
||||||
|
|
||||||
|
|
||||||
|
/* create all of the untypeds. Both devices and kernel window memory */
|
||||||
|
if (!create_untypeds(
|
||||||
|
root_cnode_cap,
|
||||||
|
(region_t) {
|
||||||
|
0xf0000000, (pptr_t)ki_boot_end
|
||||||
|
} /* reusable boot code/data */
|
||||||
|
)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue