blob: 26d440b22bdd645b994235ac6f27b016b45e621d [file] [log] [blame]
/*
* PPC64 architecture-specific definitions
*
* Copyright 2011 Matt Evans <matt@ozlabs.org>, 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 <stdbool.h>
#include <linux/types.h>
#include <time.h>
/*
* 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 VIRTIO_DEFAULT_TRANS(kvm) VIRTIO_PCI
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 */