qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v11 06/15] target/hexagon: expose next PC in DisasContext


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v11 06/15] target/hexagon: expose next PC in DisasContext
Date: Sat, 24 Sep 2022 14:22:03 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.13.1

On 4/8/22 13:55, Anton Johansson via wrote:
From: Paolo Montesel <babush@rev.ng>

Missing the rationale. "The idef-parser will use it with IMM_NPC".

But I feel I'm missing something, what is the diff between IMM_PC/IMM_NPC?

Signed-off-by: Alessandro Di Federico <ale@rev.ng>
Signed-off-by: Paolo Montesel <babush@rev.ng>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
---
  target/hexagon/translate.c | 3 ++-
  target/hexagon/translate.h | 1 +
  2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
index d4fc92f7e9..e3e250fd4f 100644
--- a/target/hexagon/translate.c
+++ b/target/hexagon/translate.c
@@ -741,11 +741,12 @@ static void decode_and_translate_packet(CPUHexagonState 
*env, DisasContext *ctx)
      if (decode_packet(nwords, words, &pkt, false) > 0) {
          HEX_DEBUG_PRINT_PKT(&pkt);
          gen_start_packet(ctx, &pkt);
+        ctx->npc = ctx->base.pc_next + pkt.encod_pkt_size_in_bytes;
          for (i = 0; i < pkt.num_insns; i++) {
              gen_insn(env, ctx, &pkt.insn[i], &pkt);
          }
          gen_commit_packet(env, ctx, &pkt);
-        ctx->base.pc_next += pkt.encod_pkt_size_in_bytes;
+        ctx->base.pc_next = ctx->npc;
      } else {
          gen_exception_end_tb(ctx, HEX_EXCP_INVALID_PACKET);
      }
diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h
index a245172827..494471548e 100644
--- a/target/hexagon/translate.h
+++ b/target/hexagon/translate.h
@@ -53,6 +53,7 @@ typedef struct DisasContext {
      bool qreg_is_predicated[NUM_QREGS];
      int qreg_log_idx;
      bool pre_commit;
+    uint32_t npc;

And why not use target_ulong?

  } DisasContext;
static inline void ctx_log_reg_write(DisasContext *ctx, int rnum)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]