Lines Matching refs:vcpu
54 static int kvmppc_e500_emul_msgclr(struct kvm_vcpu *vcpu, int rb) in kvmppc_e500_emul_msgclr() argument
56 ulong param = vcpu->arch.gpr[rb]; in kvmppc_e500_emul_msgclr()
62 clear_bit(prio, &vcpu->arch.pending_exceptions); in kvmppc_e500_emul_msgclr()
66 static int kvmppc_e500_emul_msgsnd(struct kvm_vcpu *vcpu, int rb) in kvmppc_e500_emul_msgsnd() argument
68 ulong param = vcpu->arch.gpr[rb]; in kvmppc_e500_emul_msgsnd()
77 kvm_for_each_vcpu(i, cvcpu, vcpu->kvm) { in kvmppc_e500_emul_msgsnd()
89 static int kvmppc_e500_emul_ehpriv(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_e500_emul_ehpriv() argument
97 run->debug.arch.address = vcpu->arch.pc; in kvmppc_e500_emul_ehpriv()
99 kvmppc_account_exit(vcpu, DEBUG_EXITS); in kvmppc_e500_emul_ehpriv()
109 static int kvmppc_e500_emul_dcbtls(struct kvm_vcpu *vcpu) in kvmppc_e500_emul_dcbtls() argument
111 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_e500_emul_dcbtls()
118 static int kvmppc_e500_emul_mftmr(struct kvm_vcpu *vcpu, unsigned int inst, in kvmppc_e500_emul_mftmr() argument
123 kvmppc_set_gpr(vcpu, rt, in kvmppc_e500_emul_mftmr()
131 int kvmppc_core_emulate_op_e500(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_core_emulate_op_e500() argument
145 emulated = kvmppc_e500_emul_dcbtls(vcpu); in kvmppc_core_emulate_op_e500()
150 emulated = kvmppc_e500_emul_msgsnd(vcpu, rb); in kvmppc_core_emulate_op_e500()
154 emulated = kvmppc_e500_emul_msgclr(vcpu, rb); in kvmppc_core_emulate_op_e500()
159 emulated = kvmppc_e500_emul_tlbre(vcpu); in kvmppc_core_emulate_op_e500()
163 emulated = kvmppc_e500_emul_tlbwe(vcpu); in kvmppc_core_emulate_op_e500()
167 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
168 emulated = kvmppc_e500_emul_tlbsx(vcpu, ea); in kvmppc_core_emulate_op_e500()
173 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
174 emulated = kvmppc_e500_emul_tlbilx(vcpu, type, ea); in kvmppc_core_emulate_op_e500()
179 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
180 emulated = kvmppc_e500_emul_tlbivax(vcpu, ea); in kvmppc_core_emulate_op_e500()
184 emulated = kvmppc_e500_emul_mftmr(vcpu, inst, rt); in kvmppc_core_emulate_op_e500()
188 emulated = kvmppc_e500_emul_ehpriv(run, vcpu, inst, in kvmppc_core_emulate_op_e500()
203 emulated = kvmppc_booke_emulate_op(run, vcpu, inst, advance); in kvmppc_core_emulate_op_e500()
208 int kvmppc_core_emulate_mtspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong spr_val) in kvmppc_core_emulate_mtspr_e500() argument
210 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_core_emulate_mtspr_e500()
216 kvmppc_set_pid(vcpu, spr_val); in kvmppc_core_emulate_mtspr_e500()
229 vcpu->arch.shared->mas0 = spr_val; in kvmppc_core_emulate_mtspr_e500()
232 vcpu->arch.shared->mas1 = spr_val; in kvmppc_core_emulate_mtspr_e500()
235 vcpu->arch.shared->mas2 = spr_val; in kvmppc_core_emulate_mtspr_e500()
238 vcpu->arch.shared->mas7_3 &= ~(u64)0xffffffff; in kvmppc_core_emulate_mtspr_e500()
239 vcpu->arch.shared->mas7_3 |= spr_val; in kvmppc_core_emulate_mtspr_e500()
242 vcpu->arch.shared->mas4 = spr_val; in kvmppc_core_emulate_mtspr_e500()
245 vcpu->arch.shared->mas6 = spr_val; in kvmppc_core_emulate_mtspr_e500()
248 vcpu->arch.shared->mas7_3 &= (u64)0xffffffff; in kvmppc_core_emulate_mtspr_e500()
249 vcpu->arch.shared->mas7_3 |= (u64)spr_val << 32; in kvmppc_core_emulate_mtspr_e500()
277 vcpu->arch.pwrmgtcr0 = spr_val; in kvmppc_core_emulate_mtspr_e500()
283 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
286 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA] = spr_val; in kvmppc_core_emulate_mtspr_e500()
289 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND] = spr_val; in kvmppc_core_emulate_mtspr_e500()
294 vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_UNAVAIL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
297 vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_ASSIST] = spr_val; in kvmppc_core_emulate_mtspr_e500()
301 vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR] = spr_val; in kvmppc_core_emulate_mtspr_e500()
305 vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
308 vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL_CRIT] = spr_val; in kvmppc_core_emulate_mtspr_e500()
312 emulated = kvmppc_booke_emulate_mtspr(vcpu, sprn, spr_val); in kvmppc_core_emulate_mtspr_e500()
318 int kvmppc_core_emulate_mfspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong *spr_val) in kvmppc_core_emulate_mfspr_e500() argument
320 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_core_emulate_mfspr_e500()
335 *spr_val = vcpu->arch.shared->mas0; in kvmppc_core_emulate_mfspr_e500()
338 *spr_val = vcpu->arch.shared->mas1; in kvmppc_core_emulate_mfspr_e500()
341 *spr_val = vcpu->arch.shared->mas2; in kvmppc_core_emulate_mfspr_e500()
344 *spr_val = (u32)vcpu->arch.shared->mas7_3; in kvmppc_core_emulate_mfspr_e500()
347 *spr_val = vcpu->arch.shared->mas4; in kvmppc_core_emulate_mfspr_e500()
350 *spr_val = vcpu->arch.shared->mas6; in kvmppc_core_emulate_mfspr_e500()
353 *spr_val = vcpu->arch.shared->mas7_3 >> 32; in kvmppc_core_emulate_mfspr_e500()
357 *spr_val = vcpu->arch.decar; in kvmppc_core_emulate_mfspr_e500()
360 *spr_val = vcpu->arch.tlbcfg[0]; in kvmppc_core_emulate_mfspr_e500()
363 *spr_val = vcpu->arch.tlbcfg[1]; in kvmppc_core_emulate_mfspr_e500()
366 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
368 *spr_val = vcpu->arch.tlbps[0]; in kvmppc_core_emulate_mfspr_e500()
371 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
373 *spr_val = vcpu->arch.tlbps[1]; in kvmppc_core_emulate_mfspr_e500()
396 *spr_val = vcpu->arch.mmucfg; in kvmppc_core_emulate_mfspr_e500()
399 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
405 *spr_val = vcpu->arch.eptcfg; in kvmppc_core_emulate_mfspr_e500()
409 *spr_val = vcpu->arch.pwrmgtcr0; in kvmppc_core_emulate_mfspr_e500()
415 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL]; in kvmppc_core_emulate_mfspr_e500()
418 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA]; in kvmppc_core_emulate_mfspr_e500()
421 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND]; in kvmppc_core_emulate_mfspr_e500()
426 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_UNAVAIL]; in kvmppc_core_emulate_mfspr_e500()
429 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_ASSIST]; in kvmppc_core_emulate_mfspr_e500()
433 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR]; in kvmppc_core_emulate_mfspr_e500()
437 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL]; in kvmppc_core_emulate_mfspr_e500()
440 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL_CRIT]; in kvmppc_core_emulate_mfspr_e500()
444 emulated = kvmppc_booke_emulate_mfspr(vcpu, sprn, spr_val); in kvmppc_core_emulate_mfspr_e500()