On 25/4/24 01:31, Richard Henderson wrote:
This will be able to replace plugin_insn_append, and will
be usable for disassembly.

Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
  include/exec/translator.h | 12 ++++++++++++
  accel/tcg/translator.c    | 41 +++++++++++++++++++++++++++++++++++++++
  2 files changed, 53 insertions(+)

diff --git a/include/exec/translator.h b/include/exec/translator.h
index 83fe66cba0..974cc4f9c4 100644
--- a/include/exec/translator.h
+++ b/include/exec/translator.h
@@ -90,6 +90,18 @@ typedef struct DisasContextBase {
      bool plugin_enabled;
      struct TCGOp *insn_start;
      void *host_addr[2];
+
+    /*
+     * Record insn data that we cannot read directly from host memory.
+     * There are only two reasons we cannot use host memory:
+     * (1) We are executing from I/O,
+     * (2) We are executing a synthetic instruction (s390x EX).
+     * In both cases we need record exactly one instruction,
+     * and thus the maximum amount of data we record is limited.
+     */
+    int record_start;
+    int record_len;
+    uint8_t record[32];

Alternatively (matter of style):

       struct {
           unsigned start;
           unsigned len;
           uint8_t data[32];
       }

  } DisasContextBase;

Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org>


Reply via email to