Spaces:
Runtime error
Runtime error
| /* | |
| * Initialize machine setup information | |
| * | |
| * Copyright (C) 2017, Red Hat Inc, Andrew Jones <drjones@redhat.com> | |
| * | |
| * This work is licensed under the terms of the GNU LGPL, version 2. | |
| */ | |
| extern void setup_env(char *env, int size); | |
| char *initrd; | |
| u32 initrd_size; | |
| static char env[ENV_SIZE]; | |
| void setup_get_initrd(u8 *bootinfo) | |
| { | |
| u32 *mods_addr, *mod_start, *mod_end; | |
| if (*((u32 *)&bootinfo[MBI_MODS_COUNT]) != 1) | |
| return; | |
| mods_addr = (u32 *)&bootinfo[MBI_MODS_ADDR]; | |
| mod_start = (u32 *)(ulong)(*mods_addr + MB_MOD_START); | |
| mod_end = (u32 *)(ulong)(*mods_addr + MB_MOD_END); | |
| initrd = (char *)(ulong)*mod_start; | |
| initrd_size = *mod_end - *mod_start; | |
| } | |
| void setup_environ(void) | |
| { | |
| if (initrd) { | |
| /* environ is currently the only file in the initrd */ | |
| u32 size = MIN(initrd_size, ENV_SIZE); | |
| memcpy(env, initrd, size); | |
| setup_env(env, size); | |
| } | |
| } | |