From ca20cf32ab3d945155141ef737f5d08ebb373e1d Mon Sep 17 00:00:00 2001 From: Blue Swirl Date: Sun, 20 Sep 2009 14:58:02 +0000 Subject: Compile loader only once Callers must pass ELF machine, byte swapping and symbol LSB clearing information to ELF loader. A.out loader needs page size information, pass that too as a parameter. Extract prototypes to a separate file. Move loader.[ch] and elf_ops.h under hw. Adjust callers. Also use target_phys_addr_t instead of target_ulong for addresses: loader addresses aren't virtual. Signed-off-by: Blue Swirl --- hw/mcf5208.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'hw/mcf5208.c') diff --git a/hw/mcf5208.c b/hw/mcf5208.c index 95a03fc..5598611 100644 --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -11,6 +11,8 @@ #include "sysemu.h" #include "net.h" #include "boards.h" +#include "loader.h" +#include "elf.h" #define SYS_FREQ 66000000 @@ -201,7 +203,7 @@ static void mcf5208evb_init(ram_addr_t ram_size, CPUState *env; int kernel_size; uint64_t elf_entry; - target_ulong entry; + target_phys_addr_t entry; qemu_irq *pic; if (!cpu_model) @@ -268,7 +270,8 @@ static void mcf5208evb_init(ram_addr_t ram_size, exit(1); } - kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL); + kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL, + 1, ELF_MACHINE, 0); entry = elf_entry; if (kernel_size < 0) { kernel_size = load_uimage(kernel_filename, &entry, NULL, NULL); -- cgit v1.1