image: Rename load_addr, save_addr, save_size
[oweals/u-boot.git] / cmd / elf.c
index 22cba58c68c07426988f5557bc8e21569d7d7858..57736f997bf856f0a49d62c9f8383ec8b86f8bba 100644 (file)
--- a/cmd/elf.c
+++ b/cmd/elf.c
@@ -15,8 +15,9 @@
 
 #include <common.h>
 #include <command.h>
+#include <cpu_func.h>
 #include <elf.h>
-#include <environment.h>
+#include <env.h>
 #include <net.h>
 #include <vxworks.h>
 #ifdef CONFIG_X86
@@ -53,7 +54,8 @@ static unsigned long load_elf64_image_phdr(unsigned long addr)
                if (phdr->p_filesz != phdr->p_memsz)
                        memset(dst + phdr->p_filesz, 0x00,
                               phdr->p_memsz - phdr->p_filesz);
-               flush_cache((unsigned long)dst, phdr->p_filesz);
+               flush_cache(rounddown((unsigned long)dst, ARCH_DMA_MINALIGN),
+                           roundup(phdr->p_memsz, ARCH_DMA_MINALIGN));
                ++phdr;
        }
 
@@ -115,7 +117,10 @@ static unsigned long load_elf64_image_shdr(unsigned long addr)
                        memcpy((void *)(uintptr_t)shdr->sh_addr,
                               (const void *)image, shdr->sh_size);
                }
-               flush_cache((ulong)shdr->sh_addr, shdr->sh_size);
+               flush_cache(rounddown(shdr->sh_addr, ARCH_DMA_MINALIGN),
+                           roundup((shdr->sh_addr + shdr->sh_size),
+                                    ARCH_DMA_MINALIGN) -
+                                   rounddown(shdr->sh_addr, ARCH_DMA_MINALIGN));
        }
 
        if (ehdr->e_machine == EM_PPC64 && (ehdr->e_flags &
@@ -164,7 +169,8 @@ static unsigned long load_elf_image_phdr(unsigned long addr)
                if (phdr->p_filesz != phdr->p_memsz)
                        memset(dst + phdr->p_filesz, 0x00,
                               phdr->p_memsz - phdr->p_filesz);
-               flush_cache((unsigned long)dst, phdr->p_filesz);
+               flush_cache(rounddown((unsigned long)dst, ARCH_DMA_MINALIGN),
+                           roundup(phdr->p_memsz, ARCH_DMA_MINALIGN));
                ++phdr;
        }
 
@@ -216,7 +222,10 @@ static unsigned long load_elf_image_shdr(unsigned long addr)
                        memcpy((void *)(uintptr_t)shdr->sh_addr,
                               (const void *)image, shdr->sh_size);
                }
-               flush_cache(shdr->sh_addr, shdr->sh_size);
+               flush_cache(rounddown(shdr->sh_addr, ARCH_DMA_MINALIGN),
+                           roundup((shdr->sh_addr + shdr->sh_size),
+                                   ARCH_DMA_MINALIGN) -
+                           rounddown(shdr->sh_addr, ARCH_DMA_MINALIGN));
        }
 
        return ehdr->e_entry;
@@ -285,7 +294,7 @@ int do_bootelf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                /* Consume address */
                argc--; argv++;
        } else
-               addr = load_addr;
+               addr = image_load_addr;
 
        if (!valid_elf_image(addr))
                return 1;
@@ -339,7 +348,7 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
         * If we don't know where the image is then we're done.
         */
        if (argc < 2)
-               addr = load_addr;
+               addr = image_load_addr;
        else
                addr = simple_strtoul(argv[1], NULL, 16);