Changeset View
Changeset View
Standalone View
Standalone View
stand/i386/libi386/bootinfo32.c
Show First 20 Lines • Show All 199 Lines • ▼ Show 20 Lines | return (EINVAL); | ||||
addr = 0; | 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); | |||||
/* copy our environment */ | /* copy our environment */ | ||||
envp = addr; | envp = addr; | ||||
addr = bi_copyenv(addr); | addr = bi_copyenv(addr); | ||||
/* pad to a page boundary */ | /* pad to a page boundary */ | ||||
addr = roundup(addr, PAGE_SIZE); | addr = roundup(addr, PAGE_SIZE); | ||||
kfp = file_findfile(NULL, "elf kernel"); | kfp = file_findfile(NULL, "elf kernel"); | ||||
if (kfp == NULL) | if (kfp == NULL) | ||||
kfp = file_findfile(NULL, "elf32 kernel"); | kfp = file_findfile(NULL, "elf32 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); | ||||
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); | |||||
/* Figure out the size and location of the metadata */ | /* Figure out the size and location of the metadata */ | ||||
*modulep = addr; | *modulep = addr; | ||||
size = bi_copymodules32(0); | size = bi_copymodules32(0); | ||||
kernend = roundup(addr + size, PAGE_SIZE); | kernend = roundup(addr + size, PAGE_SIZE); | ||||
*kernendp = kernend; | *kernendp = kernend; | ||||
/* patch MODINFOMD_KERNEND */ | /* patch MODINFOMD_KERNEND */ | ||||
▲ Show 20 Lines • Show All 43 Lines • Show Last 20 Lines |