tests/tcg: expand insn test case to exercise register API
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>
This commit is contained in:
parent
8df5e27cf7
commit
6036b9cfde
@ -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;
|
||||
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user