summaryrefslogtreecommitdiffstats
path: root/accel/tcg/plugin-gen.c
diff options
context:
space:
mode:
authorAlex Bennée2021-10-26 12:22:26 +0200
committerAlex Bennée2021-11-04 11:32:01 +0100
commit357af9be5ca47ae8ac2bc439de4bb9a39e186fd4 (patch)
tree763bcbb19526f9542e9a28568713594ceb1e95ba /accel/tcg/plugin-gen.c
parenttests/plugins: extend the insn plugin to track opcode sizes (diff)
downloadqemu-357af9be5ca47ae8ac2bc439de4bb9a39e186fd4.tar.gz
qemu-357af9be5ca47ae8ac2bc439de4bb9a39e186fd4.tar.xz
qemu-357af9be5ca47ae8ac2bc439de4bb9a39e186fd4.zip
plugins: try and make plugin_insn_append more ergonomic
Currently we make the assumption that the guest frontend loads all op code bytes sequentially. This mostly holds up for regular fixed encodings but some architectures like s390x like to re-read the instruction which causes weirdness to occur. Rather than changing the frontends make the plugin API a little more ergonomic and able to handle the re-read case. Stuff will still get strange if we read ahead of the opcode but so far no front ends have done that and this patch asserts the case so we can catch it early if they do. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Suggested-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211026102234.3961636-21-alex.bennee@linaro.org>
Diffstat (limited to 'accel/tcg/plugin-gen.c')
-rw-r--r--accel/tcg/plugin-gen.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
index 61be64b78c..22d95fe1c3 100644
--- a/accel/tcg/plugin-gen.c
+++ b/accel/tcg/plugin-gen.c
@@ -876,9 +876,8 @@ void plugin_gen_insn_start(CPUState *cpu, const DisasContextBase *db)
struct qemu_plugin_tb *ptb = tcg_ctx->plugin_tb;
struct qemu_plugin_insn *pinsn;
- pinsn = qemu_plugin_tb_insn_get(ptb);
+ pinsn = qemu_plugin_tb_insn_get(ptb, db->pc_next);
tcg_ctx->plugin_insn = pinsn;
- pinsn->vaddr = db->pc_next;
plugin_gen_empty_callback(PLUGIN_GEN_FROM_INSN);
/*