Lines Matching full:vcpu
85 static bool spr_allowed(struct kvm_vcpu *vcpu, enum priv_level level) in spr_allowed() argument
88 if (vcpu->arch.papr_enabled && (level > PRIV_SUPER)) in spr_allowed()
92 if ((kvmppc_get_msr(vcpu) & MSR_PR) && level > PRIV_PROBLEM) in spr_allowed()
99 static inline void kvmppc_copyto_vcpu_tm(struct kvm_vcpu *vcpu) in kvmppc_copyto_vcpu_tm() argument
101 memcpy(&vcpu->arch.gpr_tm[0], &vcpu->arch.regs.gpr[0], in kvmppc_copyto_vcpu_tm()
102 sizeof(vcpu->arch.gpr_tm)); in kvmppc_copyto_vcpu_tm()
103 memcpy(&vcpu->arch.fp_tm, &vcpu->arch.fp, in kvmppc_copyto_vcpu_tm()
105 memcpy(&vcpu->arch.vr_tm, &vcpu->arch.vr, in kvmppc_copyto_vcpu_tm()
107 vcpu->arch.ppr_tm = vcpu->arch.ppr; in kvmppc_copyto_vcpu_tm()
108 vcpu->arch.dscr_tm = vcpu->arch.dscr; in kvmppc_copyto_vcpu_tm()
109 vcpu->arch.amr_tm = vcpu->arch.amr; in kvmppc_copyto_vcpu_tm()
110 vcpu->arch.ctr_tm = vcpu->arch.regs.ctr; in kvmppc_copyto_vcpu_tm()
111 vcpu->arch.tar_tm = vcpu->arch.tar; in kvmppc_copyto_vcpu_tm()
112 vcpu->arch.lr_tm = vcpu->arch.regs.link; in kvmppc_copyto_vcpu_tm()
113 vcpu->arch.cr_tm = vcpu->arch.regs.ccr; in kvmppc_copyto_vcpu_tm()
114 vcpu->arch.xer_tm = vcpu->arch.regs.xer; in kvmppc_copyto_vcpu_tm()
115 vcpu->arch.vrsave_tm = vcpu->arch.vrsave; in kvmppc_copyto_vcpu_tm()
118 static inline void kvmppc_copyfrom_vcpu_tm(struct kvm_vcpu *vcpu) in kvmppc_copyfrom_vcpu_tm() argument
120 memcpy(&vcpu->arch.regs.gpr[0], &vcpu->arch.gpr_tm[0], in kvmppc_copyfrom_vcpu_tm()
121 sizeof(vcpu->arch.regs.gpr)); in kvmppc_copyfrom_vcpu_tm()
122 memcpy(&vcpu->arch.fp, &vcpu->arch.fp_tm, in kvmppc_copyfrom_vcpu_tm()
124 memcpy(&vcpu->arch.vr, &vcpu->arch.vr_tm, in kvmppc_copyfrom_vcpu_tm()
126 vcpu->arch.ppr = vcpu->arch.ppr_tm; in kvmppc_copyfrom_vcpu_tm()
127 vcpu->arch.dscr = vcpu->arch.dscr_tm; in kvmppc_copyfrom_vcpu_tm()
128 vcpu->arch.amr = vcpu->arch.amr_tm; in kvmppc_copyfrom_vcpu_tm()
129 vcpu->arch.regs.ctr = vcpu->arch.ctr_tm; in kvmppc_copyfrom_vcpu_tm()
130 vcpu->arch.tar = vcpu->arch.tar_tm; in kvmppc_copyfrom_vcpu_tm()
131 vcpu->arch.regs.link = vcpu->arch.lr_tm; in kvmppc_copyfrom_vcpu_tm()
132 vcpu->arch.regs.ccr = vcpu->arch.cr_tm; in kvmppc_copyfrom_vcpu_tm()
133 vcpu->arch.regs.xer = vcpu->arch.xer_tm; in kvmppc_copyfrom_vcpu_tm()
134 vcpu->arch.vrsave = vcpu->arch.vrsave_tm; in kvmppc_copyfrom_vcpu_tm()
137 static void kvmppc_emulate_treclaim(struct kvm_vcpu *vcpu, int ra_val) in kvmppc_emulate_treclaim() argument
139 unsigned long guest_msr = kvmppc_get_msr(vcpu); in kvmppc_emulate_treclaim()
144 vcpu->arch.regs.ccr = (vcpu->arch.regs.ccr & ~(CR0_MASK << CR0_SHIFT)) | in kvmppc_emulate_treclaim()
151 kvmppc_save_tm_pr(vcpu); in kvmppc_emulate_treclaim()
152 kvmppc_copyfrom_vcpu_tm(vcpu); in kvmppc_emulate_treclaim()
160 if (kvmppc_get_msr(vcpu) & MSR_PR) in kvmppc_emulate_treclaim()
163 if (kvmppc_get_msr(vcpu) & MSR_HV) in kvmppc_emulate_treclaim()
166 vcpu->arch.texasr = texasr; in kvmppc_emulate_treclaim()
167 vcpu->arch.tfiar = kvmppc_get_pc(vcpu); in kvmppc_emulate_treclaim()
169 mtspr(SPRN_TFIAR, vcpu->arch.tfiar); in kvmppc_emulate_treclaim()
176 kvmppc_set_msr(vcpu, guest_msr); in kvmppc_emulate_treclaim()
179 if (vcpu->arch.shadow_fscr & FSCR_TAR) in kvmppc_emulate_treclaim()
180 mtspr(SPRN_TAR, vcpu->arch.tar); in kvmppc_emulate_treclaim()
183 static void kvmppc_emulate_trchkpt(struct kvm_vcpu *vcpu) in kvmppc_emulate_trchkpt() argument
185 unsigned long guest_msr = kvmppc_get_msr(vcpu); in kvmppc_emulate_trchkpt()
189 * need flush FP/VEC/VSX to vcpu save area before in kvmppc_emulate_trchkpt()
192 kvmppc_giveup_ext(vcpu, MSR_VSX); in kvmppc_emulate_trchkpt()
193 kvmppc_giveup_fac(vcpu, FSCR_TAR_LG); in kvmppc_emulate_trchkpt()
194 kvmppc_copyto_vcpu_tm(vcpu); in kvmppc_emulate_trchkpt()
195 kvmppc_save_tm_sprs(vcpu); in kvmppc_emulate_trchkpt()
202 kvmppc_set_msr(vcpu, guest_msr); in kvmppc_emulate_trchkpt()
203 kvmppc_restore_tm_pr(vcpu); in kvmppc_emulate_trchkpt()
208 void kvmppc_emulate_tabort(struct kvm_vcpu *vcpu, int ra_val) in kvmppc_emulate_tabort() argument
214 unsigned long guest_msr = kvmppc_get_msr(vcpu); in kvmppc_emulate_tabort()
223 vcpu->arch.regs.ccr = (vcpu->arch.regs.ccr & ~(CR0_MASK << CR0_SHIFT)) | in kvmppc_emulate_tabort()
227 vcpu->arch.texasr = mfspr(SPRN_TEXASR); in kvmppc_emulate_tabort()
234 vcpu->arch.texasr &= ~(TEXASR_PR | TEXASR_HV); in kvmppc_emulate_tabort()
236 vcpu->arch.texasr |= TEXASR_PR; in kvmppc_emulate_tabort()
239 vcpu->arch.texasr |= TEXASR_HV; in kvmppc_emulate_tabort()
241 vcpu->arch.tfiar = kvmppc_get_pc(vcpu); in kvmppc_emulate_tabort()
249 int kvmppc_core_emulate_op_pr(struct kvm_run *run, struct kvm_vcpu *vcpu, in kvmppc_core_emulate_op_pr() argument
262 if ((kvmppc_get_msr(vcpu) & MSR_LE) && in kvmppc_core_emulate_op_pr()
271 kvmppc_set_gpr(vcpu, 3, EV_UNIMPLEMENTED); in kvmppc_core_emulate_op_pr()
272 kvmppc_set_pc(vcpu, kvmppc_get_pc(vcpu) + 4); in kvmppc_core_emulate_op_pr()
280 unsigned long srr1 = kvmppc_get_srr1(vcpu); in kvmppc_core_emulate_op_pr()
282 unsigned long cur_msr = kvmppc_get_msr(vcpu); in kvmppc_core_emulate_op_pr()
296 kvmppc_set_pc(vcpu, kvmppc_get_srr0(vcpu)); in kvmppc_core_emulate_op_pr()
297 kvmppc_set_msr(vcpu, srr1); in kvmppc_core_emulate_op_pr()
310 kvmppc_set_gpr(vcpu, rt, kvmppc_get_msr(vcpu)); in kvmppc_core_emulate_op_pr()
314 ulong rs_val = kvmppc_get_gpr(vcpu, rs); in kvmppc_core_emulate_op_pr()
316 ulong new_msr = kvmppc_get_msr(vcpu); in kvmppc_core_emulate_op_pr()
319 kvmppc_set_msr_fast(vcpu, new_msr); in kvmppc_core_emulate_op_pr()
321 kvmppc_set_msr(vcpu, rs_val); in kvmppc_core_emulate_op_pr()
325 kvmppc_set_msr(vcpu, kvmppc_get_gpr(vcpu, rs)); in kvmppc_core_emulate_op_pr()
332 if (vcpu->arch.mmu.mfsrin) { in kvmppc_core_emulate_op_pr()
334 sr = vcpu->arch.mmu.mfsrin(vcpu, srnum); in kvmppc_core_emulate_op_pr()
335 kvmppc_set_gpr(vcpu, rt, sr); in kvmppc_core_emulate_op_pr()
343 srnum = (kvmppc_get_gpr(vcpu, rb) >> 28) & 0xf; in kvmppc_core_emulate_op_pr()
344 if (vcpu->arch.mmu.mfsrin) { in kvmppc_core_emulate_op_pr()
346 sr = vcpu->arch.mmu.mfsrin(vcpu, srnum); in kvmppc_core_emulate_op_pr()
347 kvmppc_set_gpr(vcpu, rt, sr); in kvmppc_core_emulate_op_pr()
352 vcpu->arch.mmu.mtsrin(vcpu, in kvmppc_core_emulate_op_pr()
354 kvmppc_get_gpr(vcpu, rs)); in kvmppc_core_emulate_op_pr()
357 vcpu->arch.mmu.mtsrin(vcpu, in kvmppc_core_emulate_op_pr()
358 (kvmppc_get_gpr(vcpu, rb) >> 28) & 0xf, in kvmppc_core_emulate_op_pr()
359 kvmppc_get_gpr(vcpu, rs)); in kvmppc_core_emulate_op_pr()
365 ulong addr = kvmppc_get_gpr(vcpu, rb); in kvmppc_core_emulate_op_pr()
366 vcpu->arch.mmu.tlbie(vcpu, addr, large); in kvmppc_core_emulate_op_pr()
373 ulong cmd = kvmppc_get_gpr(vcpu, 3); in kvmppc_core_emulate_op_pr()
376 if ((kvmppc_get_msr(vcpu) & MSR_PR) || in kvmppc_core_emulate_op_pr()
377 !vcpu->arch.papr_enabled) { in kvmppc_core_emulate_op_pr()
382 if (kvmppc_h_pr(vcpu, cmd) == EMULATE_DONE) in kvmppc_core_emulate_op_pr()
387 ulong gpr = kvmppc_get_gpr(vcpu, 4 + i); in kvmppc_core_emulate_op_pr()
392 vcpu->arch.hcall_needed = 1; in kvmppc_core_emulate_op_pr()
400 if (!vcpu->arch.mmu.slbmte) in kvmppc_core_emulate_op_pr()
403 vcpu->arch.mmu.slbmte(vcpu, in kvmppc_core_emulate_op_pr()
404 kvmppc_get_gpr(vcpu, rs), in kvmppc_core_emulate_op_pr()
405 kvmppc_get_gpr(vcpu, rb)); in kvmppc_core_emulate_op_pr()
408 if (!vcpu->arch.mmu.slbie) in kvmppc_core_emulate_op_pr()
411 vcpu->arch.mmu.slbie(vcpu, in kvmppc_core_emulate_op_pr()
412 kvmppc_get_gpr(vcpu, rb)); in kvmppc_core_emulate_op_pr()
415 if (!vcpu->arch.mmu.slbia) in kvmppc_core_emulate_op_pr()
418 vcpu->arch.mmu.slbia(vcpu); in kvmppc_core_emulate_op_pr()
421 if (!vcpu->arch.mmu.slbmfee) { in kvmppc_core_emulate_op_pr()
426 rb_val = kvmppc_get_gpr(vcpu, rb); in kvmppc_core_emulate_op_pr()
427 t = vcpu->arch.mmu.slbmfee(vcpu, rb_val); in kvmppc_core_emulate_op_pr()
428 kvmppc_set_gpr(vcpu, rt, t); in kvmppc_core_emulate_op_pr()
432 if (!vcpu->arch.mmu.slbmfev) { in kvmppc_core_emulate_op_pr()
437 rb_val = kvmppc_get_gpr(vcpu, rb); in kvmppc_core_emulate_op_pr()
438 t = vcpu->arch.mmu.slbmfev(vcpu, rb_val); in kvmppc_core_emulate_op_pr()
439 kvmppc_set_gpr(vcpu, rt, t); in kvmppc_core_emulate_op_pr()
447 ulong rb_val = kvmppc_get_gpr(vcpu, rb); in kvmppc_core_emulate_op_pr()
455 ra_val = kvmppc_get_gpr(vcpu, ra); in kvmppc_core_emulate_op_pr()
458 if (!(kvmppc_get_msr(vcpu) & MSR_SF)) in kvmppc_core_emulate_op_pr()
462 r = kvmppc_st(vcpu, &addr, 32, zeros, true); in kvmppc_core_emulate_op_pr()
465 kvmppc_set_dar(vcpu, vaddr); in kvmppc_core_emulate_op_pr()
466 vcpu->arch.fault_dar = vaddr; in kvmppc_core_emulate_op_pr()
474 kvmppc_set_dsisr(vcpu, dsisr); in kvmppc_core_emulate_op_pr()
475 vcpu->arch.fault_dsisr = dsisr; in kvmppc_core_emulate_op_pr()
477 kvmppc_book3s_queue_irqprio(vcpu, in kvmppc_core_emulate_op_pr()
489 if (!(kvmppc_get_msr(vcpu) & MSR_TM)) { in kvmppc_core_emulate_op_pr()
490 kvmppc_trigger_fac_interrupt(vcpu, FSCR_TM_LG); in kvmppc_core_emulate_op_pr()
495 if (!(kvmppc_get_msr(vcpu) & MSR_PR)) { in kvmppc_core_emulate_op_pr()
497 vcpu->arch.regs.ccr = (CR0_TBEGIN_FAILURE | in kvmppc_core_emulate_op_pr()
498 (vcpu->arch.regs.ccr & ~(CR0_MASK << CR0_SHIFT))); in kvmppc_core_emulate_op_pr()
500 vcpu->arch.texasr = (TEXASR_FS | TEXASR_EXACT | in kvmppc_core_emulate_op_pr()
505 vcpu->arch.texasr |= TEXASR_ROT; in kvmppc_core_emulate_op_pr()
507 if (kvmppc_get_msr(vcpu) & MSR_HV) in kvmppc_core_emulate_op_pr()
508 vcpu->arch.texasr |= TEXASR_HV; in kvmppc_core_emulate_op_pr()
510 vcpu->arch.tfhar = kvmppc_get_pc(vcpu) + 4; in kvmppc_core_emulate_op_pr()
511 vcpu->arch.tfiar = kvmppc_get_pc(vcpu); in kvmppc_core_emulate_op_pr()
513 kvmppc_restore_tm_sprs(vcpu); in kvmppc_core_emulate_op_pr()
521 ulong guest_msr = kvmppc_get_msr(vcpu); in kvmppc_core_emulate_op_pr()
527 if (!(kvmppc_get_msr(vcpu) & MSR_TM)) { in kvmppc_core_emulate_op_pr()
528 kvmppc_trigger_fac_interrupt(vcpu, FSCR_TM_LG); in kvmppc_core_emulate_op_pr()
540 ra_val = kvmppc_get_gpr(vcpu, ra); in kvmppc_core_emulate_op_pr()
542 kvmppc_emulate_tabort(vcpu, ra_val); in kvmppc_core_emulate_op_pr()
547 ulong guest_msr = kvmppc_get_msr(vcpu); in kvmppc_core_emulate_op_pr()
553 if (!(kvmppc_get_msr(vcpu) & MSR_TM)) { in kvmppc_core_emulate_op_pr()
554 kvmppc_trigger_fac_interrupt(vcpu, FSCR_TM_LG); in kvmppc_core_emulate_op_pr()
562 kvmppc_core_queue_program(vcpu, SRR1_PROGPRIV); in kvmppc_core_emulate_op_pr()
569 kvmppc_core_queue_program(vcpu, SRR1_PROGTM); in kvmppc_core_emulate_op_pr()
575 ra_val = kvmppc_get_gpr(vcpu, ra); in kvmppc_core_emulate_op_pr()
576 kvmppc_emulate_treclaim(vcpu, ra_val); in kvmppc_core_emulate_op_pr()
581 ulong guest_msr = kvmppc_get_msr(vcpu); in kvmppc_core_emulate_op_pr()
587 if (!(kvmppc_get_msr(vcpu) & MSR_TM)) { in kvmppc_core_emulate_op_pr()
588 kvmppc_trigger_fac_interrupt(vcpu, FSCR_TM_LG); in kvmppc_core_emulate_op_pr()
596 kvmppc_core_queue_program(vcpu, SRR1_PROGPRIV); in kvmppc_core_emulate_op_pr()
608 kvmppc_core_queue_program(vcpu, SRR1_PROGTM); in kvmppc_core_emulate_op_pr()
613 kvmppc_emulate_trchkpt(vcpu); in kvmppc_core_emulate_op_pr()
626 emulated = kvmppc_emulate_paired_single(run, vcpu); in kvmppc_core_emulate_op_pr()
631 void kvmppc_set_bat(struct kvm_vcpu *vcpu, struct kvmppc_bat *bat, bool upper, in kvmppc_set_bat() argument
651 static struct kvmppc_bat *kvmppc_find_bat(struct kvm_vcpu *vcpu, int sprn) in kvmppc_find_bat() argument
653 struct kvmppc_vcpu_book3s *vcpu_book3s = to_book3s(vcpu); in kvmppc_find_bat()
676 int kvmppc_core_emulate_mtspr_pr(struct kvm_vcpu *vcpu, int sprn, ulong spr_val) in kvmppc_core_emulate_mtspr_pr() argument
682 if (!spr_allowed(vcpu, PRIV_HYPER)) in kvmppc_core_emulate_mtspr_pr()
684 to_book3s(vcpu)->sdr1 = spr_val; in kvmppc_core_emulate_mtspr_pr()
687 kvmppc_set_dsisr(vcpu, spr_val); in kvmppc_core_emulate_mtspr_pr()
690 kvmppc_set_dar(vcpu, spr_val); in kvmppc_core_emulate_mtspr_pr()
693 to_book3s(vcpu)->hior = spr_val; in kvmppc_core_emulate_mtspr_pr()
700 struct kvmppc_bat *bat = kvmppc_find_bat(vcpu, sprn); in kvmppc_core_emulate_mtspr_pr()
702 kvmppc_set_bat(vcpu, bat, !(sprn % 2), (u32)spr_val); in kvmppc_core_emulate_mtspr_pr()
705 kvmppc_mmu_pte_flush(vcpu, 0, 0); in kvmppc_core_emulate_mtspr_pr()
706 kvmppc_mmu_flush_segments(vcpu); in kvmppc_core_emulate_mtspr_pr()
710 to_book3s(vcpu)->hid[0] = spr_val; in kvmppc_core_emulate_mtspr_pr()
713 to_book3s(vcpu)->hid[1] = spr_val; in kvmppc_core_emulate_mtspr_pr()
716 to_book3s(vcpu)->hid[2] = spr_val; in kvmppc_core_emulate_mtspr_pr()
719 to_book3s(vcpu)->hid[2] = spr_val; in kvmppc_core_emulate_mtspr_pr()
721 switch (vcpu->arch.pvr) { in kvmppc_core_emulate_mtspr_pr()
731 if (vcpu->arch.hflags & BOOK3S_HFLAG_NATIVE_PS) { in kvmppc_core_emulate_mtspr_pr()
734 vcpu->arch.hflags |= BOOK3S_HFLAG_PAIRED_SINGLE; in kvmppc_core_emulate_mtspr_pr()
735 kvmppc_giveup_ext(vcpu, MSR_FP); in kvmppc_core_emulate_mtspr_pr()
737 vcpu->arch.hflags &= ~BOOK3S_HFLAG_PAIRED_SINGLE; in kvmppc_core_emulate_mtspr_pr()
744 to_book3s(vcpu)->hid[4] = spr_val; in kvmppc_core_emulate_mtspr_pr()
747 to_book3s(vcpu)->hid[5] = spr_val; in kvmppc_core_emulate_mtspr_pr()
749 if (vcpu->arch.mmu.is_dcbz32(vcpu) && in kvmppc_core_emulate_mtspr_pr()
751 vcpu->arch.hflags |= BOOK3S_HFLAG_DCBZ32; in kvmppc_core_emulate_mtspr_pr()
761 to_book3s(vcpu)->gqr[sprn - SPRN_GQR0] = spr_val; in kvmppc_core_emulate_mtspr_pr()
765 kvmppc_set_fscr(vcpu, spr_val); in kvmppc_core_emulate_mtspr_pr()
768 vcpu->arch.bescr = spr_val; in kvmppc_core_emulate_mtspr_pr()
771 vcpu->arch.ebbhr = spr_val; in kvmppc_core_emulate_mtspr_pr()
774 vcpu->arch.ebbrr = spr_val; in kvmppc_core_emulate_mtspr_pr()
783 if (!(kvmppc_get_msr(vcpu) & MSR_TM)) { in kvmppc_core_emulate_mtspr_pr()
784 kvmppc_trigger_fac_interrupt(vcpu, FSCR_TM_LG); in kvmppc_core_emulate_mtspr_pr()
789 if (MSR_TM_ACTIVE(kvmppc_get_msr(vcpu)) && in kvmppc_core_emulate_mtspr_pr()
790 !((MSR_TM_SUSPENDED(kvmppc_get_msr(vcpu))) && in kvmppc_core_emulate_mtspr_pr()
796 kvmppc_core_queue_program(vcpu, SRR1_PROGTM); in kvmppc_core_emulate_mtspr_pr()
843 if (kvmppc_get_msr(vcpu) & MSR_PR) { in kvmppc_core_emulate_mtspr_pr()
844 kvmppc_core_queue_program(vcpu, SRR1_PROGPRIV); in kvmppc_core_emulate_mtspr_pr()
848 if ((kvmppc_get_msr(vcpu) & MSR_PR) || sprn == 0) { in kvmppc_core_emulate_mtspr_pr()
849 kvmppc_core_queue_program(vcpu, SRR1_PROGILL); in kvmppc_core_emulate_mtspr_pr()
859 int kvmppc_core_emulate_mfspr_pr(struct kvm_vcpu *vcpu, int sprn, ulong *spr_val) in kvmppc_core_emulate_mfspr_pr() argument
869 struct kvmppc_bat *bat = kvmppc_find_bat(vcpu, sprn); in kvmppc_core_emulate_mfspr_pr()
879 if (!spr_allowed(vcpu, PRIV_HYPER)) in kvmppc_core_emulate_mfspr_pr()
881 *spr_val = to_book3s(vcpu)->sdr1; in kvmppc_core_emulate_mfspr_pr()
884 *spr_val = kvmppc_get_dsisr(vcpu); in kvmppc_core_emulate_mfspr_pr()
887 *spr_val = kvmppc_get_dar(vcpu); in kvmppc_core_emulate_mfspr_pr()
890 *spr_val = to_book3s(vcpu)->hior; in kvmppc_core_emulate_mfspr_pr()
893 *spr_val = to_book3s(vcpu)->hid[0]; in kvmppc_core_emulate_mfspr_pr()
896 *spr_val = to_book3s(vcpu)->hid[1]; in kvmppc_core_emulate_mfspr_pr()
900 *spr_val = to_book3s(vcpu)->hid[2]; in kvmppc_core_emulate_mfspr_pr()
904 *spr_val = to_book3s(vcpu)->hid[4]; in kvmppc_core_emulate_mfspr_pr()
907 *spr_val = to_book3s(vcpu)->hid[5]; in kvmppc_core_emulate_mfspr_pr()
917 *spr_val = vcpu->arch.purr; in kvmppc_core_emulate_mfspr_pr()
923 *spr_val = vcpu->arch.spurr; in kvmppc_core_emulate_mfspr_pr()
926 *spr_val = to_book3s(vcpu)->vtb; in kvmppc_core_emulate_mfspr_pr()
929 *spr_val = vcpu->arch.ic; in kvmppc_core_emulate_mfspr_pr()
939 *spr_val = to_book3s(vcpu)->gqr[sprn - SPRN_GQR0]; in kvmppc_core_emulate_mfspr_pr()
943 *spr_val = vcpu->arch.fscr; in kvmppc_core_emulate_mfspr_pr()
946 *spr_val = vcpu->arch.bescr; in kvmppc_core_emulate_mfspr_pr()
949 *spr_val = vcpu->arch.ebbhr; in kvmppc_core_emulate_mfspr_pr()
952 *spr_val = vcpu->arch.ebbrr; in kvmppc_core_emulate_mfspr_pr()
961 if (!(kvmppc_get_msr(vcpu) & MSR_TM)) { in kvmppc_core_emulate_mfspr_pr()
962 kvmppc_trigger_fac_interrupt(vcpu, FSCR_TM_LG); in kvmppc_core_emulate_mfspr_pr()
1008 if (kvmppc_get_msr(vcpu) & MSR_PR) { in kvmppc_core_emulate_mfspr_pr()
1009 kvmppc_core_queue_program(vcpu, SRR1_PROGPRIV); in kvmppc_core_emulate_mfspr_pr()
1013 if ((kvmppc_get_msr(vcpu) & MSR_PR) || sprn == 0 || in kvmppc_core_emulate_mfspr_pr()
1015 kvmppc_core_queue_program(vcpu, SRR1_PROGILL); in kvmppc_core_emulate_mfspr_pr()
1026 u32 kvmppc_alignment_dsisr(struct kvm_vcpu *vcpu, unsigned int inst) in kvmppc_alignment_dsisr() argument
1031 ulong kvmppc_alignment_dar(struct kvm_vcpu *vcpu, unsigned int inst) in kvmppc_alignment_dar() argument
1037 return vcpu->arch.fault_dar; in kvmppc_alignment_dar()
1049 dar = kvmppc_get_gpr(vcpu, ra); in kvmppc_alignment_dar()
1054 dar = kvmppc_get_gpr(vcpu, ra); in kvmppc_alignment_dar()
1055 dar += kvmppc_get_gpr(vcpu, rb); in kvmppc_alignment_dar()