aboutsummaryrefslogtreecommitdiff
path: root/accel
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-04-02 08:27:22 -0700
committerRichard Henderson <richard.henderson@linaro.org>2023-06-05 12:04:29 -0700
commitbc54ef8c6a5331471f2a7bdd0e81982c2fafc9e5 (patch)
tree4fa97d3a5b5dfd16c121ae99c55969c6ac12808e /accel
parentcac9b0fd08b38d5e5b3982c3ff6cd8e7fbc22e23 (diff)
plugins: Move plugin_insn_append to translator.c
This function is only used in translator.c, and uses a target-specific typedef: abi_ptr. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'accel')
-rw-r--r--accel/tcg/translator.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
index fda4e7f637..918a455e73 100644
--- a/accel/tcg/translator.c
+++ b/accel/tcg/translator.c
@@ -285,6 +285,27 @@ static void *translator_access(CPUArchState *env, DisasContextBase *db,
return host + (pc - base);
}
+static void plugin_insn_append(abi_ptr pc, const void *from, size_t size)
+{
+#ifdef CONFIG_PLUGIN
+ struct qemu_plugin_insn *insn = tcg_ctx->plugin_insn;
+ abi_ptr off;
+
+ if (insn == NULL) {
+ return;
+ }
+ off = pc - insn->vaddr;
+ if (off < insn->data->len) {
+ g_byte_array_set_size(insn->data, off);
+ } else if (off > insn->data->len) {
+ /* we have an unexpected gap */
+ g_assert_not_reached();
+ }
+
+ insn->data = g_byte_array_append(insn->data, from, size);
+#endif
+}
+
uint8_t translator_ldub(CPUArchState *env, DisasContextBase *db, abi_ptr pc)
{
uint8_t ret;