Commit d37f4038 authored by James Hogan's avatar James Hogan Committed by Paolo Bonzini

MIPS: KVM: Omit FPU handling entry code if possible

The FPU handling code on entry from guest is unnecessary if no FPU is
present, so allow it to be dropped at uasm assembly time.
Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim KrÄmáŠ<rkrcmar@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 9c988658
...@@ -393,18 +393,21 @@ void *kvm_mips_build_exit(void *addr) ...@@ -393,18 +393,21 @@ void *kvm_mips_build_exit(void *addr)
UASM_i_LW(&p, K0, uasm_rel_lo((long)&ebase), K0); UASM_i_LW(&p, K0, uasm_rel_lo((long)&ebase), K0);
uasm_i_mtc0(&p, K0, C0_EBASE); uasm_i_mtc0(&p, K0, C0_EBASE);
/* if (raw_cpu_has_fpu) {
* If FPU is enabled, save FCR31 and clear it so that later ctc1's don't /*
* trigger FPE for pending exceptions. * If FPU is enabled, save FCR31 and clear it so that later
*/ * ctc1's don't trigger FPE for pending exceptions.
uasm_i_lui(&p, AT, ST0_CU1 >> 16); */
uasm_i_and(&p, V1, V0, AT); uasm_i_lui(&p, AT, ST0_CU1 >> 16);
uasm_il_beqz(&p, &r, V1, label_fpu_1); uasm_i_and(&p, V1, V0, AT);
uasm_i_nop(&p); uasm_il_beqz(&p, &r, V1, label_fpu_1);
uasm_i_cfc1(&p, T0, 31); uasm_i_nop(&p);
uasm_i_sw(&p, T0, offsetof(struct kvm_vcpu_arch, fpu.fcr31), K1); uasm_i_cfc1(&p, T0, 31);
uasm_i_ctc1(&p, ZERO, 31); uasm_i_sw(&p, T0, offsetof(struct kvm_vcpu_arch, fpu.fcr31),
uasm_l_fpu_1(&l, p); K1);
uasm_i_ctc1(&p, ZERO, 31);
uasm_l_fpu_1(&l, p);
}
#ifdef CONFIG_CPU_HAS_MSA #ifdef CONFIG_CPU_HAS_MSA
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment