Lines Matching refs:vcpu
52 static int kvmppc_e500_emul_msgclr(struct kvm_vcpu *vcpu, int rb) in kvmppc_e500_emul_msgclr() argument
54 ulong param = vcpu->arch.gpr[rb]; in kvmppc_e500_emul_msgclr()
60 clear_bit(prio, &vcpu->arch.pending_exceptions); in kvmppc_e500_emul_msgclr()
64 static int kvmppc_e500_emul_msgsnd(struct kvm_vcpu *vcpu, int rb) in kvmppc_e500_emul_msgsnd() argument
66 ulong param = vcpu->arch.gpr[rb]; in kvmppc_e500_emul_msgsnd()
75 kvm_for_each_vcpu(i, cvcpu, vcpu->kvm) { in kvmppc_e500_emul_msgsnd()
87 static int kvmppc_e500_emul_ehpriv(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_e500_emul_ehpriv() argument
95 run->debug.arch.address = vcpu->arch.pc; in kvmppc_e500_emul_ehpriv()
97 kvmppc_account_exit(vcpu, DEBUG_EXITS); in kvmppc_e500_emul_ehpriv()
107 static int kvmppc_e500_emul_dcbtls(struct kvm_vcpu *vcpu) in kvmppc_e500_emul_dcbtls() argument
109 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_e500_emul_dcbtls()
116 int kvmppc_core_emulate_op_e500(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_core_emulate_op_e500() argument
130 emulated = kvmppc_e500_emul_dcbtls(vcpu); in kvmppc_core_emulate_op_e500()
135 emulated = kvmppc_e500_emul_msgsnd(vcpu, rb); in kvmppc_core_emulate_op_e500()
139 emulated = kvmppc_e500_emul_msgclr(vcpu, rb); in kvmppc_core_emulate_op_e500()
144 emulated = kvmppc_e500_emul_tlbre(vcpu); in kvmppc_core_emulate_op_e500()
148 emulated = kvmppc_e500_emul_tlbwe(vcpu); in kvmppc_core_emulate_op_e500()
152 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
153 emulated = kvmppc_e500_emul_tlbsx(vcpu, ea); in kvmppc_core_emulate_op_e500()
158 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
159 emulated = kvmppc_e500_emul_tlbilx(vcpu, type, ea); in kvmppc_core_emulate_op_e500()
164 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
165 emulated = kvmppc_e500_emul_tlbivax(vcpu, ea); in kvmppc_core_emulate_op_e500()
169 emulated = kvmppc_e500_emul_ehpriv(run, vcpu, inst, in kvmppc_core_emulate_op_e500()
184 emulated = kvmppc_booke_emulate_op(run, vcpu, inst, advance); in kvmppc_core_emulate_op_e500()
189 int kvmppc_core_emulate_mtspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong spr_val) in kvmppc_core_emulate_mtspr_e500() argument
191 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_core_emulate_mtspr_e500()
197 kvmppc_set_pid(vcpu, spr_val); in kvmppc_core_emulate_mtspr_e500()
210 vcpu->arch.shared->mas0 = spr_val; in kvmppc_core_emulate_mtspr_e500()
213 vcpu->arch.shared->mas1 = spr_val; in kvmppc_core_emulate_mtspr_e500()
216 vcpu->arch.shared->mas2 = spr_val; in kvmppc_core_emulate_mtspr_e500()
219 vcpu->arch.shared->mas7_3 &= ~(u64)0xffffffff; in kvmppc_core_emulate_mtspr_e500()
220 vcpu->arch.shared->mas7_3 |= spr_val; in kvmppc_core_emulate_mtspr_e500()
223 vcpu->arch.shared->mas4 = spr_val; in kvmppc_core_emulate_mtspr_e500()
226 vcpu->arch.shared->mas6 = spr_val; in kvmppc_core_emulate_mtspr_e500()
229 vcpu->arch.shared->mas7_3 &= (u64)0xffffffff; in kvmppc_core_emulate_mtspr_e500()
230 vcpu->arch.shared->mas7_3 |= (u64)spr_val << 32; in kvmppc_core_emulate_mtspr_e500()
258 vcpu->arch.pwrmgtcr0 = spr_val; in kvmppc_core_emulate_mtspr_e500()
264 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
267 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA] = spr_val; in kvmppc_core_emulate_mtspr_e500()
270 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND] = spr_val; in kvmppc_core_emulate_mtspr_e500()
275 vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_UNAVAIL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
278 vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_ASSIST] = spr_val; in kvmppc_core_emulate_mtspr_e500()
282 vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR] = spr_val; in kvmppc_core_emulate_mtspr_e500()
286 vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
289 vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL_CRIT] = spr_val; in kvmppc_core_emulate_mtspr_e500()
293 emulated = kvmppc_booke_emulate_mtspr(vcpu, sprn, spr_val); in kvmppc_core_emulate_mtspr_e500()
299 int kvmppc_core_emulate_mfspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong *spr_val) in kvmppc_core_emulate_mfspr_e500() argument
301 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_core_emulate_mfspr_e500()
316 *spr_val = vcpu->arch.shared->mas0; in kvmppc_core_emulate_mfspr_e500()
319 *spr_val = vcpu->arch.shared->mas1; in kvmppc_core_emulate_mfspr_e500()
322 *spr_val = vcpu->arch.shared->mas2; in kvmppc_core_emulate_mfspr_e500()
325 *spr_val = (u32)vcpu->arch.shared->mas7_3; in kvmppc_core_emulate_mfspr_e500()
328 *spr_val = vcpu->arch.shared->mas4; in kvmppc_core_emulate_mfspr_e500()
331 *spr_val = vcpu->arch.shared->mas6; in kvmppc_core_emulate_mfspr_e500()
334 *spr_val = vcpu->arch.shared->mas7_3 >> 32; in kvmppc_core_emulate_mfspr_e500()
338 *spr_val = vcpu->arch.decar; in kvmppc_core_emulate_mfspr_e500()
341 *spr_val = vcpu->arch.tlbcfg[0]; in kvmppc_core_emulate_mfspr_e500()
344 *spr_val = vcpu->arch.tlbcfg[1]; in kvmppc_core_emulate_mfspr_e500()
347 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
349 *spr_val = vcpu->arch.tlbps[0]; in kvmppc_core_emulate_mfspr_e500()
352 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
354 *spr_val = vcpu->arch.tlbps[1]; in kvmppc_core_emulate_mfspr_e500()
377 *spr_val = vcpu->arch.mmucfg; in kvmppc_core_emulate_mfspr_e500()
380 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
386 *spr_val = vcpu->arch.eptcfg; in kvmppc_core_emulate_mfspr_e500()
390 *spr_val = vcpu->arch.pwrmgtcr0; in kvmppc_core_emulate_mfspr_e500()
396 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL]; in kvmppc_core_emulate_mfspr_e500()
399 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA]; in kvmppc_core_emulate_mfspr_e500()
402 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND]; in kvmppc_core_emulate_mfspr_e500()
407 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_UNAVAIL]; in kvmppc_core_emulate_mfspr_e500()
410 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_ASSIST]; in kvmppc_core_emulate_mfspr_e500()
414 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR]; in kvmppc_core_emulate_mfspr_e500()
418 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL]; in kvmppc_core_emulate_mfspr_e500()
421 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL_CRIT]; in kvmppc_core_emulate_mfspr_e500()
425 emulated = kvmppc_booke_emulate_mfspr(vcpu, sprn, spr_val); in kvmppc_core_emulate_mfspr_e500()