Revision 409dbce5 hw/ppc_newworld.c

b/hw/ppc_newworld.c
115 115
    return 0;
116 116
}
117 117

  
118
static uint64_t translate_kernel_address(void *opaque, uint64_t addr)
119
{
120
    return (addr & 0x0fffffff) + KERNEL_LOAD_ADDR;
121
}
122

  
118 123
/* PowerPC Mac99 hardware initialisation */
119 124
static void ppc_core99_init (ram_addr_t ram_size,
120 125
                             const char *boot_device,
......
180 185

  
181 186
    /* Load OpenBIOS (ELF) */
182 187
    if (filename) {
183
        bios_size = load_elf(filename, 0, NULL, NULL, NULL, 1, ELF_MACHINE, 0);
188
        bios_size = load_elf(filename, NULL, NULL, NULL,
189
                             NULL, NULL, 1, ELF_MACHINE, 0);
184 190

  
185 191
        qemu_free(filename);
186 192
    } else {
......
232 238
#endif
233 239
        kernel_base = KERNEL_LOAD_ADDR;
234 240

  
235
        /* Now we can load the kernel. The first step tries to load the kernel
236
           supposing PhysAddr = 0x00000000. If that was wrong the kernel is
237
           loaded again, the new PhysAddr being computed from lowaddr. */
238
        kernel_size = load_elf(kernel_filename, kernel_base, NULL, &lowaddr, NULL,
239
                               1, ELF_MACHINE, 0);
240
        if (kernel_size > 0 && lowaddr != KERNEL_LOAD_ADDR) {
241
            kernel_size = load_elf(kernel_filename, (2 * kernel_base) - lowaddr,
242
                                   NULL, NULL, NULL, 1, ELF_MACHINE, 0);
243
        }
241
        kernel_size = load_elf(kernel_filename, translate_kernel_address, NULL,
242
                               NULL, &lowaddr, NULL, 1, ELF_MACHINE, 0);
244 243
        if (kernel_size < 0)
245 244
            kernel_size = load_aout(kernel_filename, kernel_base,
246 245
                                    ram_size - kernel_base, bswap_needed,

Also available in: Unified diff