mac.h (3293B)
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#include "qom/object.h" 38 39/* SMP is not enabled, for now */ 40#define MAX_CPUS 1 41 42#define NVRAM_SIZE 0x2000 43#define PROM_FILENAME "openbios-ppc" 44 45#define KERNEL_LOAD_ADDR 0x01000000 46#define KERNEL_GAP 0x00100000 47 48#define ESCC_CLOCK 3686400 49 50/* Old World IRQs */ 51#define OLDWORLD_CUDA_IRQ 0x12 52#define OLDWORLD_ESCCB_IRQ 0x10 53#define OLDWORLD_ESCCA_IRQ 0xf 54#define OLDWORLD_IDE0_IRQ 0xd 55#define OLDWORLD_IDE0_DMA_IRQ 0x2 56#define OLDWORLD_IDE1_IRQ 0xe 57#define OLDWORLD_IDE1_DMA_IRQ 0x3 58 59/* New World IRQs */ 60#define NEWWORLD_CUDA_IRQ 0x19 61#define NEWWORLD_PMU_IRQ 0x19 62#define NEWWORLD_ESCCB_IRQ 0x24 63#define NEWWORLD_ESCCA_IRQ 0x25 64#define NEWWORLD_IDE0_IRQ 0xd 65#define NEWWORLD_IDE0_DMA_IRQ 0x2 66#define NEWWORLD_IDE1_IRQ 0xe 67#define NEWWORLD_IDE1_DMA_IRQ 0x3 68#define NEWWORLD_EXTING_GPIO1 0x2f 69#define NEWWORLD_EXTING_GPIO9 0x37 70 71/* Core99 machine */ 72#define TYPE_CORE99_MACHINE MACHINE_TYPE_NAME("mac99") 73typedef struct Core99MachineState Core99MachineState; 74DECLARE_INSTANCE_CHECKER(Core99MachineState, CORE99_MACHINE, 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 81struct Core99MachineState { 82 /*< private >*/ 83 MachineState parent; 84 85 uint8_t via_config; 86}; 87 88/* Grackle PCI */ 89#define TYPE_GRACKLE_PCI_HOST_BRIDGE "grackle-pcihost" 90 91/* Mac NVRAM */ 92#define TYPE_MACIO_NVRAM "macio-nvram" 93OBJECT_DECLARE_SIMPLE_TYPE(MacIONVRAMState, MACIO_NVRAM) 94 95struct MacIONVRAMState { 96 /*< private >*/ 97 SysBusDevice parent_obj; 98 /*< public >*/ 99 100 uint32_t size; 101 uint32_t it_shift; 102 103 MemoryRegion mem; 104 uint8_t *data; 105}; 106 107void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len); 108#endif /* PPC_MAC_H */