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