summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Huth <thuth@linux.vnet.ibm.com>2013-06-12 13:54:57 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2013-06-17 17:10:38 +0200
commitaeb87c3cb7416d4d5931bc939cc083c731479de0 (patch)
tree9b7163fe8f2ba9f580abed36576397b409f5a3e8
parentKVM: s390,perf: Detect if perf samples belong to KVM host or guest (diff)
downloadlinux-aeb87c3cb7416d4d5931bc939cc083c731479de0.tar.xz
linux-aeb87c3cb7416d4d5931bc939cc083c731479de0.zip
KVM: s390: Fix epsw instruction decoding
The handle_epsw() function calculated the first register in the wrong way, so that it always used r0 by mistake. Now the code uses the common helper function for decoding the registers of rre functions instead to avoid such mistakes. Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--arch/s390/kvm/priv.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
index bda9c9b494f0..a0c63d79431b 100644
--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -457,8 +457,7 @@ static int handle_epsw(struct kvm_vcpu *vcpu)
{
int reg1, reg2;
- reg1 = (vcpu->arch.sie_block->ipb & 0x00f00000) >> 24;
- reg2 = (vcpu->arch.sie_block->ipb & 0x000f0000) >> 16;
+ kvm_s390_get_regs_rre(vcpu, &reg1, &reg2);
/* This basically extracts the mask half of the psw. */
vcpu->run->s.regs.gprs[reg1] &= 0xffffffff00000000;