163e158a0SMatt Evans /* 263e158a0SMatt Evans * PPC64 cpu-specific definitions 363e158a0SMatt Evans * 463e158a0SMatt Evans * Copyright 2011 Matt Evans <matt@ozlabs.org>, IBM Corporation. 563e158a0SMatt Evans * 663e158a0SMatt Evans * This program is free software; you can redistribute it and/or modify it 763e158a0SMatt Evans * under the terms of the GNU General Public License version 2 as published 863e158a0SMatt Evans * by the Free Software Foundation. 963e158a0SMatt Evans */ 1063e158a0SMatt Evans 1163e158a0SMatt Evans #ifndef KVM__KVM_CPU_ARCH_H 1263e158a0SMatt Evans #define KVM__KVM_CPU_ARCH_H 1363e158a0SMatt Evans 1463e158a0SMatt Evans /* Architecture-specific kvm_cpu definitions. */ 1563e158a0SMatt Evans 1663e158a0SMatt Evans #include <linux/kvm.h> /* for struct kvm_regs */ 1763e158a0SMatt Evans 1863e158a0SMatt Evans #include <pthread.h> 1963e158a0SMatt Evans 2063e158a0SMatt Evans #define MSR_SF (1UL<<63) 2163e158a0SMatt Evans #define MSR_HV (1UL<<60) 2263e158a0SMatt Evans #define MSR_VEC (1UL<<25) 2363e158a0SMatt Evans #define MSR_VSX (1UL<<23) 2463e158a0SMatt Evans #define MSR_POW (1UL<<18) 2563e158a0SMatt Evans #define MSR_EE (1UL<<15) 2663e158a0SMatt Evans #define MSR_PR (1UL<<14) 2763e158a0SMatt Evans #define MSR_FP (1UL<<13) 2863e158a0SMatt Evans #define MSR_ME (1UL<<12) 2963e158a0SMatt Evans #define MSR_FE0 (1UL<<11) 3063e158a0SMatt Evans #define MSR_SE (1UL<<10) 3163e158a0SMatt Evans #define MSR_BE (1UL<<9) 3263e158a0SMatt Evans #define MSR_FE1 (1UL<<8) 3363e158a0SMatt Evans #define MSR_IR (1UL<<5) 3463e158a0SMatt Evans #define MSR_DR (1UL<<4) 3563e158a0SMatt Evans #define MSR_PMM (1UL<<2) 3663e158a0SMatt Evans #define MSR_RI (1UL<<1) 3763e158a0SMatt Evans #define MSR_LE (1UL<<0) 3863e158a0SMatt Evans 39*f17e5a37SMatt Evans #define POWER7_EXT_IRQ 0 40*f17e5a37SMatt Evans 4163e158a0SMatt Evans struct kvm; 4263e158a0SMatt Evans 4363e158a0SMatt Evans struct kvm_cpu { 4463e158a0SMatt Evans pthread_t thread; /* VCPU thread */ 4563e158a0SMatt Evans 4663e158a0SMatt Evans unsigned long cpu_id; 4763e158a0SMatt Evans 4863e158a0SMatt Evans struct kvm *kvm; /* parent KVM */ 4963e158a0SMatt Evans int vcpu_fd; /* For VCPU ioctls() */ 5063e158a0SMatt Evans struct kvm_run *kvm_run; 5163e158a0SMatt Evans 5263e158a0SMatt Evans struct kvm_regs regs; 5363e158a0SMatt Evans struct kvm_sregs sregs; 5463e158a0SMatt Evans struct kvm_fpu fpu; 5563e158a0SMatt Evans 5663e158a0SMatt Evans u8 is_running; 5763e158a0SMatt Evans u8 paused; 5863e158a0SMatt Evans u8 needs_nmi; 5963e158a0SMatt Evans /* 6063e158a0SMatt Evans * Although PPC KVM doesn't yet support coalesced MMIO, generic code 6163e158a0SMatt Evans * needs this in our kvm_cpu: 6263e158a0SMatt Evans */ 6363e158a0SMatt Evans struct kvm_coalesced_mmio_ring *ring; 6463e158a0SMatt Evans }; 6563e158a0SMatt Evans 6663e158a0SMatt Evans void kvm_cpu__irq(struct kvm_cpu *vcpu, int pin, int level); 6763e158a0SMatt Evans 6863e158a0SMatt Evans #endif /* KVM__KVM_CPU_ARCH_H */ 69