mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	At present dm/device.h includes the linux-compatible features. This requires including linux/compat.h which in turn includes a lot of headers. One of these is malloc.h which we thus end up including in every file in U-Boot. Apart from the inefficiency of this, it is problematic for sandbox which needs to use the system malloc() in some files. Move the compatibility features into a separate header file. Signed-off-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0+
 | |
| /*
 | |
|  * QEMU x86 specific E820 table generation
 | |
|  *
 | |
|  * (C) Copyright 2015 Miao Yan <yanmiaobest@gmail.com>
 | |
|  * (C) Copyright 2019 Bin Meng <bmeng.cn@gmail.com>
 | |
|  */
 | |
| 
 | |
| #include <common.h>
 | |
| #include <env_internal.h>
 | |
| #include <malloc.h>
 | |
| #include <asm/e820.h>
 | |
| #include <asm/arch/qemu.h>
 | |
| 
 | |
| DECLARE_GLOBAL_DATA_PTR;
 | |
| 
 | |
| unsigned int install_e820_map(unsigned int max_entries,
 | |
| 			      struct e820_entry *entries)
 | |
| {
 | |
| 	u64 high_mem_size;
 | |
| 	int n = 0;
 | |
| 
 | |
| 	entries[n].addr = 0;
 | |
| 	entries[n].size = ISA_START_ADDRESS;
 | |
| 	entries[n].type = E820_RAM;
 | |
| 	n++;
 | |
| 
 | |
| 	entries[n].addr = ISA_START_ADDRESS;
 | |
| 	entries[n].size = ISA_END_ADDRESS - ISA_START_ADDRESS;
 | |
| 	entries[n].type = E820_RESERVED;
 | |
| 	n++;
 | |
| 
 | |
| 	/*
 | |
| 	 * since we use memalign(malloc) to allocate high memory for
 | |
| 	 * storing ACPI tables, we need to reserve them in e820 tables,
 | |
| 	 * otherwise kernel will reclaim them and data will be corrupted
 | |
| 	 */
 | |
| 	entries[n].addr = ISA_END_ADDRESS;
 | |
| 	entries[n].size = gd->relocaddr - TOTAL_MALLOC_LEN - ISA_END_ADDRESS;
 | |
| 	entries[n].type = E820_RAM;
 | |
| 	n++;
 | |
| 
 | |
| 	/* for simplicity, reserve entire malloc space */
 | |
| 	entries[n].addr = gd->relocaddr - TOTAL_MALLOC_LEN;
 | |
| 	entries[n].size = TOTAL_MALLOC_LEN;
 | |
| 	entries[n].type = E820_RESERVED;
 | |
| 	n++;
 | |
| 
 | |
| 	entries[n].addr = gd->relocaddr;
 | |
| 	entries[n].size = qemu_get_low_memory_size() - gd->relocaddr;
 | |
| 	entries[n].type = E820_RESERVED;
 | |
| 	n++;
 | |
| 
 | |
| 	entries[n].addr = CONFIG_PCIE_ECAM_BASE;
 | |
| 	entries[n].size = CONFIG_PCIE_ECAM_SIZE;
 | |
| 	entries[n].type = E820_RESERVED;
 | |
| 	n++;
 | |
| 
 | |
| 	high_mem_size = qemu_get_high_memory_size();
 | |
| 	if (high_mem_size) {
 | |
| 		entries[n].addr = SZ_4G;
 | |
| 		entries[n].size = high_mem_size;
 | |
| 		entries[n].type = E820_RAM;
 | |
| 		n++;
 | |
| 	}
 | |
| 
 | |
| 	return n;
 | |
| }
 |