Lines Matching refs:vcpu
26 void kvmppc_emulate_dec(struct kvm_vcpu *vcpu) in kvmppc_emulate_dec() argument
31 pr_debug("mtDEC: %lx\n", vcpu->arch.dec); in kvmppc_emulate_dec()
32 hrtimer_try_to_cancel(&vcpu->arch.dec_timer); in kvmppc_emulate_dec()
36 kvmppc_core_dequeue_dec(vcpu); in kvmppc_emulate_dec()
41 if (vcpu->arch.dec == 0) in kvmppc_emulate_dec()
51 dec_time = vcpu->arch.dec; in kvmppc_emulate_dec()
58 hrtimer_start(&vcpu->arch.dec_timer, in kvmppc_emulate_dec()
60 vcpu->arch.dec_jiffies = get_tb(); in kvmppc_emulate_dec()
63 u32 kvmppc_get_dec(struct kvm_vcpu *vcpu, u64 tb) in kvmppc_get_dec() argument
65 u64 jd = tb - vcpu->arch.dec_jiffies; in kvmppc_get_dec()
68 if (vcpu->arch.dec < jd) in kvmppc_get_dec()
72 return vcpu->arch.dec - jd; in kvmppc_get_dec()
75 static int kvmppc_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs) in kvmppc_emulate_mtspr() argument
78 ulong spr_val = kvmppc_get_gpr(vcpu, rs); in kvmppc_emulate_mtspr()
82 kvmppc_set_srr0(vcpu, spr_val); in kvmppc_emulate_mtspr()
85 kvmppc_set_srr1(vcpu, spr_val); in kvmppc_emulate_mtspr()
94 vcpu->arch.dec = (u32) spr_val; in kvmppc_emulate_mtspr()
95 kvmppc_emulate_dec(vcpu); in kvmppc_emulate_mtspr()
99 kvmppc_set_sprg0(vcpu, spr_val); in kvmppc_emulate_mtspr()
102 kvmppc_set_sprg1(vcpu, spr_val); in kvmppc_emulate_mtspr()
105 kvmppc_set_sprg2(vcpu, spr_val); in kvmppc_emulate_mtspr()
108 kvmppc_set_sprg3(vcpu, spr_val); in kvmppc_emulate_mtspr()
115 emulated = vcpu->kvm->arch.kvm_ops->emulate_mtspr(vcpu, sprn, in kvmppc_emulate_mtspr()
123 kvmppc_set_exit_type(vcpu, EMULATED_MTSPR_EXITS); in kvmppc_emulate_mtspr()
128 static int kvmppc_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt) in kvmppc_emulate_mfspr() argument
135 spr_val = kvmppc_get_srr0(vcpu); in kvmppc_emulate_mfspr()
138 spr_val = kvmppc_get_srr1(vcpu); in kvmppc_emulate_mfspr()
141 spr_val = vcpu->arch.pvr; in kvmppc_emulate_mfspr()
144 spr_val = vcpu->vcpu_id; in kvmppc_emulate_mfspr()
158 spr_val = kvmppc_get_sprg0(vcpu); in kvmppc_emulate_mfspr()
161 spr_val = kvmppc_get_sprg1(vcpu); in kvmppc_emulate_mfspr()
164 spr_val = kvmppc_get_sprg2(vcpu); in kvmppc_emulate_mfspr()
167 spr_val = kvmppc_get_sprg3(vcpu); in kvmppc_emulate_mfspr()
173 spr_val = kvmppc_get_dec(vcpu, get_tb()); in kvmppc_emulate_mfspr()
176 emulated = vcpu->kvm->arch.kvm_ops->emulate_mfspr(vcpu, sprn, in kvmppc_emulate_mfspr()
186 kvmppc_set_gpr(vcpu, rt, spr_val); in kvmppc_emulate_mfspr()
187 kvmppc_set_exit_type(vcpu, EMULATED_MFSPR_EXITS); in kvmppc_emulate_mfspr()
194 int kvmppc_emulate_instruction(struct kvm_vcpu *vcpu) in kvmppc_emulate_instruction() argument
202 kvmppc_set_exit_type(vcpu, EMULATED_INST_EXITS); in kvmppc_emulate_instruction()
204 emulated = kvmppc_get_last_inst(vcpu, INST_GENERIC, &inst); in kvmppc_emulate_instruction()
218 kvmppc_core_queue_program(vcpu, SRR1_PROGTRAP); in kvmppc_emulate_instruction()
220 kvmppc_core_queue_program(vcpu, in kvmppc_emulate_instruction()
221 vcpu->arch.shared->esr | ESR_PTR); in kvmppc_emulate_instruction()
234 kvmppc_core_queue_program(vcpu, SRR1_PROGTRAP); in kvmppc_emulate_instruction()
236 kvmppc_core_queue_program(vcpu, in kvmppc_emulate_instruction()
237 vcpu->arch.shared->esr | ESR_PTR); in kvmppc_emulate_instruction()
243 emulated = kvmppc_emulate_mfspr(vcpu, sprn, rt); in kvmppc_emulate_instruction()
251 emulated = kvmppc_emulate_mtspr(vcpu, sprn, rs); in kvmppc_emulate_instruction()
273 vcpu->run->exit_reason = KVM_EXIT_DEBUG; in kvmppc_emulate_instruction()
274 vcpu->run->debug.arch.status = 0; in kvmppc_emulate_instruction()
275 vcpu->run->debug.arch.address = kvmppc_get_pc(vcpu); in kvmppc_emulate_instruction()
288 emulated = vcpu->kvm->arch.kvm_ops->emulate_op(vcpu, inst, in kvmppc_emulate_instruction()
299 trace_kvm_ppc_instr(inst, kvmppc_get_pc(vcpu), emulated); in kvmppc_emulate_instruction()
303 kvmppc_set_pc(vcpu, kvmppc_get_pc(vcpu) + 4); in kvmppc_emulate_instruction()