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

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. kvmppc_set_gpr
  2. kvmppc_get_gpr
  3. kvmppc_set_cr
  4. kvmppc_get_cr
  5. kvmppc_set_xer
  6. kvmppc_get_xer
  7. kvmppc_need_byteswap
  8. kvmppc_set_ctr
  9. kvmppc_get_ctr
  10. kvmppc_set_lr
  11. kvmppc_get_lr
  12. kvmppc_set_pc
  13. kvmppc_get_pc
  14. kvmppc_get_fault_dar
  15. kvmppc_supports_magic_page

   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 
  26 static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, ulong val)
  27 {
  28         vcpu->arch.regs.gpr[num] = val;
  29 }
  30 
  31 static inline ulong kvmppc_get_gpr(struct kvm_vcpu *vcpu, int num)
  32 {
  33         return vcpu->arch.regs.gpr[num];
  34 }
  35 
  36 static inline void kvmppc_set_cr(struct kvm_vcpu *vcpu, u32 val)
  37 {
  38         vcpu->arch.regs.ccr = val;
  39 }
  40 
  41 static inline u32 kvmppc_get_cr(struct kvm_vcpu *vcpu)
  42 {
  43         return vcpu->arch.regs.ccr;
  44 }
  45 
  46 static inline void kvmppc_set_xer(struct kvm_vcpu *vcpu, ulong val)
  47 {
  48         vcpu->arch.regs.xer = val;
  49 }
  50 
  51 static inline ulong kvmppc_get_xer(struct kvm_vcpu *vcpu)
  52 {
  53         return vcpu->arch.regs.xer;
  54 }
  55 
  56 static inline bool kvmppc_need_byteswap(struct kvm_vcpu *vcpu)
  57 {
  58         /* XXX Would need to check TLB entry */
  59         return false;
  60 }
  61 
  62 static inline void kvmppc_set_ctr(struct kvm_vcpu *vcpu, ulong val)
  63 {
  64         vcpu->arch.regs.ctr = val;
  65 }
  66 
  67 static inline ulong kvmppc_get_ctr(struct kvm_vcpu *vcpu)
  68 {
  69         return vcpu->arch.regs.ctr;
  70 }
  71 
  72 static inline void kvmppc_set_lr(struct kvm_vcpu *vcpu, ulong val)
  73 {
  74         vcpu->arch.regs.link = val;
  75 }
  76 
  77 static inline ulong kvmppc_get_lr(struct kvm_vcpu *vcpu)
  78 {
  79         return vcpu->arch.regs.link;
  80 }
  81 
  82 static inline void kvmppc_set_pc(struct kvm_vcpu *vcpu, ulong val)
  83 {
  84         vcpu->arch.regs.nip = val;
  85 }
  86 
  87 static inline ulong kvmppc_get_pc(struct kvm_vcpu *vcpu)
  88 {
  89         return vcpu->arch.regs.nip;
  90 }
  91 
  92 static inline ulong kvmppc_get_fault_dar(struct kvm_vcpu *vcpu)
  93 {
  94         return vcpu->arch.fault_dear;
  95 }
  96 
  97 static 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__ */

/* [<][>][^][v][top][bottom][index][help] */