KVM: PPC: Convert SPRG[0-4] to shared page
When in kernel mode there are 4 additional registers available that are simple data storage. Instead of exiting to the hypervisor to read and write those, we can just share them with the guest using the page. This patch converts all users of the current field to the shared page. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
committed by
Avi Kivity
parent
de7906c36c
commit
a73a9599e0
@ -263,13 +263,17 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu)
|
||||
kvmppc_set_gpr(vcpu, rt, get_tb()); break;
|
||||
|
||||
case SPRN_SPRG0:
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.sprg0); break;
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->sprg0);
|
||||
break;
|
||||
case SPRN_SPRG1:
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.sprg1); break;
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->sprg1);
|
||||
break;
|
||||
case SPRN_SPRG2:
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.sprg2); break;
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->sprg2);
|
||||
break;
|
||||
case SPRN_SPRG3:
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.sprg3); break;
|
||||
kvmppc_set_gpr(vcpu, rt, vcpu->arch.shared->sprg3);
|
||||
break;
|
||||
/* Note: SPRG4-7 are user-readable, so we don't get
|
||||
* a trap. */
|
||||
|
||||
@ -341,13 +345,17 @@ int kvmppc_emulate_instruction(struct kvm_run *run, struct kvm_vcpu *vcpu)
|
||||
break;
|
||||
|
||||
case SPRN_SPRG0:
|
||||
vcpu->arch.sprg0 = kvmppc_get_gpr(vcpu, rs); break;
|
||||
vcpu->arch.shared->sprg0 = kvmppc_get_gpr(vcpu, rs);
|
||||
break;
|
||||
case SPRN_SPRG1:
|
||||
vcpu->arch.sprg1 = kvmppc_get_gpr(vcpu, rs); break;
|
||||
vcpu->arch.shared->sprg1 = kvmppc_get_gpr(vcpu, rs);
|
||||
break;
|
||||
case SPRN_SPRG2:
|
||||
vcpu->arch.sprg2 = kvmppc_get_gpr(vcpu, rs); break;
|
||||
vcpu->arch.shared->sprg2 = kvmppc_get_gpr(vcpu, rs);
|
||||
break;
|
||||
case SPRN_SPRG3:
|
||||
vcpu->arch.sprg3 = kvmppc_get_gpr(vcpu, rs); break;
|
||||
vcpu->arch.shared->sprg3 = kvmppc_get_gpr(vcpu, rs);
|
||||
break;
|
||||
|
||||
default:
|
||||
emulated = kvmppc_core_emulate_mtspr(vcpu, sprn, rs);
|
||||
|
Reference in New Issue
Block a user