mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 00:21:32 +00:00
KVM: PPC: Implement mfsr emulation
We emulate the mfsrin instruction already, that passes the SR number in a register value. But we lacked support for mfsr that encoded the SR number in the opcode. So let's implement it. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
a56cf347c2
commit
c664876c6d
@ -35,6 +35,7 @@
|
||||
#define OP_31_XOP_SLBMTE 402
|
||||
#define OP_31_XOP_SLBIE 434
|
||||
#define OP_31_XOP_SLBIA 498
|
||||
#define OP_31_XOP_MFSR 595
|
||||
#define OP_31_XOP_MFSRIN 659
|
||||
#define OP_31_XOP_SLBMFEV 851
|
||||
#define OP_31_XOP_EIOIO 854
|
||||
@ -90,6 +91,18 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
|
||||
case OP_31_XOP_MTMSR:
|
||||
kvmppc_set_msr(vcpu, kvmppc_get_gpr(vcpu, get_rs(inst)));
|
||||
break;
|
||||
case OP_31_XOP_MFSR:
|
||||
{
|
||||
int srnum;
|
||||
|
||||
srnum = kvmppc_get_field(inst, 12 + 32, 15 + 32);
|
||||
if (vcpu->arch.mmu.mfsrin) {
|
||||
u32 sr;
|
||||
sr = vcpu->arch.mmu.mfsrin(vcpu, srnum);
|
||||
kvmppc_set_gpr(vcpu, get_rt(inst), sr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case OP_31_XOP_MFSRIN:
|
||||
{
|
||||
int srnum;
|
||||
|
Loading…
Reference in New Issue
Block a user