PageRenderTime 22ms CodeModel.GetById 10ms app.highlight 9ms RepoModel.GetById 1ms app.codeStats 1ms

/arch/powerpc/include/asm/kvm_booke.h

http://github.com/mirrors/linux
C Header | 106 lines | 73 code | 19 blank | 14 comment | 0 complexity | 27b39ba33763527dbe188b83d722c4a4 MD5 | raw file
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 *
  4 * Copyright SUSE Linux Products GmbH 2010
  5 *
  6 * Authors: Alexander Graf <agraf@suse.de>
  7 */
  8
  9#ifndef __ASM_KVM_BOOKE_H__
 10#define __ASM_KVM_BOOKE_H__
 11
 12#include <linux/types.h>
 13#include <linux/kvm_host.h>
 14
 15/*
 16 * Number of available lpids. Only the low-order 6 bits of LPID rgister are
 17 * implemented on e500mc+ cores.
 18 */
 19#define KVMPPC_NR_LPIDS                        64
 20
 21#define KVMPPC_INST_EHPRIV		0x7c00021c
 22#define EHPRIV_OC_SHIFT			11
 23/* "ehpriv 1" : ehpriv with OC = 1 is used for debug emulation */
 24#define EHPRIV_OC_DEBUG			1
 25
 26static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, ulong val)
 27{
 28	vcpu->arch.regs.gpr[num] = val;
 29}
 30
 31static inline ulong kvmppc_get_gpr(struct kvm_vcpu *vcpu, int num)
 32{
 33	return vcpu->arch.regs.gpr[num];
 34}
 35
 36static inline void kvmppc_set_cr(struct kvm_vcpu *vcpu, u32 val)
 37{
 38	vcpu->arch.regs.ccr = val;
 39}
 40
 41static inline u32 kvmppc_get_cr(struct kvm_vcpu *vcpu)
 42{
 43	return vcpu->arch.regs.ccr;
 44}
 45
 46static inline void kvmppc_set_xer(struct kvm_vcpu *vcpu, ulong val)
 47{
 48	vcpu->arch.regs.xer = val;
 49}
 50
 51static inline ulong kvmppc_get_xer(struct kvm_vcpu *vcpu)
 52{
 53	return vcpu->arch.regs.xer;
 54}
 55
 56static inline bool kvmppc_need_byteswap(struct kvm_vcpu *vcpu)
 57{
 58	/* XXX Would need to check TLB entry */
 59	return false;
 60}
 61
 62static inline void kvmppc_set_ctr(struct kvm_vcpu *vcpu, ulong val)
 63{
 64	vcpu->arch.regs.ctr = val;
 65}
 66
 67static inline ulong kvmppc_get_ctr(struct kvm_vcpu *vcpu)
 68{
 69	return vcpu->arch.regs.ctr;
 70}
 71
 72static inline void kvmppc_set_lr(struct kvm_vcpu *vcpu, ulong val)
 73{
 74	vcpu->arch.regs.link = val;
 75}
 76
 77static inline ulong kvmppc_get_lr(struct kvm_vcpu *vcpu)
 78{
 79	return vcpu->arch.regs.link;
 80}
 81
 82static inline void kvmppc_set_pc(struct kvm_vcpu *vcpu, ulong val)
 83{
 84	vcpu->arch.regs.nip = val;
 85}
 86
 87static inline ulong kvmppc_get_pc(struct kvm_vcpu *vcpu)
 88{
 89	return vcpu->arch.regs.nip;
 90}
 91
 92static inline ulong kvmppc_get_fault_dar(struct kvm_vcpu *vcpu)
 93{
 94	return vcpu->arch.fault_dear;
 95}
 96
 97static inline bool kvmppc_supports_magic_page(struct kvm_vcpu *vcpu)
 98{
 99	/* Magic page is only supported on e500v2 */
100#ifdef CONFIG_KVM_E500V2
101	return true;
102#else
103	return false;
104#endif
105}
106#endif /* __ASM_KVM_BOOKE_H__ */