boot: fdt: Turn all addresses and sizes into u64
In case of systems where DRAM bank ends at the edge of 32bit boundary,
start + size calculations would overflow. This happens on STM32MP15xx
with 1 DRAM bank starting at 0xc0000000 and 1 GiB of DRAM. This is a
usual 32bit system DRAM size overflow, fix it by doing all DRAM size
and offset calculations using u64 types. This also covers a case where
a 32bit PAE system might be able to address up to 36bits of DRAM.
Fixes: a4df06e41f
("boot: fdt: Change type of env_get_bootm_low() to phys_addr_t")
Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
91f5dac3f6
commit
16da853114
|
@ -158,13 +158,10 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
|
|||
*/
|
||||
int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size)
|
||||
{
|
||||
u64 start, size, usable, addr, low, mapsize;
|
||||
void *fdt_blob = *of_flat_tree;
|
||||
void *of_start = NULL;
|
||||
phys_addr_t start, size, usable;
|
||||
char *fdt_high;
|
||||
phys_addr_t addr;
|
||||
phys_addr_t low;
|
||||
phys_size_t mapsize;
|
||||
ulong of_len = 0;
|
||||
int bank;
|
||||
int err;
|
||||
|
|
Loading…
Reference in New Issue
Block a user