1/* 2 * QEMU PowerMac emulation shared definitions and prototypes 3 * 4 * Copyright (c) 2004-2007 Fabrice Bellard 5 * Copyright (c) 2007 Jocelyn Mayer 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal 9 * in the Software without restriction, including without limitation the rights 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 * copies of the Software, and to permit persons to whom the Software is 12 * furnished to do so, subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be included in 15 * all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 * THE SOFTWARE. 24 */ 25 26#ifndef PPC_MAC_H 27#define PPC_MAC_H 28 29#include "qemu/units.h" 30#include "exec/memory.h" 31#include "hw/boards.h" 32#include "hw/sysbus.h" 33#include "hw/input/adb.h" 34#include "hw/misc/mos6522.h" 35#include "hw/pci/pci_host.h" 36#include "hw/pci-host/uninorth.h" 37 38/* SMP is not enabled, for now */ 39#define MAX_CPUS 1 40 41#define BIOS_SIZE (1 * MiB) 42#define NVRAM_SIZE 0x2000 43#define PROM_FILENAME "openbios-ppc" 44#define PROM_ADDR 0xfff00000 45 46#define KERNEL_LOAD_ADDR 0x01000000 47#define KERNEL_GAP 0x00100000 48 49#define ESCC_CLOCK 3686400 50 51/* Old World IRQs */ 52#define OLDWORLD_CUDA_IRQ 0x12 53#define OLDWORLD_ESCCB_IRQ 0x10 54#define OLDWORLD_ESCCA_IRQ 0xf 55#define OLDWORLD_IDE0_IRQ 0xd 56#define OLDWORLD_IDE0_DMA_IRQ 0x2 57#define OLDWORLD_IDE1_IRQ 0xe 58#define OLDWORLD_IDE1_DMA_IRQ 0x3 59 60/* New World IRQs */ 61#define NEWWORLD_CUDA_IRQ 0x19 62#define NEWWORLD_PMU_IRQ 0x19 63#define NEWWORLD_ESCCB_IRQ 0x24 64#define NEWWORLD_ESCCA_IRQ 0x25 65#define NEWWORLD_IDE0_IRQ 0xd 66#define NEWWORLD_IDE0_DMA_IRQ 0x2 67#define NEWWORLD_IDE1_IRQ 0xe 68#define NEWWORLD_IDE1_DMA_IRQ 0x3 69#define NEWWORLD_EXTING_GPIO1 0x2f 70#define NEWWORLD_EXTING_GPIO9 0x37 71 72/* Core99 machine */ 73#define TYPE_CORE99_MACHINE MACHINE_TYPE_NAME("mac99") 74#define CORE99_MACHINE(obj) OBJECT_CHECK(Core99MachineState, (obj), \ 75 TYPE_CORE99_MACHINE) 76 77#define CORE99_VIA_CONFIG_CUDA 0x0 78#define CORE99_VIA_CONFIG_PMU 0x1 79#define CORE99_VIA_CONFIG_PMU_ADB 0x2 80 81typedef struct Core99MachineState { 82 /*< private >*/ 83 MachineState parent; 84 85 uint8_t via_config; 86} Core99MachineState; 87 88/* Grackle PCI */ 89#define TYPE_GRACKLE_PCI_HOST_BRIDGE "grackle-pcihost" 90 91/* Mac NVRAM */ 92#define TYPE_MACIO_NVRAM "macio-nvram" 93#define MACIO_NVRAM(obj) \ 94 OBJECT_CHECK(MacIONVRAMState, (obj), TYPE_MACIO_NVRAM) 95 96typedef struct MacIONVRAMState { 97 /*< private >*/ 98 SysBusDevice parent_obj; 99 /*< public >*/ 100 101 uint32_t size; 102 uint32_t it_shift; 103 104 MemoryRegion mem; 105 uint8_t *data; 106} MacIONVRAMState; 107 108void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len); 109#endif /* PPC_MAC_H */ 110