mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
KVM: PPC: BOOKE : Emulate rfdi instruction
This patch adds "rfdi" instruction emulation which is required for guest debug hander on BOOKE-HV Signed-off-by: Bharat Bhushan <Bharat.Bhushan@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
9fee7563cd
commit
c8ca97ca9b
@ -139,6 +139,7 @@ enum kvm_exit_types {
|
|||||||
EMULATED_TLBWE_EXITS,
|
EMULATED_TLBWE_EXITS,
|
||||||
EMULATED_RFI_EXITS,
|
EMULATED_RFI_EXITS,
|
||||||
EMULATED_RFCI_EXITS,
|
EMULATED_RFCI_EXITS,
|
||||||
|
EMULATED_RFDI_EXITS,
|
||||||
DEC_EXITS,
|
DEC_EXITS,
|
||||||
EXT_INTR_EXITS,
|
EXT_INTR_EXITS,
|
||||||
HALT_WAKEUP,
|
HALT_WAKEUP,
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#define OP_19_XOP_RFI 50
|
#define OP_19_XOP_RFI 50
|
||||||
#define OP_19_XOP_RFCI 51
|
#define OP_19_XOP_RFCI 51
|
||||||
|
#define OP_19_XOP_RFDI 39
|
||||||
|
|
||||||
#define OP_31_XOP_MFMSR 83
|
#define OP_31_XOP_MFMSR 83
|
||||||
#define OP_31_XOP_WRTEE 131
|
#define OP_31_XOP_WRTEE 131
|
||||||
@ -37,6 +38,12 @@ static void kvmppc_emul_rfi(struct kvm_vcpu *vcpu)
|
|||||||
kvmppc_set_msr(vcpu, vcpu->arch.shared->srr1);
|
kvmppc_set_msr(vcpu, vcpu->arch.shared->srr1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void kvmppc_emul_rfdi(struct kvm_vcpu *vcpu)
|
||||||
|
{
|
||||||
|
vcpu->arch.pc = vcpu->arch.dsrr0;
|
||||||
|
kvmppc_set_msr(vcpu, vcpu->arch.dsrr1);
|
||||||
|
}
|
||||||
|
|
||||||
static void kvmppc_emul_rfci(struct kvm_vcpu *vcpu)
|
static void kvmppc_emul_rfci(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
vcpu->arch.pc = vcpu->arch.csrr0;
|
vcpu->arch.pc = vcpu->arch.csrr0;
|
||||||
@ -65,6 +72,12 @@ int kvmppc_booke_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
|
|||||||
*advance = 0;
|
*advance = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OP_19_XOP_RFDI:
|
||||||
|
kvmppc_emul_rfdi(vcpu);
|
||||||
|
kvmppc_set_exit_type(vcpu, EMULATED_RFDI_EXITS);
|
||||||
|
*advance = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
emulated = EMULATE_FAIL;
|
emulated = EMULATE_FAIL;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user