• James Hogan's avatar
    MIPS: KVM: Fix translation of MFC0 ErrCtl · 66ffc50c
    James Hogan authored
    The MIPS KVM dynamic translation is meant to translate "MFC0 rt, ErrCtl"
    instructions into "ADD rt, zero, zero" to zero the destination register,
    however the rt register number was copied into rt of the ADD instruction
    encoding, which is the 2nd source operand. This results in "ADD zero,
    zero, rt" which is a no-op, so only the first execution of each such
    MFC0 from ErrCtl will actually read 0.
    
    Fix the shift to put the rt from the MFC0 encoding into the rd field of
    the ADD.
    
    Fixes: 50c83085 ("KVM/MIPS32: Binary patching of select privileged instructions.")
    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>
    66ffc50c
dyntrans.c 3.93 KB