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" 291e39101cSAvi Kivity 303cbee15bSj_mayer /* SMP is not enabled, for now */ 313cbee15bSj_mayer #define MAX_CPUS 1 323cbee15bSj_mayer 33bba831e8SPaul Brook #define BIOS_SIZE (1024 * 1024) 343cbee15bSj_mayer #define BIOS_FILENAME "ppc_rom.bin" 353cbee15bSj_mayer #define NVRAM_SIZE 0x2000 36e5d01b06Saurel32 #define PROM_FILENAME "openbios-ppc" 37992e5acdSblueswir1 #define PROM_ADDR 0xfff00000 383cbee15bSj_mayer 393cbee15bSj_mayer #define KERNEL_LOAD_ADDR 0x01000000 40b9e17a34SAlexander Graf #define KERNEL_GAP 0x00100000 413cbee15bSj_mayer 427fa9ae1aSblueswir1 #define ESCC_CLOCK 3686400 437fa9ae1aSblueswir1 443cbee15bSj_mayer /* Cuda */ 4523c5e4caSAvi Kivity void cuda_init (MemoryRegion **cuda_mem, qemu_irq irq); 463cbee15bSj_mayer 473cbee15bSj_mayer /* MacIO */ 48d037834aSAndreas Färber #define TYPE_OLDWORLD_MACIO "macio-oldworld" 49d037834aSAndreas Färber #define TYPE_NEWWORLD_MACIO "macio-newworld" 50d037834aSAndreas Färber void macio_init(PCIDevice *dev, 5123c5e4caSAvi Kivity MemoryRegion *pic_mem, MemoryRegion *dbdma_mem, 5223c5e4caSAvi Kivity MemoryRegion *cuda_mem, void *nvram, 5323c5e4caSAvi Kivity int nb_ide, MemoryRegion **ide_mem, MemoryRegion *escc_mem); 543cbee15bSj_mayer 553cbee15bSj_mayer /* Heathrow PIC */ 5623c5e4caSAvi Kivity qemu_irq *heathrow_pic_init(MemoryRegion **pmem, 573cbee15bSj_mayer int nb_cpus, qemu_irq **irqs); 583cbee15bSj_mayer 593cbee15bSj_mayer /* Grackle PCI */ 600e655047SAndreas Färber #define TYPE_GRACKLE_PCI_HOST_BRIDGE "grackle-pcihost" 611e39101cSAvi Kivity PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic, 62aee97b84SAvi Kivity MemoryRegion *address_space_mem, 63aee97b84SAvi Kivity MemoryRegion *address_space_io); 643cbee15bSj_mayer 653cbee15bSj_mayer /* UniNorth PCI */ 66aee97b84SAvi Kivity PCIBus *pci_pmac_init(qemu_irq *pic, 67aee97b84SAvi Kivity MemoryRegion *address_space_mem, 68aee97b84SAvi Kivity MemoryRegion *address_space_io); 69aee97b84SAvi Kivity PCIBus *pci_pmac_u3_init(qemu_irq *pic, 70aee97b84SAvi Kivity MemoryRegion *address_space_mem, 71aee97b84SAvi Kivity MemoryRegion *address_space_io); 723cbee15bSj_mayer 733cbee15bSj_mayer /* Mac NVRAM */ 743cbee15bSj_mayer typedef struct MacIONVRAMState MacIONVRAMState; 753cbee15bSj_mayer 76a8170e5eSAvi Kivity MacIONVRAMState *macio_nvram_init (hwaddr size, 7768af3f24Sblueswir1 unsigned int it_shift); 7823c5e4caSAvi Kivity void macio_nvram_setup_bar(MacIONVRAMState *s, MemoryRegion *bar, 79a8170e5eSAvi Kivity hwaddr mem_base); 803cbee15bSj_mayer void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len); 813743cca7SAndreas Färber uint8_t macio_nvram_read(MacIONVRAMState *s, uint32_t addr); 823743cca7SAndreas Färber void macio_nvram_write(MacIONVRAMState *s, uint32_t addr, uint8_t val); 833cbee15bSj_mayer #endif /* !defined(__PPC_MAC_H__) */ 84