summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2014-01-21 18:56:26 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-05-17 09:53:52 -0700
commit159ef09b8f1d20834438e4d42281b1ccfbc77419 (patch)
tree3baf3f7425cf5f59dbbfa0f1d37b224715030ef2
parentc316fc39e38d384ec3e68f946c131ca5b07e58a3 (diff)
downloadlinux-stable-159ef09b8f1d20834438e4d42281b1ccfbc77419.tar.gz
linux-stable-159ef09b8f1d20834438e4d42281b1ccfbc77419.tar.bz2
linux-stable-159ef09b8f1d20834438e4d42281b1ccfbc77419.zip
ARM: KVM: fix ordering of 64bit coprocessor accesses
commit 547f781378a22b65c2ab468f235c23001b5924da upstream. Commit 240e99cbd00a (ARM: KVM: Fix 64-bit coprocessor handling) added an ordering dependency for the 64bit registers. The order described is: CRn, CRm, Op1, Op2, 64bit-first. Unfortunately, the implementation is: CRn, 64bit-first, CRm... Move the 64bit test to be last in order to match the documentation. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Shannon Zhao <shannon.zhao@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--arch/arm/kvm/coproc.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/kvm/coproc.h b/arch/arm/kvm/coproc.h
index c5ad7ff40c96..8dda870e84f9 100644
--- a/arch/arm/kvm/coproc.h
+++ b/arch/arm/kvm/coproc.h
@@ -135,13 +135,13 @@ static inline int cmp_reg(const struct coproc_reg *i1,
return -1;
if (i1->CRn != i2->CRn)
return i1->CRn - i2->CRn;
- if (i1->is_64 != i2->is_64)
- return i2->is_64 - i1->is_64;
if (i1->CRm != i2->CRm)
return i1->CRm - i2->CRm;
if (i1->Op1 != i2->Op1)
return i1->Op1 - i2->Op1;
- return i1->Op2 - i2->Op2;
+ if (i1->Op2 != i2->Op2)
+ return i1->Op2 - i2->Op2;
+ return i2->is_64 - i1->is_64;
}