0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef __ASM_KVM_BOOKE_H__
0010 #define __ASM_KVM_BOOKE_H__
0011
0012 #include <linux/types.h>
0013 #include <linux/kvm_host.h>
0014
0015
0016
0017
0018
0019 #define KVMPPC_NR_LPIDS 64
0020
0021 #define KVMPPC_INST_EHPRIV 0x7c00021c
0022 #define EHPRIV_OC_SHIFT 11
0023
0024 #define EHPRIV_OC_DEBUG 1
0025
0026 static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, ulong val)
0027 {
0028 vcpu->arch.regs.gpr[num] = val;
0029 }
0030
0031 static inline ulong kvmppc_get_gpr(struct kvm_vcpu *vcpu, int num)
0032 {
0033 return vcpu->arch.regs.gpr[num];
0034 }
0035
0036 static inline void kvmppc_set_cr(struct kvm_vcpu *vcpu, u32 val)
0037 {
0038 vcpu->arch.regs.ccr = val;
0039 }
0040
0041 static inline u32 kvmppc_get_cr(struct kvm_vcpu *vcpu)
0042 {
0043 return vcpu->arch.regs.ccr;
0044 }
0045
0046 static inline void kvmppc_set_xer(struct kvm_vcpu *vcpu, ulong val)
0047 {
0048 vcpu->arch.regs.xer = val;
0049 }
0050
0051 static inline ulong kvmppc_get_xer(struct kvm_vcpu *vcpu)
0052 {
0053 return vcpu->arch.regs.xer;
0054 }
0055
0056 static inline bool kvmppc_need_byteswap(struct kvm_vcpu *vcpu)
0057 {
0058
0059 return false;
0060 }
0061
0062 static inline void kvmppc_set_ctr(struct kvm_vcpu *vcpu, ulong val)
0063 {
0064 vcpu->arch.regs.ctr = val;
0065 }
0066
0067 static inline ulong kvmppc_get_ctr(struct kvm_vcpu *vcpu)
0068 {
0069 return vcpu->arch.regs.ctr;
0070 }
0071
0072 static inline void kvmppc_set_lr(struct kvm_vcpu *vcpu, ulong val)
0073 {
0074 vcpu->arch.regs.link = val;
0075 }
0076
0077 static inline ulong kvmppc_get_lr(struct kvm_vcpu *vcpu)
0078 {
0079 return vcpu->arch.regs.link;
0080 }
0081
0082 static inline void kvmppc_set_pc(struct kvm_vcpu *vcpu, ulong val)
0083 {
0084 vcpu->arch.regs.nip = val;
0085 }
0086
0087 static inline ulong kvmppc_get_pc(struct kvm_vcpu *vcpu)
0088 {
0089 return vcpu->arch.regs.nip;
0090 }
0091
0092 #ifdef CONFIG_BOOKE
0093 static inline ulong kvmppc_get_fault_dar(struct kvm_vcpu *vcpu)
0094 {
0095 return vcpu->arch.fault_dear;
0096 }
0097 #endif
0098
0099 static inline bool kvmppc_supports_magic_page(struct kvm_vcpu *vcpu)
0100 {
0101
0102 #ifdef CONFIG_KVM_E500V2
0103 return true;
0104 #else
0105 return false;
0106 #endif
0107 }
0108 #endif