diff options
-rw-r--r-- | hw/an5206.c | 2 | ||||
-rw-r--r-- | hw/arm_boot.c | 3 | ||||
-rw-r--r-- | hw/dummy_m68k.c | 2 | ||||
-rw-r--r-- | hw/mcf5208.c | 2 | ||||
-rw-r--r-- | loader.c | 6 | ||||
-rw-r--r-- | sysemu.h | 3 |
6 files changed, 12 insertions, 6 deletions
diff --git a/hw/an5206.c b/hw/an5206.c index 9d315f3aa4..bb9cde10a5 100644 --- a/hw/an5206.c +++ b/hw/an5206.c @@ -68,7 +68,7 @@ static void an5206_init(ram_addr_t ram_size, int vga_ram_size, kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL); entry = elf_entry; if (kernel_size < 0) { - kernel_size = load_uboot(kernel_filename, &entry, NULL); + kernel_size = load_uboot(kernel_filename, &entry, NULL, NULL); } if (kernel_size < 0) { kernel_size = load_image(kernel_filename, diff --git a/hw/arm_boot.c b/hw/arm_boot.c index 5990961781..765075d913 100644 --- a/hw/arm_boot.c +++ b/hw/arm_boot.c @@ -205,7 +205,8 @@ void arm_load_kernel(CPUState *env, struct arm_boot_info *info) kernel_size = load_elf(info->kernel_filename, 0, &elf_entry, NULL, NULL); entry = elf_entry; if (kernel_size < 0) { - kernel_size = load_uboot(info->kernel_filename, &entry, &is_linux); + kernel_size = load_uboot(info->kernel_filename, &entry, NULL, + &is_linux); } if (kernel_size < 0) { kernel_size = load_image(info->kernel_filename, diff --git a/hw/dummy_m68k.c b/hw/dummy_m68k.c index fc06e9cc88..5cd53580cc 100644 --- a/hw/dummy_m68k.c +++ b/hw/dummy_m68k.c @@ -44,7 +44,7 @@ static void dummy_m68k_init(ram_addr_t ram_size, int vga_ram_size, kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL); entry = elf_entry; if (kernel_size < 0) { - kernel_size = load_uboot(kernel_filename, &entry, NULL); + kernel_size = load_uboot(kernel_filename, &entry, NULL, NULL); } if (kernel_size < 0) { kernel_size = load_image(kernel_filename, diff --git a/hw/mcf5208.c b/hw/mcf5208.c index 3e0a811751..82db38ddfd 100644 --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -290,7 +290,7 @@ static void mcf5208evb_init(ram_addr_t ram_size, int vga_ram_size, kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL); entry = elf_entry; if (kernel_size < 0) { - kernel_size = load_uboot(kernel_filename, &entry, NULL); + kernel_size = load_uboot(kernel_filename, &entry, NULL, NULL); } if (kernel_size < 0) { kernel_size = load_image(kernel_filename, phys_ram_base); @@ -456,7 +456,8 @@ static ssize_t gunzip(void *dst, size_t dstlen, uint8_t *src, } /* Load a U-Boot image. */ -int load_uboot(const char *filename, target_ulong *ep, int *is_linux) +int load_uboot(const char *filename, target_ulong *ep, target_ulong *loadaddr, + int *is_linux) { int fd; int size; @@ -533,6 +534,9 @@ int load_uboot(const char *filename, target_ulong *ep, int *is_linux) cpu_physical_memory_write_rom(hdr->ih_load, data, hdr->ih_size); + if (loadaddr) + *loadaddr = hdr->ih_load; + ret = hdr->ih_size; out: @@ -165,7 +165,8 @@ int load_image_targphys(const char *filename, target_phys_addr_t, int max_sz); int load_elf(const char *filename, int64_t address_offset, uint64_t *pentry, uint64_t *lowaddr, uint64_t *highaddr); int load_aout(const char *filename, target_phys_addr_t addr, int max_sz); -int load_uboot(const char *filename, target_ulong *ep, int *is_linux); +int load_uboot(const char *filename, target_ulong *ep, target_ulong *loadaddr, + int *is_linux); int fread_targphys(target_phys_addr_t dst_addr, size_t nbytes, FILE *f); int fread_targphys_ok(target_phys_addr_t dst_addr, size_t nbytes, FILE *f); |