diff options
| author | Akihiko Odaki <akihiko.odaki@daynix.com> | 2024-02-27 14:43:26 +0000 |
|---|---|---|
| committer | Alex Bennée <alex.bennee@linaro.org> | 2024-02-28 09:11:42 +0000 |
| commit | 33a277fec03a61e470bc279b03b1a3759505f3e0 (patch) | |
| tree | 4c7274ecc44de54faa4827754056ade8d7fb5c89 /plugins/api.c | |
| parent | 81cf548f533b4f9e1dc58414f081c2530e08fa48 (diff) | |
| download | focaccia-qemu-33a277fec03a61e470bc279b03b1a3759505f3e0.tar.gz focaccia-qemu-33a277fec03a61e470bc279b03b1a3759505f3e0.zip | |
plugins: Use different helpers when reading registers
This avoids optimizations incompatible when reading registers. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20231213-gdb-v17-12-777047380591@daynix.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240227144335.1196131-21-alex.bennee@linaro.org>
Diffstat (limited to 'plugins/api.c')
| -rw-r--r-- | plugins/api.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/plugins/api.c b/plugins/api.c index 116b8bd603..54df72c1c0 100644 --- a/plugins/api.c +++ b/plugins/api.c @@ -89,7 +89,11 @@ void qemu_plugin_register_vcpu_tb_exec_cb(struct qemu_plugin_tb *tb, void *udata) { if (!tb->mem_only) { - plugin_register_dyn_cb__udata(&tb->cbs[PLUGIN_CB_REGULAR], + int index = flags == QEMU_PLUGIN_CB_R_REGS || + flags == QEMU_PLUGIN_CB_RW_REGS ? + PLUGIN_CB_REGULAR_R : PLUGIN_CB_REGULAR; + + plugin_register_dyn_cb__udata(&tb->cbs[index], cb, flags, udata); } } @@ -109,7 +113,11 @@ void qemu_plugin_register_vcpu_insn_exec_cb(struct qemu_plugin_insn *insn, void *udata) { if (!insn->mem_only) { - plugin_register_dyn_cb__udata(&insn->cbs[PLUGIN_CB_INSN][PLUGIN_CB_REGULAR], + int index = flags == QEMU_PLUGIN_CB_R_REGS || + flags == QEMU_PLUGIN_CB_RW_REGS ? + PLUGIN_CB_REGULAR_R : PLUGIN_CB_REGULAR; + + plugin_register_dyn_cb__udata(&insn->cbs[PLUGIN_CB_INSN][index], cb, flags, udata); } } |