summaryrefslogtreecommitdiff
path: root/hw/ppc
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2014-10-19 07:42:22 +0400
committerMax Filippov <jcmvbkbc@gmail.com>2014-11-03 00:59:10 +0300
commit25bda50a0c7241dcb247483af2b7f961632020cc (patch)
tree513752bed41420a65b2bf8b46b7d6cfe60745f59 /hw/ppc
parentc9e9521fcb840b14ec0ae9117b224ff8a71418da (diff)
downloadqemu-25bda50a0c7241dcb247483af2b7f961632020cc.tar.gz
hw/core/loader: implement address translation in uimage loader
Such address translation is needed when load address recorded in uImage is a virtual address. When the actual load address is requested, return untranslated address: user that needs the translated address can always apply translation function to it and those that need it untranslated don't need to do the inverse translation. Add translation function pointer and its parameter to uimage_load prototype. Update all existing users. No user-visible functional changes. Cc: qemu-stable@nongnu.org Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'hw/ppc')
-rw-r--r--hw/ppc/e500.c3
-rw-r--r--hw/ppc/ppc440_bamboo.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 16c85efab5..2157d87c19 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -830,7 +830,8 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
* Hrm. No ELF image? Try a uImage, maybe someone is giving us an
* ePAPR compliant kernel
*/
- kernel_size = load_uimage(filename, &bios_entry, &loadaddr, NULL);
+ kernel_size = load_uimage(filename, &bios_entry, &loadaddr, NULL,
+ NULL, NULL);
if (kernel_size < 0) {
fprintf(stderr, "qemu: could not load firmware '%s'\n", filename);
exit(1);
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index 81a06d310d..778970aa9b 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -253,7 +253,8 @@ static void bamboo_init(MachineState *machine)
/* Load kernel. */
if (kernel_filename) {
- success = load_uimage(kernel_filename, &entry, &loadaddr, NULL);
+ success = load_uimage(kernel_filename, &entry, &loadaddr, NULL,
+ NULL, NULL);
if (success < 0) {
success = load_elf(kernel_filename, NULL, NULL, &elf_entry,
&elf_lowaddr, NULL, 1, ELF_MACHINE, 0);