/* * This file is part of the coreboot project. * * Copyright (C) 2014 Google Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef BOOTMEM_H #define BOOTMEM_H #include <memrange.h> #include <stdint.h> #include <boot/coreboot_tables.h> /* * Initialize the memory address space prior to payload loading. The bootmem * serves as the source for the lb_mem table. */ void bootmem_init(void); /* Architecture hook to add bootmem areas the architecture controls. */ void bootmem_arch_add_ranges(void); /* Add a range of a given type to the bootmem address space. */ void bootmem_add_range(uint64_t start, uint64_t size, uint32_t type); /* Write memory coreboot table. */ void bootmem_write_memory_table(struct lb_memory *mem); /* Print current range map of boot memory. */ void bootmem_dump_ranges(void); /* Return 1 if region targets usable RAM, 0 otherwise. */ int bootmem_region_targets_usable_ram(uint64_t start, uint64_t size); /* Allocate a temporary buffer from the unused RAM areas. */ void *bootmem_allocate_buffer(size_t size); #endif /* BOOTMEM_H */