diff options
author | Peter Tyser <ptyser@xes-inc.com> | 2010-12-29 14:51:25 -0500 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2011-03-17 12:08:25 -0400 |
commit | bc9c1933d9db227d991736382ddca21ed520c0ea (patch) | |
tree | 40a1c2be80f165ace5f70e9fbf1d745b9b1978c2 /arch/powerpc/kvm/booke.c | |
parent | 775077a0634a4a2149c85a63ec319b1e426d0564 (diff) |
KVM: PPC: Fix SPRG get/set for Book3S and BookE
Previously SPRGs 4-7 were improperly read and written in
kvm_arch_vcpu_ioctl_get_regs() and kvm_arch_vcpu_ioctl_set_regs();
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm/booke.c')
-rw-r--r-- | arch/powerpc/kvm/booke.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index 77575d08c818..ef76acb455c3 100644 --- a/arch/powerpc/kvm/booke.c +++ b/arch/powerpc/kvm/booke.c | |||
@@ -546,9 +546,10 @@ int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) | |||
546 | regs->sprg1 = vcpu->arch.shared->sprg1; | 546 | regs->sprg1 = vcpu->arch.shared->sprg1; |
547 | regs->sprg2 = vcpu->arch.shared->sprg2; | 547 | regs->sprg2 = vcpu->arch.shared->sprg2; |
548 | regs->sprg3 = vcpu->arch.shared->sprg3; | 548 | regs->sprg3 = vcpu->arch.shared->sprg3; |
549 | regs->sprg5 = vcpu->arch.sprg4; | 549 | regs->sprg4 = vcpu->arch.sprg4; |
550 | regs->sprg6 = vcpu->arch.sprg5; | 550 | regs->sprg5 = vcpu->arch.sprg5; |
551 | regs->sprg7 = vcpu->arch.sprg6; | 551 | regs->sprg6 = vcpu->arch.sprg6; |
552 | regs->sprg7 = vcpu->arch.sprg7; | ||
552 | 553 | ||
553 | for (i = 0; i < ARRAY_SIZE(regs->gpr); i++) | 554 | for (i = 0; i < ARRAY_SIZE(regs->gpr); i++) |
554 | regs->gpr[i] = kvmppc_get_gpr(vcpu, i); | 555 | regs->gpr[i] = kvmppc_get_gpr(vcpu, i); |
@@ -572,9 +573,10 @@ int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) | |||
572 | vcpu->arch.shared->sprg1 = regs->sprg1; | 573 | vcpu->arch.shared->sprg1 = regs->sprg1; |
573 | vcpu->arch.shared->sprg2 = regs->sprg2; | 574 | vcpu->arch.shared->sprg2 = regs->sprg2; |
574 | vcpu->arch.shared->sprg3 = regs->sprg3; | 575 | vcpu->arch.shared->sprg3 = regs->sprg3; |
575 | vcpu->arch.sprg5 = regs->sprg4; | 576 | vcpu->arch.sprg4 = regs->sprg4; |
576 | vcpu->arch.sprg6 = regs->sprg5; | 577 | vcpu->arch.sprg5 = regs->sprg5; |
577 | vcpu->arch.sprg7 = regs->sprg6; | 578 | vcpu->arch.sprg6 = regs->sprg6; |
579 | vcpu->arch.sprg7 = regs->sprg7; | ||
578 | 580 | ||
579 | for (i = 0; i < ARRAY_SIZE(regs->gpr); i++) | 581 | for (i = 0; i < ARRAY_SIZE(regs->gpr); i++) |
580 | kvmppc_set_gpr(vcpu, i, regs->gpr[i]); | 582 | kvmppc_set_gpr(vcpu, i, regs->gpr[i]); |