Changeset View
Changeset View
Standalone View
Standalone View
head/stand/userboot/userboot/bootinfo32.c
Show All 30 Lines | |||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/reboot.h> | #include <sys/reboot.h> | ||||
#include <sys/linker.h> | #include <sys/linker.h> | ||||
#include <i386/include/bootinfo.h> | #include <i386/include/bootinfo.h> | ||||
#include "bootstrap.h" | #include "bootstrap.h" | ||||
#include "libuserboot.h" | #include "libuserboot.h" | ||||
#ifdef LOADER_GELI_SUPPORT | |||||
#include "geliboot.h" | |||||
#endif | |||||
static struct bootinfo bi; | static struct bootinfo bi; | ||||
/* | /* | ||||
* Copy module-related data into the load area, where it can be | * Copy module-related data into the load area, where it can be | ||||
* used as a directory for loaded modules. | * used as a directory for loaded modules. | ||||
* | * | ||||
* Module data is presented in a self-describing format. Each datum | * Module data is presented in a self-describing format. Each datum | ||||
* is preceded by a 32-bit identifier and a 32-bit size field. | * is preceded by a 32-bit identifier and a 32-bit size field. | ||||
▲ Show 20 Lines • Show All 148 Lines • ▼ Show 20 Lines | 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 | |||||
geli_export_key_metadata(kfp); | |||||
#endif | |||||
/* 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 52 Lines • Show Last 20 Lines |