]> git.proxmox.com Git - qemu.git/commitdiff
target-arm: sort TCG cpreg list by KVM-style 64 bit ID number
authorAlvise Rigo <a.rigo@virtualopensystems.com>
Fri, 11 Oct 2013 17:38:44 +0000 (19:38 +0200)
committerEdgar E. Iglesias <edgar.iglesias@gmail.com>
Thu, 31 Oct 2013 13:00:16 +0000 (14:00 +0100)
Both KVM and TCG populate the cpreg_list with 64 bit register IDs,
but in the TCG side the cpreg_list is sorted using the 32 bit ID
version while in the kvm side the 64 bit ID version is used.  This
patch makes the sorting of the cpreg_list consistent between KVM and
TCG.

Signed-off-by: Alvise Rigo <a.rigo@virtualopensystems.com>
Message-id: 1381513125-26802-1-git-send-email-a.rigo@virtualopensystems.com
[PMM: fixed indent, coding style and commit message formatting]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
target-arm/helper.c

index 73476ed5b1d611777d85d4950fa27d96a3c19380..3445813465585044b6afa7ca16e6733e9cac07f4 100644 (file)
@@ -225,10 +225,16 @@ static void count_cpreg(gpointer key, gpointer opaque)
 
 static gint cpreg_key_compare(gconstpointer a, gconstpointer b)
 {
-    uint32_t aidx = *(uint32_t *)a;
-    uint32_t bidx = *(uint32_t *)b;
+    uint64_t aidx = cpreg_to_kvm_id(*(uint32_t *)a);
+    uint64_t bidx = cpreg_to_kvm_id(*(uint32_t *)b);
 
-    return aidx - bidx;
+    if (aidx > bidx) {
+        return 1;
+    }
+    if (aidx < bidx) {
+        return -1;
+    }
+    return 0;
 }
 
 static void cpreg_make_keylist(gpointer key, gpointer value, gpointer udata)