From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:57257) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWJW5-0006tX-0U for qemu-devel@nongnu.org; Mon, 13 Jun 2011 22:38:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWJVy-0006gV-Re for qemu-devel@nongnu.org; Mon, 13 Jun 2011 22:38:07 -0400 Received: from fmmailgate02.web.de ([217.72.192.227]:57754) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWJVy-0006g3-4O for qemu-devel@nongnu.org; Mon, 13 Jun 2011 22:38:02 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Tue, 14 Jun 2011 04:37:37 +0200 Message-Id: <1308019077-61957-4-git-send-email-andreas.faerber@web.de> In-Reply-To: <1308019077-61957-3-git-send-email-andreas.faerber@web.de> References: <1308019077-61957-1-git-send-email-andreas.faerber@web.de> <1308019077-61957-2-git-send-email-andreas.faerber@web.de> <1308019077-61957-3-git-send-email-andreas.faerber@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: andreas.faerber@web.de Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [RFC 03/23] prep: Prepare emulation of an IBM RS/6000 6015 / 7020 (40p) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= , =?UTF-8?q?Herv=C3=A9=20Poussineau?= Signed-off-by: Herv=C3=A9 Poussineau Signed-off-by: Andreas F=C3=A4rber --- hw/ppc_prep.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++= ++++++ 1 files changed, 62 insertions(+), 0 deletions(-) diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c index b3efd3c..071c149 100644 --- a/hw/ppc_prep.c +++ b/hw/ppc_prep.c @@ -763,6 +763,61 @@ static void ppc_prep_init (ram_addr_t ram_size, register_ioport_write(0x0F00, 4, 1, &PPC_debug_write, NULL); } =20 +static void ibm_40p_init(ram_addr_t ram_size, + const char *boot_device, + const char *kernel_filename, + const char *kernel_cmdline, + const char *initrd_filename, + const char *cpu_model) +{ + CPUState *env; + char *filename; + int bios_size; + ram_addr_t ram_offset, bios_offset; + + // IBM E15 graphic adapter (S3 Vision864) + // PowerPC 601 + // PCI, ISA + // 16 MB RAM + // Audio Crystal 4231 + // SCSI-2 + // Parallel ECP / 2 Serials 16550 (on Super I/O) + + /* init CPU */ + if (cpu_model =3D=3D NULL) + cpu_model =3D "601"; + env =3D ppc_prep_new_cpu(cpu_model); + + /* allocate RAM */ + ram_offset =3D qemu_ram_alloc(NULL, "ppc_prep.ram", ram_size); + cpu_register_physical_memory(0, ram_size, ram_offset); + + /* allocate and load BIOS */ + bios_offset =3D qemu_ram_alloc(NULL, "ppc_prep.bios", BIOS_SIZE); + if (bios_name =3D=3D NULL) + bios_name =3D "P12H0456.IMG"; + filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); + if (filename) { + bios_size =3D get_image_size(filename); + } else { + bios_size =3D -1; + } + if (bios_size > 0 && bios_size <=3D BIOS_SIZE) { + target_phys_addr_t bios_addr; + bios_size =3D (bios_size + 0xfff) & ~0xfff; + bios_addr =3D (uint32_t)(-BIOS_SIZE); + cpu_register_physical_memory(bios_addr, bios_size, + bios_offset | IO_MEM_ROM); + bios_size =3D load_image_targphys(filename, bios_addr, bios_size= ); + } + if (bios_size < 0 || bios_size > BIOS_SIZE) { + hw_error("qemu: could not load PPC PReP bios '%s'\n", bios_name)= ; + } + if (filename) { + qemu_free(filename); + } +} + static QEMUMachine prep_machine =3D { .name =3D "prep", .desc =3D "PowerPC PREP platform", @@ -770,9 +825,16 @@ static QEMUMachine prep_machine =3D { .max_cpus =3D MAX_CPUS, }; =20 +static QEMUMachine ibm_40p_machine =3D { + .name =3D "40p", + .desc =3D "IBM RS/6000 7020 (40p)", + .init =3D ibm_40p_init, +}; + static void prep_machine_init(void) { qemu_register_machine(&prep_machine); + qemu_register_machine(&ibm_40p_machine); } =20 machine_init(prep_machine_init); --=20 1.7.5.3