summaryrefslogtreecommitdiffstats
path: root/hw/loader.h
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2010-03-14 21:20:59 +0100
committerAurelien Jarno <aurelien@aurel32.net>2010-03-16 08:38:05 +0100
commit409dbce54b57b85bd229174da86d77ca08508508 (patch)
tree61aaddb4700595752b34e01db383074463336329 /hw/loader.h
parentcb66ffcf9e298dc1bfc11682172ff9472bcd4495 (diff)
downloadhqemu-409dbce54b57b85bd229174da86d77ca08508508.zip
hqemu-409dbce54b57b85bd229174da86d77ca08508508.tar.gz
load_elf: replace the address addend by a translation function
A few machines need to translate the ELF header addresses into physical addresses. Currently the only possibility is to add a value to the addresses. This patch replaces the addend argument by and a translation function and an opaque passed to the function. A NULL function does not translate the address. The patch also convert all machines that have an addend, simplify the PowerPC kernel loading and fix the MIPS kernel loading using this new feature. Other machines may benefit from this feature. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'hw/loader.h')
-rw-r--r--hw/loader.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/hw/loader.h b/hw/loader.h
index 56676e1..1f82fc5 100644
--- a/hw/loader.h
+++ b/hw/loader.h
@@ -5,9 +5,10 @@
int get_image_size(const char *filename);
int load_image(const char *filename, uint8_t *addr); /* deprecated */
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 big_endian, int elf_machine, int clear_lsb);
+int load_elf(const char *filename, uint64_t (*translate_fn)(void *, uint64_t),
+ void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr,
+ uint64_t *highaddr, int big_endian, int elf_machine,
+ int clear_lsb);
int load_aout(const char *filename, target_phys_addr_t addr, int max_sz,
int bswap_needed, target_phys_addr_t target_page_size);
int load_uimage(const char *filename, target_phys_addr_t *ep,
OpenPOWER on IntegriCloud