Lines Matching defs:vcpu

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