![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
Go to the source code of this file.
Functions | |
static bool | fit_place_mem (const struct range_entry *r, void *arg) |
Place the region in free memory range. More... | |
bool | fit_payload_arch (struct prog *payload, struct fit_config_node *config, struct region *kernel, struct region *fdt, struct region *initrd) |
bool fit_payload_arch | ( | struct prog * | payload, |
struct fit_config_node * | config, | ||
struct region * | kernel, | ||
struct region * | fdt, | ||
struct region * | initrd | ||
) |
The kernel ARM documentation recommends loading the kernel above 32MiB in order to avoid the need to need to relocate prior to decompression.
The code assumes that bootmem_walk provides a sorted list of memory regions, starting from the lowest address. The order of the calls here doesn't matter, as the placement is enforced in the called functions. For details check code on top.
To ensure the fdt is not overwritten by the kernel decompressor, place the fdt above the 128 MB from the start of RAM, as recommended by the kernel documentation.
Definition at line 30 of file fit_payload.c.
References _dram, arg, BM_MEM_PAYLOAD, bootmem_add_range(), bootmem_dump_ranges(), bootmem_walk(), config, fit_place_mem(), MiB, NULL, region::offset, prog_set_entry(), and region::size.
Referenced by fit_payload().
|
static |
Place the region in free memory range.
Definition at line 11 of file fit_payload.c.
References ALIGN_UP, arg, BM_MEM_RAM, MAX, MiB, region::offset, range_entry_base(), range_entry_end(), range_entry_tag(), and region::size.
Referenced by fit_payload_arch().