1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 2494ec0d0SMiao Yan /* 3494ec0d0SMiao Yan * (C) Copyright 2015 Miao Yan <yanmiaobest@gmail.com> 4494ec0d0SMiao Yan */ 5494ec0d0SMiao Yan 6494ec0d0SMiao Yan #include <common.h> 7494ec0d0SMiao Yan #include <asm/e820.h> 8494ec0d0SMiao Yan 945ffa122SBin Meng DECLARE_GLOBAL_DATA_PTR; 1045ffa122SBin Meng install_e820_map(unsigned int max_entries,struct e820_entry * entries)1187af71c2SBin Mengunsigned int install_e820_map(unsigned int max_entries, 1245519924SBin Meng struct e820_entry *entries) 13494ec0d0SMiao Yan { 14494ec0d0SMiao Yan entries[0].addr = 0; 15494ec0d0SMiao Yan entries[0].size = ISA_START_ADDRESS; 16494ec0d0SMiao Yan entries[0].type = E820_RAM; 17494ec0d0SMiao Yan 18494ec0d0SMiao Yan entries[1].addr = ISA_START_ADDRESS; 19494ec0d0SMiao Yan entries[1].size = ISA_END_ADDRESS - ISA_START_ADDRESS; 20494ec0d0SMiao Yan entries[1].type = E820_RESERVED; 21494ec0d0SMiao Yan 22494ec0d0SMiao Yan /* 23494ec0d0SMiao Yan * since we use memalign(malloc) to allocate high memory for 24494ec0d0SMiao Yan * storing ACPI tables, we need to reserve them in e820 tables, 25494ec0d0SMiao Yan * otherwise kernel will reclaim them and data will be corrupted 26494ec0d0SMiao Yan */ 27494ec0d0SMiao Yan entries[2].addr = ISA_END_ADDRESS; 28494ec0d0SMiao Yan entries[2].size = gd->relocaddr - TOTAL_MALLOC_LEN - ISA_END_ADDRESS; 29494ec0d0SMiao Yan entries[2].type = E820_RAM; 30494ec0d0SMiao Yan 31494ec0d0SMiao Yan /* for simplicity, reserve entire malloc space */ 32494ec0d0SMiao Yan entries[3].addr = gd->relocaddr - TOTAL_MALLOC_LEN; 33494ec0d0SMiao Yan entries[3].size = TOTAL_MALLOC_LEN; 34494ec0d0SMiao Yan entries[3].type = E820_RESERVED; 35494ec0d0SMiao Yan 36494ec0d0SMiao Yan entries[4].addr = gd->relocaddr; 37494ec0d0SMiao Yan entries[4].size = gd->ram_size - gd->relocaddr; 38494ec0d0SMiao Yan entries[4].type = E820_RESERVED; 39494ec0d0SMiao Yan 40494ec0d0SMiao Yan entries[5].addr = CONFIG_PCIE_ECAM_BASE; 41494ec0d0SMiao Yan entries[5].size = CONFIG_PCIE_ECAM_SIZE; 42494ec0d0SMiao Yan entries[5].type = E820_RESERVED; 43494ec0d0SMiao Yan 44494ec0d0SMiao Yan return 6; 45494ec0d0SMiao Yan } 46