From: BALATON Zoltan <balaton@eik.bme.hu>
To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org
Cc: Howard Spoelstra <hsp.cat7@gmail.com>,
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [PATCH v4 2/9] mac_newworld: Allow loading binary ROM image
Date: Sun, 14 Jun 2020 20:13:19 +0200 [thread overview]
Message-ID: <076b37ab493049ef05fdeb2b7c0833375833b370.1592158400.git.balaton@eik.bme.hu> (raw)
In-Reply-To: <cover.1592158400.git.balaton@eik.bme.hu>
Fall back to load binary ROM image if loading ELF fails. This also
moves PROM_BASE and PROM_SIZE defines to board as these are matching
the ROM size and address on this board.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
Notes:
Unlike mac_oldworld where the openbios-ppc image loads at end of ROM
region here we only check size and assume ELF image is loaded from
PROM_BASE, Checking the load addr here is tricky because this board is
also be compiled both 64 and 32 bit and load_elf seems to always
return 64 bit value so handling that could become a mess. If this is a
problem then it's a preexisting one so should be fixed in a separate
patch. This one just allows loading ROM binary too otherwise
preserving previous behaviour.
hw/ppc/mac.h | 2 --
hw/ppc/mac_newworld.c | 22 ++++++++++++++--------
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h
index 6af87d1fa0..a0d9e47031 100644
--- a/hw/ppc/mac.h
+++ b/hw/ppc/mac.h
@@ -38,10 +38,8 @@
/* SMP is not enabled, for now */
#define MAX_CPUS 1
-#define BIOS_SIZE (1 * MiB)
#define NVRAM_SIZE 0x2000
#define PROM_FILENAME "openbios-ppc"
-#define PROM_ADDR 0xfff00000
#define KERNEL_LOAD_ADDR 0x01000000
#define KERNEL_GAP 0x00100000
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 3507f26f6e..5c8a625276 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -82,6 +82,8 @@
#define NDRV_VGA_FILENAME "qemu_vga.ndrv"
+#define PROM_BASE 0xfff00000
+#define PROM_SIZE (1 * MiB)
static void fw_cfg_boot_set(void *opaque, const char *boot_device,
Error **errp)
@@ -100,7 +102,7 @@ static void ppc_core99_reset(void *opaque)
cpu_reset(CPU(cpu));
/* 970 CPUs want to get their initial IP as part of their boot protocol */
- cpu->env.nip = PROM_ADDR + 0x100;
+ cpu->env.nip = PROM_BASE + 0x100;
}
/* PowerPC Mac99 hardware initialisation */
@@ -153,25 +155,29 @@ static void ppc_core99_init(MachineState *machine)
/* allocate RAM */
memory_region_add_subregion(get_system_memory(), 0, machine->ram);
- /* allocate and load BIOS */
- memory_region_init_rom(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
+ /* allocate and load firmware ROM */
+ memory_region_init_rom(bios, NULL, "ppc_core99.bios", PROM_SIZE,
&error_fatal);
+ memory_region_add_subregion(get_system_memory(), PROM_BASE, bios);
- if (bios_name == NULL)
+ if (!bios_name) {
bios_name = PROM_FILENAME;
+ }
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
- memory_region_add_subregion(get_system_memory(), PROM_ADDR, bios);
-
- /* Load OpenBIOS (ELF) */
if (filename) {
+ /* Load OpenBIOS (ELF) */
bios_size = load_elf(filename, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, 1, PPC_ELF_MACHINE, 0, 0);
+ if (bios_size <= 0) {
+ /* or load binary ROM image */
+ bios_size = load_image_targphys(filename, PROM_BASE, PROM_SIZE);
+ }
g_free(filename);
} else {
bios_size = -1;
}
- if (bios_size < 0 || bios_size > BIOS_SIZE) {
+ if (bios_size < 0 || bios_size > PROM_SIZE) {
error_report("could not load PowerPC bios '%s'", bios_name);
exit(1);
}
--
2.21.3
next prev parent reply other threads:[~2020-06-14 18:33 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-14 18:13 [PATCH v4 0/9] Mac Old World ROM experiment BALATON Zoltan
2020-06-14 18:13 ` [PATCH v4 1/9] mac_oldworld: Allow loading binary ROM image BALATON Zoltan
2020-06-14 18:13 ` [PATCH v4 3/9] grackle: Set revision in PCI config to match hardware BALATON Zoltan
2020-06-14 18:13 ` [PATCH v4 8/9] WIP RFC macio/cuda: Attempt to add i2c support BALATON Zoltan
2020-06-14 18:13 ` [PATCH v4 6/9] mac_oldworld: Add machine ID register BALATON Zoltan
2020-06-14 18:13 ` BALATON Zoltan [this message]
2020-06-14 18:13 ` [PATCH v4 7/9] macio: Add dummy screamer register area BALATON Zoltan
2020-06-14 18:13 ` [PATCH v4 9/9] mac_oldworld: Add SPD data to cover RAM BALATON Zoltan
2020-06-14 18:13 ` [PATCH v4 4/9] mac_oldworld: Rename ppc_heathrow_reset to ppc_heathrow_cpu_reset BALATON Zoltan
2020-06-14 18:13 ` [PATCH v4 5/9] mac_oldworld: Map macio to expected address at reset BALATON Zoltan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=076b37ab493049ef05fdeb2b7c0833375833b370.1592158400.git.balaton@eik.bme.hu \
--to=balaton@eik.bme.hu \
--cc=david@gibson.dropbear.id.au \
--cc=hsp.cat7@gmail.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.