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