• James Hogan's avatar
    MIPS; KVM: Convert exception entry to uasm · 90e9311a
    James Hogan authored
    Convert the whole of locore.S (assembly to enter guest and handle
    exception entry) to be generated dynamically with uasm. This is done
    with minimal changes to the resulting code.
    
    The main changes are:
    - Some constants are generated by uasm using LUI+ADDIU instead of
      LUI+ORI.
    - Loading of lo and hi are swapped around in vcpu_run but not when
      resuming the guest after an exit. Both bits of logic are now generated
      by the same code.
    - Register MOVEs in uasm use different ADDU operand ordering to GNU as,
      putting zero register into rs instead of rt.
    - The JALR.HB to call the C exit handler is switched to JALR, since the
      hazard barrier would appear to be unnecessary.
    
    This will allow further optimisation in the future to dynamically handle
    the capabilities of the CPU.
    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>
    90e9311a
mips.c 42.8 KB