Commit 992e5acd4d0c08d397c39c80acc8203fd394bd9c
1 parent
fe096129
Use OpenBIOS for g3bw machine
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6128 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
12 additions
and
8 deletions
hw/ppc_mac.h
@@ -31,6 +31,8 @@ | @@ -31,6 +31,8 @@ | ||
31 | #define BIOS_FILENAME "ppc_rom.bin" | 31 | #define BIOS_FILENAME "ppc_rom.bin" |
32 | #define VGABIOS_FILENAME "video.x" | 32 | #define VGABIOS_FILENAME "video.x" |
33 | #define NVRAM_SIZE 0x2000 | 33 | #define NVRAM_SIZE 0x2000 |
34 | +#define PROM_FILENAME "openbios-ppc32" | ||
35 | +#define PROM_ADDR 0xfff00000 | ||
34 | 36 | ||
35 | #define KERNEL_LOAD_ADDR 0x01000000 | 37 | #define KERNEL_LOAD_ADDR 0x01000000 |
36 | #define INITRD_LOAD_ADDR 0x01800000 | 38 | #define INITRD_LOAD_ADDR 0x01800000 |
hw/ppc_oldworld.c
@@ -164,19 +164,16 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | @@ -164,19 +164,16 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | ||
164 | /* allocate and load BIOS */ | 164 | /* allocate and load BIOS */ |
165 | bios_offset = qemu_ram_alloc(BIOS_SIZE); | 165 | bios_offset = qemu_ram_alloc(BIOS_SIZE); |
166 | if (bios_name == NULL) | 166 | if (bios_name == NULL) |
167 | - bios_name = BIOS_FILENAME; | 167 | + bios_name = PROM_FILENAME; |
168 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); | 168 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); |
169 | - bios_size = load_image(buf, phys_ram_base + bios_offset); | 169 | + cpu_register_physical_memory(PROM_ADDR, BIOS_SIZE, bios_offset | IO_MEM_ROM); |
170 | + | ||
171 | + /* Load OpenBIOS (ELF) */ | ||
172 | + bios_size = load_elf(buf, 0, NULL, NULL, NULL); | ||
170 | if (bios_size < 0 || bios_size > BIOS_SIZE) { | 173 | if (bios_size < 0 || bios_size > BIOS_SIZE) { |
171 | cpu_abort(env, "qemu: could not load PowerPC bios '%s'\n", buf); | 174 | cpu_abort(env, "qemu: could not load PowerPC bios '%s'\n", buf); |
172 | exit(1); | 175 | exit(1); |
173 | } | 176 | } |
174 | - if (bios_size > 0x00080000) { | ||
175 | - /* As the NVRAM is located at 0xFFF04000, we cannot use 1 MB BIOSes */ | ||
176 | - cpu_abort(env, "G3BW Mac hardware can not handle 1 MB BIOS\n"); | ||
177 | - } | ||
178 | - cpu_register_physical_memory((uint32_t)(-bios_size), | ||
179 | - bios_size, bios_offset | IO_MEM_ROM); | ||
180 | 177 | ||
181 | /* allocate and load VGA BIOS */ | 178 | /* allocate and load VGA BIOS */ |
182 | vga_bios_offset = qemu_ram_alloc(VGA_BIOS_SIZE); | 179 | vga_bios_offset = qemu_ram_alloc(VGA_BIOS_SIZE); |
qemu-doc.texi
@@ -2328,6 +2328,11 @@ PC compatible keyboard and mouse. | @@ -2328,6 +2328,11 @@ PC compatible keyboard and mouse. | ||
2328 | QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at | 2328 | QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at |
2329 | @url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}. | 2329 | @url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}. |
2330 | 2330 | ||
2331 | +Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/} | ||
2332 | +for the g3bw PowerMac machine. OpenBIOS is a free (GPL v2) portable | ||
2333 | +firmware implementation. The goal is to implement a 100% IEEE | ||
2334 | +1275-1994 (referred to as Open Firmware) compliant firmware. | ||
2335 | + | ||
2331 | @c man begin OPTIONS | 2336 | @c man begin OPTIONS |
2332 | 2337 | ||
2333 | The following options are specific to the PowerPC emulation: | 2338 | The following options are specific to the PowerPC emulation: |