Lines Matching refs:vcpu

37 void kvmppc_emulate_dec(struct kvm_vcpu *vcpu)  in kvmppc_emulate_dec()  argument
42 pr_debug("mtDEC: %x\n", vcpu->arch.dec); in kvmppc_emulate_dec()
43 hrtimer_try_to_cancel(&vcpu->arch.dec_timer); in kvmppc_emulate_dec()
47 kvmppc_core_dequeue_dec(vcpu); in kvmppc_emulate_dec()
50 if (vcpu->arch.dec & 0x80000000) { in kvmppc_emulate_dec()
51 kvmppc_core_queue_dec(vcpu); in kvmppc_emulate_dec()
58 if (vcpu->arch.dec == 0) in kvmppc_emulate_dec()
68 dec_time = vcpu->arch.dec; in kvmppc_emulate_dec()
76 hrtimer_start(&vcpu->arch.dec_timer, in kvmppc_emulate_dec()
78 vcpu->arch.dec_jiffies = get_tb(); in kvmppc_emulate_dec()
81 u32 kvmppc_get_dec(struct kvm_vcpu *vcpu, u64 tb) in kvmppc_get_dec() argument
83 u64 jd = tb - vcpu->arch.dec_jiffies; in kvmppc_get_dec()
86 if (vcpu->arch.dec < jd) in kvmppc_get_dec()
90 return vcpu->arch.dec - jd; in kvmppc_get_dec()
93 static int kvmppc_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs) in kvmppc_emulate_mtspr() argument
96 ulong spr_val = kvmppc_get_gpr(vcpu, rs); in kvmppc_emulate_mtspr()
100 kvmppc_set_srr0(vcpu, spr_val); in kvmppc_emulate_mtspr()
103 kvmppc_set_srr1(vcpu, spr_val); in kvmppc_emulate_mtspr()
112 vcpu->arch.dec = spr_val; in kvmppc_emulate_mtspr()
113 kvmppc_emulate_dec(vcpu); in kvmppc_emulate_mtspr()
117 kvmppc_set_sprg0(vcpu, spr_val); in kvmppc_emulate_mtspr()
120 kvmppc_set_sprg1(vcpu, spr_val); in kvmppc_emulate_mtspr()
123 kvmppc_set_sprg2(vcpu, spr_val); in kvmppc_emulate_mtspr()
126 kvmppc_set_sprg3(vcpu, spr_val); in kvmppc_emulate_mtspr()
133 emulated = vcpu->kvm->arch.kvm_ops->emulate_mtspr(vcpu, sprn, in kvmppc_emulate_mtspr()
141 kvmppc_set_exit_type(vcpu, EMULATED_MTSPR_EXITS); in kvmppc_emulate_mtspr()
146 static int kvmppc_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt) in kvmppc_emulate_mfspr() argument
153 spr_val = kvmppc_get_srr0(vcpu); in kvmppc_emulate_mfspr()
156 spr_val = kvmppc_get_srr1(vcpu); in kvmppc_emulate_mfspr()
159 spr_val = vcpu->arch.pvr; in kvmppc_emulate_mfspr()
162 spr_val = vcpu->vcpu_id; in kvmppc_emulate_mfspr()
176 spr_val = kvmppc_get_sprg0(vcpu); in kvmppc_emulate_mfspr()
179 spr_val = kvmppc_get_sprg1(vcpu); in kvmppc_emulate_mfspr()
182 spr_val = kvmppc_get_sprg2(vcpu); in kvmppc_emulate_mfspr()
185 spr_val = kvmppc_get_sprg3(vcpu); in kvmppc_emulate_mfspr()
191 spr_val = kvmppc_get_dec(vcpu, get_tb()); in kvmppc_emulate_mfspr()
194 emulated = vcpu->kvm->arch.kvm_ops->emulate_mfspr(vcpu, sprn, in kvmppc_emulate_mfspr()
204 kvmppc_set_gpr(vcpu, rt, spr_val); in kvmppc_emulate_mfspr()
205 kvmppc_set_exit_type(vcpu, EMULATED_MFSPR_EXITS); in kvmppc_emulate_mfspr()
212 int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu) in kvmppc_emulate_instruction() argument
220 kvmppc_set_exit_type(vcpu, EMULATED_INST_EXITS); in kvmppc_emulate_instruction()
222 emulated = kvmppc_get_last_inst(vcpu, INST_GENERIC, &inst); in kvmppc_emulate_instruction()
236 kvmppc_core_queue_program(vcpu, SRR1_PROGTRAP); in kvmppc_emulate_instruction()
238 kvmppc_core_queue_program(vcpu, in kvmppc_emulate_instruction()
239 vcpu->arch.shared->esr | ESR_PTR); in kvmppc_emulate_instruction()
252 kvmppc_core_queue_program(vcpu, SRR1_PROGTRAP); in kvmppc_emulate_instruction()
254 kvmppc_core_queue_program(vcpu, in kvmppc_emulate_instruction()
255 vcpu->arch.shared->esr | ESR_PTR); in kvmppc_emulate_instruction()
261 emulated = kvmppc_emulate_mfspr(vcpu, sprn, rt); in kvmppc_emulate_instruction()
265 emulated = kvmppc_emulate_mtspr(vcpu, sprn, rs); in kvmppc_emulate_instruction()
284 run->debug.arch.address = kvmppc_get_pc(vcpu); in kvmppc_emulate_instruction()
297 emulated = vcpu->kvm->arch.kvm_ops->emulate_op(run, vcpu, inst, in kvmppc_emulate_instruction()
305 kvmppc_core_queue_program(vcpu, 0); in kvmppc_emulate_instruction()
309 trace_kvm_ppc_instr(inst, kvmppc_get_pc(vcpu), emulated); in kvmppc_emulate_instruction()
313 kvmppc_set_pc(vcpu, kvmppc_get_pc(vcpu) + 4); in kvmppc_emulate_instruction()