/* * PPC64 architecture-specific definitions * * Copyright 2011 Matt Evans , IBM Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published * by the Free Software Foundation. */ #ifndef KVM__KVM_ARCH_H #define KVM__KVM_ARCH_H #include #include #include #include /* * MMIO lives after RAM, but it'd be nice if it didn't constantly move. * Choose a suitably high address, e.g. 63T... This limits RAM size. */ #define PPC_MMIO_START 0x3F0000000000UL #define PPC_MMIO_SIZE 0x010000000000UL #define KERNEL_LOAD_ADDR 0x0000000000000000 #define KERNEL_START_ADDR 0x0000000000000000 #define KERNEL_SECONDARY_START_ADDR 0x0000000000000060 #define INITRD_LOAD_ADDR 0x0000000002800000 #define RTAS_MAX_SIZE 0x10000 #define TIMEBASE_FREQ 512000000ULL #define KVM_MMIO_START PPC_MMIO_START /* * This is the address that pci_get_io_port_block() starts allocating * from. Note that this is a PCI bus address. */ #define KVM_IOPORT_AREA 0x0 #define KVM_PCI_CFG_AREA 0x1000000 #define KVM_PCI_MMIO_AREA 0x2000000 #define KVM_VIRTIO_MMIO_AREA 0x3000000 #define KVM_IRQ_OFFSET 16 #define KVM_VM_TYPE 0 #define KVM_IOEVENTFD_HAS_PIO 0 #define MAX_PAGE_SIZE SZ_256K struct spapr_phb; struct kvm_arch { u64 sdr1; u32 pvr; unsigned long rtas_gra; unsigned long rtas_size; unsigned long fdt_gra; unsigned long initrd_gra; unsigned long initrd_size; struct icp_state *icp; struct spapr_phb *phb; }; #endif /* KVM__KVM_ARCH_H */