diff mbox series

[v3,06/11] contrib/plugins/cache: fix 32-bit build

Message ID 20241217224306.2900490-7-pierrick.bouvier@linaro.org
State New
Headers show
Series Fix 32-bit build for plugins | expand

Commit Message

Pierrick Bouvier Dec. 17, 2024, 10:43 p.m. UTC
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
 contrib/plugins/cache.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

Comments

Richard Henderson Dec. 18, 2024, 4:57 p.m. UTC | #1
On 12/17/24 16:43, Pierrick Bouvier wrote:
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
>   contrib/plugins/cache.c | 18 ++++++------------
>   1 file changed, 6 insertions(+), 12 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~

> 
> diff --git a/contrib/plugins/cache.c b/contrib/plugins/cache.c
> index 512ef6776b7..7baff868609 100644
> --- a/contrib/plugins/cache.c
> +++ b/contrib/plugins/cache.c
> @@ -208,7 +208,7 @@ static int fifo_get_first_block(Cache *cache, int set)
>   static void fifo_update_on_miss(Cache *cache, int set, int blk_idx)
>   {
>       GQueue *q = cache->sets[set].fifo_queue;
> -    g_queue_push_head(q, GINT_TO_POINTER(blk_idx));
> +    g_queue_push_head(q, (gpointer)(intptr_t) blk_idx);
>   }
>   
>   static void fifo_destroy(Cache *cache)
> @@ -471,13 +471,8 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
>       n_insns = qemu_plugin_tb_n_insns(tb);
>       for (i = 0; i < n_insns; i++) {
>           struct qemu_plugin_insn *insn = qemu_plugin_tb_get_insn(tb, i);
> -        uint64_t effective_addr;
> -
> -        if (sys) {
> -            effective_addr = (uint64_t) qemu_plugin_insn_haddr(insn);
> -        } else {
> -            effective_addr = (uint64_t) qemu_plugin_insn_vaddr(insn);
> -        }
> +        uint64_t effective_addr = sys ? (uintptr_t) qemu_plugin_insn_haddr(insn) :
> +                                        qemu_plugin_insn_vaddr(insn);
>   
>           /*
>            * Instructions might get translated multiple times, we do not create
> @@ -485,14 +480,13 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
>            * entry from the hash table and register it for the callback again.
>            */
>           g_mutex_lock(&hashtable_lock);
> -        data = g_hash_table_lookup(miss_ht, GUINT_TO_POINTER(effective_addr));
> +        data = g_hash_table_lookup(miss_ht, &effective_addr);
>           if (data == NULL) {
>               data = g_new0(InsnData, 1);
>               data->disas_str = qemu_plugin_insn_disas(insn);
>               data->symbol = qemu_plugin_insn_symbol(insn);
>               data->addr = effective_addr;
> -            g_hash_table_insert(miss_ht, GUINT_TO_POINTER(effective_addr),
> -                               (gpointer) data);
> +            g_hash_table_insert(miss_ht, &data->addr, data);
>           }
>           g_mutex_unlock(&hashtable_lock);
>   
> @@ -853,7 +847,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
>       qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>       qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>   
> -    miss_ht = g_hash_table_new_full(NULL, g_direct_equal, NULL, insn_free);
> +    miss_ht = g_hash_table_new_full(g_int64_hash, g_int64_equal, NULL, insn_free);
>   
>       return 0;
>   }
diff mbox series

Patch

diff --git a/contrib/plugins/cache.c b/contrib/plugins/cache.c
index 512ef6776b7..7baff868609 100644
--- a/contrib/plugins/cache.c
+++ b/contrib/plugins/cache.c
@@ -208,7 +208,7 @@  static int fifo_get_first_block(Cache *cache, int set)
 static void fifo_update_on_miss(Cache *cache, int set, int blk_idx)
 {
     GQueue *q = cache->sets[set].fifo_queue;
-    g_queue_push_head(q, GINT_TO_POINTER(blk_idx));
+    g_queue_push_head(q, (gpointer)(intptr_t) blk_idx);
 }
 
 static void fifo_destroy(Cache *cache)
@@ -471,13 +471,8 @@  static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
     n_insns = qemu_plugin_tb_n_insns(tb);
     for (i = 0; i < n_insns; i++) {
         struct qemu_plugin_insn *insn = qemu_plugin_tb_get_insn(tb, i);
-        uint64_t effective_addr;
-
-        if (sys) {
-            effective_addr = (uint64_t) qemu_plugin_insn_haddr(insn);
-        } else {
-            effective_addr = (uint64_t) qemu_plugin_insn_vaddr(insn);
-        }
+        uint64_t effective_addr = sys ? (uintptr_t) qemu_plugin_insn_haddr(insn) :
+                                        qemu_plugin_insn_vaddr(insn);
 
         /*
          * Instructions might get translated multiple times, we do not create
@@ -485,14 +480,13 @@  static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
          * entry from the hash table and register it for the callback again.
          */
         g_mutex_lock(&hashtable_lock);
-        data = g_hash_table_lookup(miss_ht, GUINT_TO_POINTER(effective_addr));
+        data = g_hash_table_lookup(miss_ht, &effective_addr);
         if (data == NULL) {
             data = g_new0(InsnData, 1);
             data->disas_str = qemu_plugin_insn_disas(insn);
             data->symbol = qemu_plugin_insn_symbol(insn);
             data->addr = effective_addr;
-            g_hash_table_insert(miss_ht, GUINT_TO_POINTER(effective_addr),
-                               (gpointer) data);
+            g_hash_table_insert(miss_ht, &data->addr, data);
         }
         g_mutex_unlock(&hashtable_lock);
 
@@ -853,7 +847,7 @@  int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
     qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
 
-    miss_ht = g_hash_table_new_full(NULL, g_direct_equal, NULL, insn_free);
+    miss_ht = g_hash_table_new_full(g_int64_hash, g_int64_equal, NULL, insn_free);
 
     return 0;
 }