contrib/plugins/cache: fix 32-bit build

Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20241217224306.2900490-7-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20250116160306.1709518-17-alex.bennee@linaro.org>
This commit is contained in:
Pierrick Bouvier 2025-01-16 16:02:45 +00:00 committed by Alex Bennée
parent 03be743f4f
commit aa47f448b5

View File

@ -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) static void fifo_update_on_miss(Cache *cache, int set, int blk_idx)
{ {
GQueue *q = cache->sets[set].fifo_queue; 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) 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); n_insns = qemu_plugin_tb_n_insns(tb);
for (i = 0; i < n_insns; i++) { for (i = 0; i < n_insns; i++) {
struct qemu_plugin_insn *insn = qemu_plugin_tb_get_insn(tb, i); struct qemu_plugin_insn *insn = qemu_plugin_tb_get_insn(tb, i);
uint64_t effective_addr; uint64_t effective_addr = sys ? (uintptr_t) qemu_plugin_insn_haddr(insn) :
qemu_plugin_insn_vaddr(insn);
if (sys) {
effective_addr = (uint64_t) qemu_plugin_insn_haddr(insn);
} else {
effective_addr = (uint64_t) qemu_plugin_insn_vaddr(insn);
}
/* /*
* Instructions might get translated multiple times, we do not create * 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. * entry from the hash table and register it for the callback again.
*/ */
g_mutex_lock(&hashtable_lock); 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) { if (data == NULL) {
data = g_new0(InsnData, 1); data = g_new0(InsnData, 1);
data->disas_str = qemu_plugin_insn_disas(insn); data->disas_str = qemu_plugin_insn_disas(insn);
data->symbol = qemu_plugin_insn_symbol(insn); data->symbol = qemu_plugin_insn_symbol(insn);
data->addr = effective_addr; data->addr = effective_addr;
g_hash_table_insert(miss_ht, GUINT_TO_POINTER(effective_addr), g_hash_table_insert(miss_ht, &data->addr, data);
(gpointer) data);
} }
g_mutex_unlock(&hashtable_lock); 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_vcpu_tb_trans_cb(id, vcpu_tb_trans);
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL); 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; return 0;
} }