Revision 409dbce5 hw/sun4u.c

b/hw/sun4u.c
189 189
#else
190 190
        bswap_needed = 0;
191 191
#endif
192
        kernel_size = load_elf(kernel_filename, 0, NULL, NULL, NULL,
193
                               1, ELF_MACHINE, 0);
192
        kernel_size = load_elf(kernel_filename, NULL, NULL, NULL,
193
                               NULL, NULL, 1, ELF_MACHINE, 0);
194 194
        if (kernel_size < 0)
195 195
            kernel_size = load_aout(kernel_filename, KERNEL_LOAD_ADDR,
196 196
                                    RAM_size - KERNEL_LOAD_ADDR, bswap_needed,
......
580 580

  
581 581
device_init(pci_ebus_register);
582 582

  
583
static uint64_t translate_prom_address(void *opaque, uint64_t addr)
584
{
585
    target_phys_addr_t *base_addr = (target_phys_addr_t *)opaque;
586
    return addr + *base_addr - PROM_VADDR;
587
}
588

  
583 589
/* Boot PROM (OpenBIOS) */
584 590
static void prom_init(target_phys_addr_t addr, const char *bios_name)
585 591
{
......
600 606
    }
601 607
    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
602 608
    if (filename) {
603
        ret = load_elf(filename, addr - PROM_VADDR, NULL, NULL, NULL,
604
                       1, ELF_MACHINE, 0);
609
        ret = load_elf(filename, translate_prom_address, &addr,
610
                       NULL, NULL, NULL, 1, ELF_MACHINE, 0);
605 611
        if (ret < 0 || ret > PROM_SIZE_MAX) {
606 612
            ret = load_image_targphys(filename, addr, PROM_SIZE_MAX);
607 613
        }

Also available in: Unified diff