coreboot: introduce notion of bootmem for memory map at boot
The write_coreboot_table() in coreboot_table.c was already using struct memrange for managing and building up the entries that eventually go into the lb_memory table. Abstract that concept out to a bootmem memory map. The bootmem concept can then be used as a basis for loading payloads, for example. Change-Id: I7edbbca6bbd0568f658fde39ca93b126cab88367 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/5302 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Aaron Durbin
						Aaron Durbin
					
				
			
			
				
	
			
			
			
						parent
						
							c7db28c580
						
					
				
				
					commit
					4904802efc
				
			
							
								
								
									
										48
									
								
								src/include/bootmem.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/include/bootmem.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| /* | ||||
|  * 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. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  */ | ||||
|  | ||||
| #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); | ||||
|  | ||||
| /* 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 */ | ||||
		Reference in New Issue
	
	Block a user