Simplify AT_SEL4_BOOT_INFO environment handling. The runtime environment setup was setting bootinfo, ipc_buffer, and the thread tcb when processing AT_SEL4_BOOT_INFO. Instead set only the bootinfo reference and require the caller pass AT_SEL4_IPC_BUFFER and AT_SEL4_TCB to setup the other data. Change-Id: I06e01ff7e600318bc428f7506c38413aa1893019
diff --git a/src/env.c b/src/env.c index ed627f8..f00bf61 100644 --- a/src/env.c +++ b/src/env.c
@@ -302,13 +302,7 @@ break; } case AT_SEL4_BOOT_INFO: { - seL4_BootInfo *bootinfo = auxv[i].a_un.a_ptr; - if (bootinfo == SEL4RUNTIME_NULL) { - break; - } - env.bootinfo = bootinfo; - env.initial_thread_ipc_buffer = bootinfo->ipcBuffer; - env.initial_thread_tcb = seL4_CapInitThreadTCB; + env.bootinfo = auxv[i].a_un.a_ptr; break; } case AT_SEL4_IPC_BUFFER_PTR: {
diff --git a/src/start_root.c b/src/start_root.c index fe6aa39..374d7f5 100644 --- a/src/start_root.c +++ b/src/start_root.c
@@ -58,7 +58,7 @@ struct { char const *const argv[2]; char const *const envp[2]; - auxv_t auxv[7]; + auxv_t auxv[8]; } info = { .argv = { "rootserver", @@ -85,6 +85,9 @@ .a_type = AT_SEL4_BOOT_INFO, .a_un.a_ptr = boot_info, }, { + .a_type = AT_SEL4_IPC_BUFFER_PTR, + .a_un.a_ptr = boot_info->ipcBuffer, + }, { .a_type = AT_SEL4_TCB, .a_un.a_val = seL4_CapInitThreadTCB, }, {