Changeset View
Changeset View
Standalone View
Standalone View
stand/i386/libi386/bootinfo64.c
Show First 20 Lines • Show All 221 Lines • ▼ Show 20 Lines | if (addr == 0) { | ||||
for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) { | for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) { | ||||
if (addr < (xp->f_addr + xp->f_size)) | if (addr < (xp->f_addr + xp->f_size)) | ||||
addr = xp->f_addr + xp->f_size; | addr = xp->f_addr + xp->f_size; | ||||
} | } | ||||
} | } | ||||
/* pad to a page boundary */ | /* pad to a page boundary */ | ||||
addr = roundup(addr, PAGE_SIZE); | addr = roundup(addr, PAGE_SIZE); | ||||
addr = build_font_module(addr); | |||||
/* place the metadata before anything */ | /* place the metadata before anything */ | ||||
module = *modulep = addr; | module = *modulep = addr; | ||||
kfp = file_findfile(NULL, "elf kernel"); | kfp = file_findfile(NULL, "elf kernel"); | ||||
if (kfp == NULL) | if (kfp == NULL) | ||||
kfp = file_findfile(NULL, "elf64 kernel"); | kfp = file_findfile(NULL, "elf64 kernel"); | ||||
if (kfp == NULL) | if (kfp == NULL) | ||||
panic("can't find kernel file"); | panic("can't find kernel file"); | ||||
kernend = 0; /* fill it in later */ | kernend = 0; /* fill it in later */ | ||||
file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto); | file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto); | ||||
file_addmetadata(kfp, MODINFOMD_ENVP, sizeof envp, &envp); | file_addmetadata(kfp, MODINFOMD_ENVP, sizeof envp, &envp); | ||||
file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof kernend, &kernend); | file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof kernend, &kernend); | ||||
file_addmetadata(kfp, MODINFOMD_MODULEP, sizeof module, &module); | file_addmetadata(kfp, MODINFOMD_MODULEP, sizeof module, &module); | ||||
if (add_smap != 0) | if (add_smap != 0) | ||||
bios_addsmapdata(kfp); | bios_addsmapdata(kfp); | ||||
#ifdef LOADER_GELI_SUPPORT | #ifdef LOADER_GELI_SUPPORT | ||||
geli_export_key_metadata(kfp); | geli_export_key_metadata(kfp); | ||||
#endif | #endif | ||||
bi_load_vbe_data(kfp); | |||||
size = bi_copymodules64(0); | size = bi_copymodules64(0); | ||||
/* copy our environment */ | /* copy our environment */ | ||||
envp = roundup(addr + size, PAGE_SIZE); | envp = roundup(addr + size, PAGE_SIZE); | ||||
addr = bi_copyenv(envp); | addr = bi_copyenv(envp); | ||||
/* set kernend */ | /* set kernend */ | ||||
Show All 16 Lines |