[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH 2/2][RFC] Load an OpenBios ELF image instead of
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] Re: [PATCH 2/2][RFC] Load an OpenBios ELF image instead of OpenHackware binary object if found |
Date: |
Fri, 19 Dec 2008 09:45:18 +0100 |
User-agent: |
Mozilla-Thunderbird 2.0.0.17 (X11/20081018) |
Laurent Vivier a écrit :
> This patch try to load an OpenBIOS ELF image instead of
> OpenHackware binary. Default behavior is used if the OpenBIOS (openbios-ppc32)
> file is not found
Actually, I wonder if it won't be simpler to just remove OpenHackware
and always use the OpenBIOS image.
> Signed-off-by: Laurent Vivier <address@hidden>
> Signed-off-by: Blue Swirl <address@hidden>
> ---
> hw/ppc_mac.h | 2 ++
> hw/ppc_oldworld.c | 32 ++++++++++++++++++++++----------
> 2 files changed, 24 insertions(+), 10 deletions(-)
>
> diff --git a/hw/ppc_mac.h b/hw/ppc_mac.h
> index 3a26cde..c833d17 100644
> --- a/hw/ppc_mac.h
> +++ b/hw/ppc_mac.h
> @@ -31,6 +31,8 @@
> #define BIOS_FILENAME "ppc_rom.bin"
> #define VGABIOS_FILENAME "video.x"
> #define NVRAM_SIZE 0x2000
> +#define PROM_FILENAME "openbios-ppc32"
> +#define PROM_ADDR 0xfff00000
>
> #define KERNEL_LOAD_ADDR 0x01000000
> #define INITRD_LOAD_ADDR 0x01800000
> diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c
> index 696add2..73cf4ab 100644
> --- a/hw/ppc_oldworld.c
> +++ b/hw/ppc_oldworld.c
> @@ -164,19 +164,31 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int
> vga_ram_size,
> /* allocate and load BIOS */
> bios_offset = qemu_ram_alloc(BIOS_SIZE);
> if (bios_name == NULL)
> - bios_name = BIOS_FILENAME;
> + bios_name = PROM_FILENAME;
> snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name);
> - bios_size = load_image(buf, phys_ram_base + bios_offset);
> + cpu_register_physical_memory(PROM_ADDR, BIOS_SIZE, bios_offset |
> IO_MEM_ROM);
> + /* First try OpenBIOS (ELF) */
> + bios_size = load_elf(buf, 0, NULL, NULL, NULL);
> if (bios_size < 0 || bios_size > BIOS_SIZE) {
> - cpu_abort(env, "qemu: could not load PowerPC bios '%s'\n", buf);
> - exit(1);
> - }
> - if (bios_size > 0x00080000) {
> - /* As the NVRAM is located at 0xFFF04000, we cannot use 1 MB BIOSes
> */
> - cpu_abort(env, "G3BW Mac hardware can not handle 1 MB BIOS\n");
> +
> + /* OpenHackWare */
> +
> + bios_name = BIOS_FILENAME;
> + snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name);
> + bios_size = get_image_size(buf);
> + bios_size = load_image_targphys(buf, (uint32_t)(-bios_size),
> bios_size);
> + if (bios_size < 0 || bios_size > BIOS_SIZE) {
> + cpu_abort(env, "qemu: could not load PowerPC bios '%s'\n", buf);
> + exit(1);
> + }
> + bios_size = (bios_size + 0xfff) & ~0xffff;
> + if (bios_size > 0x00080000) {
> + /* As the NVRAM is located at 0xFFF04000,
> + * we cannot use 1 MB BIOSes
> + */
> + cpu_abort(env, "G3BW Mac hardware can not handle 1 MB BIOS\n");
> + }
> }
> - cpu_register_physical_memory((uint32_t)(-bios_size),
> - bios_size, bios_offset | IO_MEM_ROM);
>
> /* allocate and load VGA BIOS */
> vga_bios_offset = qemu_ram_alloc(VGA_BIOS_SIZE);
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' address@hidden | address@hidden
`- people.debian.org/~aurel32 | www.aurel32.net
- [Qemu-devel] Re: [PATCH 2/2][RFC] Load an OpenBios ELF image instead of OpenHackware binary object if found,
Aurelien Jarno <=
- Prev by Date:
[Qemu-devel] [PATCH V4] SH7750/51: add register BCR3, BCR4, PCR, RTCOR, RTCNT, RTCSR, SDMR2, SDMR3 and fix BCR2 support
- Next by Date:
[Qemu-devel] Re: [PATCH 1/2][RFC] Modify hw/ppc_oldword.c to use qemu_ram_alloc().
- Previous by thread:
[Qemu-devel] testing qemu svn r6082 on FreeBSD - virtio-net, hpet, vmmouse/vga, got bsd-user to build, and an updated version of the FreeBSD -clock dynticks patch
- Next by thread:
Re: [Qemu-devel] Re: [PATCH 2/2][RFC] Load an OpenBios ELF image instead of OpenHackware binary object if found
- Index(es):