1*75f74f0dSHollis Blanchard /* 2*75f74f0dSHollis Blanchard * This program is free software; you can redistribute it and/or modify 3*75f74f0dSHollis Blanchard * it under the terms of the GNU General Public License, version 2, as 4*75f74f0dSHollis Blanchard * published by the Free Software Foundation. 5*75f74f0dSHollis Blanchard * 6*75f74f0dSHollis Blanchard * This program is distributed in the hope that it will be useful, 7*75f74f0dSHollis Blanchard * but WITHOUT ANY WARRANTY; without even the implied warranty of 8*75f74f0dSHollis Blanchard * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 9*75f74f0dSHollis Blanchard * GNU General Public License for more details. 10*75f74f0dSHollis Blanchard * 11*75f74f0dSHollis Blanchard * You should have received a copy of the GNU General Public License 12*75f74f0dSHollis Blanchard * along with this program; if not, write to the Free Software 13*75f74f0dSHollis Blanchard * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 14*75f74f0dSHollis Blanchard * 15*75f74f0dSHollis Blanchard * Copyright IBM Corp. 2008 16*75f74f0dSHollis Blanchard * 17*75f74f0dSHollis Blanchard * Authors: Hollis Blanchard <hollisb@us.ibm.com> 18*75f74f0dSHollis Blanchard */ 19*75f74f0dSHollis Blanchard 20*75f74f0dSHollis Blanchard #ifndef __KVM_BOOKE_H__ 21*75f74f0dSHollis Blanchard #define __KVM_BOOKE_H__ 22*75f74f0dSHollis Blanchard 23*75f74f0dSHollis Blanchard #include <linux/types.h> 24*75f74f0dSHollis Blanchard #include <linux/kvm_host.h> 25*75f74f0dSHollis Blanchard 26*75f74f0dSHollis Blanchard /* Helper function for "full" MSR writes. No need to call this if only EE is 27*75f74f0dSHollis Blanchard * changing. */ 28*75f74f0dSHollis Blanchard static inline void kvmppc_set_msr(struct kvm_vcpu *vcpu, u32 new_msr) 29*75f74f0dSHollis Blanchard { 30*75f74f0dSHollis Blanchard if ((new_msr & MSR_PR) != (vcpu->arch.msr & MSR_PR)) 31*75f74f0dSHollis Blanchard kvmppc_mmu_priv_switch(vcpu, new_msr & MSR_PR); 32*75f74f0dSHollis Blanchard 33*75f74f0dSHollis Blanchard vcpu->arch.msr = new_msr; 34*75f74f0dSHollis Blanchard 35*75f74f0dSHollis Blanchard if (vcpu->arch.msr & MSR_WE) 36*75f74f0dSHollis Blanchard kvm_vcpu_block(vcpu); 37*75f74f0dSHollis Blanchard } 38*75f74f0dSHollis Blanchard 39*75f74f0dSHollis Blanchard #endif /* __KVM_BOOKE_H__ */ 40