diff options
author | Tom Rini <trini@konsulko.com> | 2016-05-23 18:32:47 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-05-23 18:32:47 -0400 |
commit | 6d54868eeb2697c9a905c4d3521efbacc44c5258 (patch) | |
tree | 6ad3ae03a0083d1a50a6152bd6dcad5630ce7823 /arch/x86/cpu/qemu/e820.c | |
parent | d7d000311285e4b8d11e089ca13ea456a01be3b8 (diff) | |
parent | 8216b11cdd50515fbc423a4b2709a00865b8621d (diff) | |
download | u-boot-imx-6d54868eeb2697c9a905c4d3521efbacc44c5258.zip u-boot-imx-6d54868eeb2697c9a905c4d3521efbacc44c5258.tar.gz u-boot-imx-6d54868eeb2697c9a905c4d3521efbacc44c5258.tar.bz2 |
Merge branch 'master' of git://git.denx.de/u-boot-x86
Diffstat (limited to 'arch/x86/cpu/qemu/e820.c')
-rw-r--r-- | arch/x86/cpu/qemu/e820.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/arch/x86/cpu/qemu/e820.c b/arch/x86/cpu/qemu/e820.c new file mode 100644 index 0000000..63853e4 --- /dev/null +++ b/arch/x86/cpu/qemu/e820.c @@ -0,0 +1,43 @@ +/* + * (C) Copyright 2015 Miao Yan <yanmiaobest@gmail.com> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <asm/e820.h> + +unsigned install_e820_map(unsigned max_entries, struct e820entry *entries) +{ + entries[0].addr = 0; + entries[0].size = ISA_START_ADDRESS; + entries[0].type = E820_RAM; + + entries[1].addr = ISA_START_ADDRESS; + entries[1].size = ISA_END_ADDRESS - ISA_START_ADDRESS; + entries[1].type = E820_RESERVED; + + /* + * 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[2].addr = ISA_END_ADDRESS; + entries[2].size = gd->relocaddr - TOTAL_MALLOC_LEN - ISA_END_ADDRESS; + entries[2].type = E820_RAM; + + /* for simplicity, reserve entire malloc space */ + entries[3].addr = gd->relocaddr - TOTAL_MALLOC_LEN; + entries[3].size = TOTAL_MALLOC_LEN; + entries[3].type = E820_RESERVED; + + entries[4].addr = gd->relocaddr; + entries[4].size = gd->ram_size - gd->relocaddr; + entries[4].type = E820_RESERVED; + + entries[5].addr = CONFIG_PCIE_ECAM_BASE; + entries[5].size = CONFIG_PCIE_ECAM_SIZE; + entries[5].type = E820_RESERVED; + + return 6; +} |