Skip to content

Commit

Permalink
tests/tcg: expand insn test case to exercise register API
Browse files Browse the repository at this point in the history
This ensure we at least read every register the plugin API reports at
least once during the check-tcg checks.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20240227144335.1196131-25-alex.bennee@linaro.org>
  • Loading branch information
stsquad committed Feb 28, 2024
1 parent 8df5e27 commit 6036b9c
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions tests/plugin/insn.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,25 @@ typedef struct {
char *disas;
} Instruction;

/*
* Initialise a new vcpu with reading the register list
*/
static void vcpu_init(qemu_plugin_id_t id, unsigned int vcpu_index)
{
g_autoptr(GArray) reg_list = qemu_plugin_get_registers();
g_autoptr(GByteArray) reg_value = g_byte_array_new();

if (reg_list) {
for (int i = 0; i < reg_list->len; i++) {
qemu_plugin_reg_descriptor *rd = &g_array_index(
reg_list, qemu_plugin_reg_descriptor, i);
int count = qemu_plugin_read_register(rd->handle, reg_value);
g_assert(count > 0);
}
}
}


static void vcpu_insn_exec_before(unsigned int cpu_index, void *udata)
{
unsigned int i = cpu_index % MAX_CPUS;
Expand Down Expand Up @@ -212,6 +231,8 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
sizes = g_array_new(true, true, sizeof(unsigned long));
}

/* Register init, translation block and exit callbacks */
qemu_plugin_register_vcpu_init_cb(id, vcpu_init);
qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
return 0;
Expand Down

0 comments on commit 6036b9c

Please sign in to comment.