• Home
  • Raw
  • Download

Lines Matching full:vcpu

51 static int kvmppc_e500_emul_msgclr(struct kvm_vcpu *vcpu, int rb)  in kvmppc_e500_emul_msgclr()  argument
53 ulong param = vcpu->arch.regs.gpr[rb]; in kvmppc_e500_emul_msgclr()
59 clear_bit(prio, &vcpu->arch.pending_exceptions); in kvmppc_e500_emul_msgclr()
63 static int kvmppc_e500_emul_msgsnd(struct kvm_vcpu *vcpu, int rb) in kvmppc_e500_emul_msgsnd() argument
65 ulong param = vcpu->arch.regs.gpr[rb]; in kvmppc_e500_emul_msgsnd()
74 kvm_for_each_vcpu(i, cvcpu, vcpu->kvm) { in kvmppc_e500_emul_msgsnd()
86 static int kvmppc_e500_emul_ehpriv(struct kvm_vcpu *vcpu, in kvmppc_e500_emul_ehpriv() argument
93 vcpu->run->exit_reason = KVM_EXIT_DEBUG; in kvmppc_e500_emul_ehpriv()
94 vcpu->run->debug.arch.address = vcpu->arch.regs.nip; in kvmppc_e500_emul_ehpriv()
95 vcpu->run->debug.arch.status = 0; in kvmppc_e500_emul_ehpriv()
96 kvmppc_account_exit(vcpu, DEBUG_EXITS); in kvmppc_e500_emul_ehpriv()
106 static int kvmppc_e500_emul_dcbtls(struct kvm_vcpu *vcpu) in kvmppc_e500_emul_dcbtls() argument
108 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_e500_emul_dcbtls()
115 static int kvmppc_e500_emul_mftmr(struct kvm_vcpu *vcpu, unsigned int inst, in kvmppc_e500_emul_mftmr() argument
118 /* Expose one thread per vcpu */ in kvmppc_e500_emul_mftmr()
120 kvmppc_set_gpr(vcpu, rt, in kvmppc_e500_emul_mftmr()
128 int kvmppc_core_emulate_op_e500(struct kvm_vcpu *vcpu, in kvmppc_core_emulate_op_e500() argument
142 emulated = kvmppc_e500_emul_dcbtls(vcpu); in kvmppc_core_emulate_op_e500()
147 emulated = kvmppc_e500_emul_msgsnd(vcpu, rb); in kvmppc_core_emulate_op_e500()
151 emulated = kvmppc_e500_emul_msgclr(vcpu, rb); in kvmppc_core_emulate_op_e500()
156 emulated = kvmppc_e500_emul_tlbre(vcpu); in kvmppc_core_emulate_op_e500()
160 emulated = kvmppc_e500_emul_tlbwe(vcpu); 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_tlbsx(vcpu, ea); in kvmppc_core_emulate_op_e500()
170 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
171 emulated = kvmppc_e500_emul_tlbilx(vcpu, type, ea); in kvmppc_core_emulate_op_e500()
176 ea = kvmppc_get_ea_indexed(vcpu, ra, rb); in kvmppc_core_emulate_op_e500()
177 emulated = kvmppc_e500_emul_tlbivax(vcpu, ea); in kvmppc_core_emulate_op_e500()
181 emulated = kvmppc_e500_emul_mftmr(vcpu, inst, rt); in kvmppc_core_emulate_op_e500()
185 emulated = kvmppc_e500_emul_ehpriv(vcpu, inst, advance); in kvmppc_core_emulate_op_e500()
199 emulated = kvmppc_booke_emulate_op(vcpu, inst, advance); in kvmppc_core_emulate_op_e500()
204 int kvmppc_core_emulate_mtspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong spr_val) in kvmppc_core_emulate_mtspr_e500() argument
206 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_core_emulate_mtspr_e500()
212 kvmppc_set_pid(vcpu, spr_val); in kvmppc_core_emulate_mtspr_e500()
225 vcpu->arch.shared->mas0 = spr_val; in kvmppc_core_emulate_mtspr_e500()
228 vcpu->arch.shared->mas1 = spr_val; in kvmppc_core_emulate_mtspr_e500()
231 vcpu->arch.shared->mas2 = spr_val; in kvmppc_core_emulate_mtspr_e500()
234 vcpu->arch.shared->mas7_3 &= ~(u64)0xffffffff; in kvmppc_core_emulate_mtspr_e500()
235 vcpu->arch.shared->mas7_3 |= spr_val; in kvmppc_core_emulate_mtspr_e500()
238 vcpu->arch.shared->mas4 = spr_val; in kvmppc_core_emulate_mtspr_e500()
241 vcpu->arch.shared->mas6 = spr_val; in kvmppc_core_emulate_mtspr_e500()
244 vcpu->arch.shared->mas7_3 &= (u64)0xffffffff; in kvmppc_core_emulate_mtspr_e500()
245 vcpu->arch.shared->mas7_3 |= (u64)spr_val << 32; in kvmppc_core_emulate_mtspr_e500()
273 vcpu->arch.pwrmgtcr0 = spr_val; in kvmppc_core_emulate_mtspr_e500()
286 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
289 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA] = spr_val; in kvmppc_core_emulate_mtspr_e500()
292 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND] = spr_val; in kvmppc_core_emulate_mtspr_e500()
297 vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_UNAVAIL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
300 vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_ASSIST] = spr_val; in kvmppc_core_emulate_mtspr_e500()
304 vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR] = spr_val; in kvmppc_core_emulate_mtspr_e500()
308 vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL] = spr_val; in kvmppc_core_emulate_mtspr_e500()
311 vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL_CRIT] = spr_val; in kvmppc_core_emulate_mtspr_e500()
315 emulated = kvmppc_booke_emulate_mtspr(vcpu, sprn, spr_val); in kvmppc_core_emulate_mtspr_e500()
321 int kvmppc_core_emulate_mfspr_e500(struct kvm_vcpu *vcpu, int sprn, ulong *spr_val) in kvmppc_core_emulate_mfspr_e500() argument
323 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); in kvmppc_core_emulate_mfspr_e500()
338 *spr_val = vcpu->arch.shared->mas0; in kvmppc_core_emulate_mfspr_e500()
341 *spr_val = vcpu->arch.shared->mas1; in kvmppc_core_emulate_mfspr_e500()
344 *spr_val = vcpu->arch.shared->mas2; in kvmppc_core_emulate_mfspr_e500()
347 *spr_val = (u32)vcpu->arch.shared->mas7_3; in kvmppc_core_emulate_mfspr_e500()
350 *spr_val = vcpu->arch.shared->mas4; in kvmppc_core_emulate_mfspr_e500()
353 *spr_val = vcpu->arch.shared->mas6; in kvmppc_core_emulate_mfspr_e500()
356 *spr_val = vcpu->arch.shared->mas7_3 >> 32; in kvmppc_core_emulate_mfspr_e500()
360 *spr_val = vcpu->arch.decar; in kvmppc_core_emulate_mfspr_e500()
363 *spr_val = vcpu->arch.tlbcfg[0]; in kvmppc_core_emulate_mfspr_e500()
366 *spr_val = vcpu->arch.tlbcfg[1]; in kvmppc_core_emulate_mfspr_e500()
369 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
371 *spr_val = vcpu->arch.tlbps[0]; in kvmppc_core_emulate_mfspr_e500()
374 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
376 *spr_val = vcpu->arch.tlbps[1]; in kvmppc_core_emulate_mfspr_e500()
399 *spr_val = vcpu->arch.mmucfg; in kvmppc_core_emulate_mfspr_e500()
402 if (!has_feature(vcpu, VCPU_FTR_MMU_V2)) in kvmppc_core_emulate_mfspr_e500()
408 *spr_val = vcpu->arch.eptcfg; in kvmppc_core_emulate_mfspr_e500()
412 *spr_val = vcpu->arch.pwrmgtcr0; in kvmppc_core_emulate_mfspr_e500()
418 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL]; in kvmppc_core_emulate_mfspr_e500()
421 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA]; in kvmppc_core_emulate_mfspr_e500()
424 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND]; in kvmppc_core_emulate_mfspr_e500()
429 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_UNAVAIL]; in kvmppc_core_emulate_mfspr_e500()
432 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_ALTIVEC_ASSIST]; in kvmppc_core_emulate_mfspr_e500()
436 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR]; in kvmppc_core_emulate_mfspr_e500()
440 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL]; in kvmppc_core_emulate_mfspr_e500()
443 *spr_val = vcpu->arch.ivor[BOOKE_IRQPRIO_DBELL_CRIT]; in kvmppc_core_emulate_mfspr_e500()
447 emulated = kvmppc_booke_emulate_mfspr(vcpu, sprn, spr_val); in kvmppc_core_emulate_mfspr_e500()