qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v9 26/26] target: [tcg, arm] Port to generic tra


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH v9 26/26] target: [tcg, arm] Port to generic translation framework
Date: Mon, 26 Jun 2017 20:47:10 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0

On 06/25/2017 03:28 AM, Lluís Vilanova wrote:
+static TranslatorOps aarch64_translator_ops = {
+    .init_disas_context = aarch64_trblock_init_disas_context,
+    .insn_start = aarch64_trblock_insn_start,
+    .breakpoint_check = aarch64_trblock_breakpoint_check,
+    .disas_insn = aarch64_trblock_disas_insn,
+    .tb_stop = aarch64_trblock_tb_stop,
+    .disas_flags = aarch64_trblock_disas_flags,
+};

const.

+void gen_intermediate_code_a64(DisasContextBase *db, CPUState *cpu,
                                 TranslationBlock *tb)
  {
+    translate_block(&aarch64_translator_ops, db, cpu, &cpu_env, tb);
  }
...
  /* generate intermediate code for basic block 'tb'.  */
  void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb)
  {
      DisasContext dc1, *dc = &dc1;
      DisasContextBase *db = &dc->base;
/* generate intermediate code */ @@ -12202,97 +12214,11 @@ void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb)
       * the A32/T32 complexity to do with conditional execution/IT blocks/etc.
       */
      if (ARM_TBFLAG_AARCH64_STATE(tb->flags)) {
+        gen_intermediate_code_a64(db, cpu, tb);
          return;
+    } else {
+        translate_block(&arm_translator_ops, db, cpu, &cpu_env, tb);
      }

There's really no point in keeping gen_intermediate_code_a64 is there.

This is better written as

  translate_block((ARM_TBFLAG_AARCH64_STATE(tb->flags)
                   ? &aarch64_translator_ops
                   : &arm_translator_ops),
                  &dc->base, cpu, tb);


r~



reply via email to

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