13cbee15bSj_mayer /* 23cbee15bSj_mayer * QEMU PowerMac emulation shared definitions and prototypes 33cbee15bSj_mayer * 43cbee15bSj_mayer * Copyright (c) 2004-2007 Fabrice Bellard 53cbee15bSj_mayer * Copyright (c) 2007 Jocelyn Mayer 63cbee15bSj_mayer * 73cbee15bSj_mayer * Permission is hereby granted, free of charge, to any person obtaining a copy 83cbee15bSj_mayer * of this software and associated documentation files (the "Software"), to deal 93cbee15bSj_mayer * in the Software without restriction, including without limitation the rights 103cbee15bSj_mayer * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 113cbee15bSj_mayer * copies of the Software, and to permit persons to whom the Software is 123cbee15bSj_mayer * furnished to do so, subject to the following conditions: 133cbee15bSj_mayer * 143cbee15bSj_mayer * The above copyright notice and this permission notice shall be included in 153cbee15bSj_mayer * all copies or substantial portions of the Software. 163cbee15bSj_mayer * 173cbee15bSj_mayer * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 183cbee15bSj_mayer * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 193cbee15bSj_mayer * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 203cbee15bSj_mayer * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 213cbee15bSj_mayer * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 223cbee15bSj_mayer * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 233cbee15bSj_mayer * THE SOFTWARE. 243cbee15bSj_mayer */ 253cbee15bSj_mayer #if !defined(__PPC_MAC_H__) 263cbee15bSj_mayer #define __PPC_MAC_H__ 273cbee15bSj_mayer 28022c62cbSPaolo Bonzini #include "exec/memory.h" 2995ed3b7cSAndreas Färber #include "hw/sysbus.h" 301e39101cSAvi Kivity 313cbee15bSj_mayer /* SMP is not enabled, for now */ 323cbee15bSj_mayer #define MAX_CPUS 1 333cbee15bSj_mayer 34bba831e8SPaul Brook #define BIOS_SIZE (1024 * 1024) 353cbee15bSj_mayer #define BIOS_FILENAME "ppc_rom.bin" 363cbee15bSj_mayer #define NVRAM_SIZE 0x2000 37e5d01b06Saurel32 #define PROM_FILENAME "openbios-ppc" 38992e5acdSblueswir1 #define PROM_ADDR 0xfff00000 393cbee15bSj_mayer 403cbee15bSj_mayer #define KERNEL_LOAD_ADDR 0x01000000 41b9e17a34SAlexander Graf #define KERNEL_GAP 0x00100000 423cbee15bSj_mayer 437fa9ae1aSblueswir1 #define ESCC_CLOCK 3686400 447fa9ae1aSblueswir1 453cbee15bSj_mayer /* Cuda */ 4623c5e4caSAvi Kivity void cuda_init (MemoryRegion **cuda_mem, qemu_irq irq); 473cbee15bSj_mayer 483cbee15bSj_mayer /* MacIO */ 49d037834aSAndreas Färber #define TYPE_OLDWORLD_MACIO "macio-oldworld" 50d037834aSAndreas Färber #define TYPE_NEWWORLD_MACIO "macio-newworld" 51d037834aSAndreas Färber void macio_init(PCIDevice *dev, 5223c5e4caSAvi Kivity MemoryRegion *pic_mem, MemoryRegion *dbdma_mem, 5395ed3b7cSAndreas Färber MemoryRegion *cuda_mem, 5423c5e4caSAvi Kivity int nb_ide, MemoryRegion **ide_mem, MemoryRegion *escc_mem); 553cbee15bSj_mayer 563cbee15bSj_mayer /* Heathrow PIC */ 5723c5e4caSAvi Kivity qemu_irq *heathrow_pic_init(MemoryRegion **pmem, 583cbee15bSj_mayer int nb_cpus, qemu_irq **irqs); 593cbee15bSj_mayer 603cbee15bSj_mayer /* Grackle PCI */ 610e655047SAndreas Färber #define TYPE_GRACKLE_PCI_HOST_BRIDGE "grackle-pcihost" 621e39101cSAvi Kivity PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic, 63aee97b84SAvi Kivity MemoryRegion *address_space_mem, 64aee97b84SAvi Kivity MemoryRegion *address_space_io); 653cbee15bSj_mayer 663cbee15bSj_mayer /* UniNorth PCI */ 67aee97b84SAvi Kivity PCIBus *pci_pmac_init(qemu_irq *pic, 68aee97b84SAvi Kivity MemoryRegion *address_space_mem, 69aee97b84SAvi Kivity MemoryRegion *address_space_io); 70aee97b84SAvi Kivity PCIBus *pci_pmac_u3_init(qemu_irq *pic, 71aee97b84SAvi Kivity MemoryRegion *address_space_mem, 72aee97b84SAvi Kivity MemoryRegion *address_space_io); 733cbee15bSj_mayer 743cbee15bSj_mayer /* Mac NVRAM */ 7595ed3b7cSAndreas Färber #define TYPE_MACIO_NVRAM "macio-nvram" 7695ed3b7cSAndreas Färber #define MACIO_NVRAM(obj) \ 7795ed3b7cSAndreas Färber OBJECT_CHECK(MacIONVRAMState, (obj), TYPE_MACIO_NVRAM) 783cbee15bSj_mayer 7995ed3b7cSAndreas Färber typedef struct MacIONVRAMState { 8095ed3b7cSAndreas Färber /*< private >*/ 8195ed3b7cSAndreas Färber SysBusDevice parent_obj; 8295ed3b7cSAndreas Färber /*< public >*/ 8395ed3b7cSAndreas Färber 8495ed3b7cSAndreas Färber uint32_t size; 8595ed3b7cSAndreas Färber uint32_t it_shift; 8695ed3b7cSAndreas Färber 8795ed3b7cSAndreas Färber MemoryRegion mem; 8895ed3b7cSAndreas Färber uint8_t *data; 8995ed3b7cSAndreas Färber } MacIONVRAMState; 9095ed3b7cSAndreas Färber 913cbee15bSj_mayer void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len); 923743cca7SAndreas Färber uint8_t macio_nvram_read(MacIONVRAMState *s, uint32_t addr); 933743cca7SAndreas Färber void macio_nvram_write(MacIONVRAMState *s, uint32_t addr, uint8_t val); 943cbee15bSj_mayer #endif /* !defined(__PPC_MAC_H__) */ 95