From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55688) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VZlnV-0006pn-Az for qemu-devel@nongnu.org; Fri, 25 Oct 2013 14:07:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VZlnN-0004dC-LH for qemu-devel@nongnu.org; Fri, 25 Oct 2013 14:07:45 -0400 Received: from 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.1.0.0.b.8.0.1.0.0.2.ip6.arpa ([2001:8b0:1d0::1]:38935 helo=mnementh.archaic.org.uk) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VZlnN-0004bZ-Ec for qemu-devel@nongnu.org; Fri, 25 Oct 2013 14:07:37 -0400 From: Peter Maydell Date: Fri, 25 Oct 2013 19:07:28 +0100 Message-Id: <1382724449-11944-6-git-send-email-peter.maydell@linaro.org> In-Reply-To: <1382724449-11944-1-git-send-email-peter.maydell@linaro.org> References: <1382724449-11944-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PULL 5/6] target-arm: fix sorting issue of KVM cpreg list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org From: Alvise Rigo The compare_u64 function was not sorting the KVM cpreg_list in the right way due to the wrong returned value. Since we are comparing two 64bit values we can't simply return their difference if the returned type is int. Signed-off-by: Alvise Rigo Message-id: 1381513125-26802-2-git-send-email-a.rigo@virtualopensystems.com [PMM: fixed coding style, indent and commit message formatting] Signed-off-by: Peter Maydell --- target-arm/kvm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target-arm/kvm.c b/target-arm/kvm.c index b92e00d..6e5cd36 100644 --- a/target-arm/kvm.c +++ b/target-arm/kvm.c @@ -67,7 +67,13 @@ static bool reg_syncs_via_tuple_list(uint64_t regidx) static int compare_u64(const void *a, const void *b) { - return *(uint64_t *)a - *(uint64_t *)b; + if (*(uint64_t *)a > *(uint64_t *)b) { + return 1; + } + if (*(uint64_t *)a < *(uint64_t *)b) { + return -1; + } + return 0; } int kvm_arch_init_vcpu(CPUState *cs) -- 1.7.9.5