aboutsummaryrefslogtreecommitdiff
path: root/hw/ppc_chrp.c
diff options
context:
space:
mode:
authorj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-10-29 10:19:50 +0000
committerj_mayer <j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162>2007-10-29 10:19:50 +0000
commit4c823cff9e0a3a11d917869dfbc8ae94bff26bba (patch)
tree182d9eb8fefcf763f8909ae7c345bc8ea6cf7c65 /hw/ppc_chrp.c
parentd2123ead89bd2d337793dcd739352142ff69007c (diff)
downloadqemu-4c823cff9e0a3a11d917869dfbc8ae94bff26bba.zip
qemu-4c823cff9e0a3a11d917869dfbc8ae94bff26bba.tar.gz
qemu-4c823cff9e0a3a11d917869dfbc8ae94bff26bba.tar.bz2
PowerPC 601 / 620 / 970 need a 1MB firmware.
This option is not allowed for PowerMac, as it would overlap with NVRAM. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3480 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/ppc_chrp.c')
-rw-r--r--hw/ppc_chrp.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/hw/ppc_chrp.c b/hw/ppc_chrp.c
index f71169e..b97f99f 100644
--- a/hw/ppc_chrp.c
+++ b/hw/ppc_chrp.c
@@ -98,6 +98,13 @@ static void ppc_core99_init (int ram_size, int vga_ram_size, int boot_device,
register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
envs[i] = env;
}
+ if (env->nip < 0xFFF80000) {
+ /* Special test for PowerPC 601:
+ * the boot vector is at 0xFFF00100, then we need a 1MB BIOS.
+ * But the NVRAM is located at 0xFFF04000...
+ */
+ cpu_abort(env, "Mac99 hardware can not handle 1 MB BIOS\n");
+ }
/* allocate RAM */
cpu_register_physical_memory(0, ram_size, IO_MEM_RAM);
@@ -113,6 +120,10 @@ static void ppc_core99_init (int ram_size, int vga_ram_size, int boot_device,
exit(1);
}
bios_size = (bios_size + 0xfff) & ~0xfff;
+ if (bios_size > 0x00080000) {
+ /* As the NVRAM is located at 0xFFF04000, we cannot use 1 MB BIOSes */
+ cpu_abort(env, "Mac99 hardware can not handle 1 MB BIOS\n");
+ }
cpu_register_physical_memory((uint32_t)(-bios_size),
bios_size, bios_offset | IO_MEM_ROM);