All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: j@getutm.app
Subject: [PATCH v3 02/41] tcg: Move tcg prologue pointer out of TCGContext
Date: Thu,  5 Nov 2020 19:28:42 -0800	[thread overview]
Message-ID: <20201106032921.600200-3-richard.henderson@linaro.org> (raw)
In-Reply-To: <20201106032921.600200-1-richard.henderson@linaro.org>

This value is constant across all thread-local copies of TCGContext,
so we might as well move it out of thread-local storage.

Use the correct function pointer type, and name the variable
tcg_qemu_tb_exec, which means that we are able to remove the
macro that does the casting.

Replace HAVE_TCG_QEMU_TB_EXEC with CONFIG_TCG_INTERPRETER,
as this is somewhat clearer in intent.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/tcg/tcg.h    | 9 ++++-----
 tcg/tci/tcg-target.h | 2 --
 tcg/tcg.c            | 9 ++++++++-
 tcg/tci.c            | 3 ++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h
index 8ff9dad4ef..9cc412f90c 100644
--- a/include/tcg/tcg.h
+++ b/include/tcg/tcg.h
@@ -621,7 +621,6 @@ struct TCGContext {
        here, because there's too much arithmetic throughout that relies
        on addition and subtraction working on bytes.  Rely on the GCC
        extension that allows arithmetic on void*.  */
-    void *code_gen_prologue;
     void *code_gen_epilogue;
     void *code_gen_buffer;
     size_t code_gen_buffer_size;
@@ -1222,11 +1221,11 @@ static inline unsigned get_mmuidx(TCGMemOpIdx oi)
 #define TB_EXIT_IDXMAX    1
 #define TB_EXIT_REQUESTED 3
 
-#ifdef HAVE_TCG_QEMU_TB_EXEC
-uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr);
+#ifdef CONFIG_TCG_INTERPRETER
+uintptr_t tcg_qemu_tb_exec(CPUArchState *env, void *tb_ptr);
 #else
-# define tcg_qemu_tb_exec(env, tb_ptr) \
-    ((uintptr_t (*)(void *, void *))tcg_ctx->code_gen_prologue)(env, tb_ptr)
+typedef uintptr_t tcg_prologue_fn(CPUArchState *env, void *tb_ptr);
+extern tcg_prologue_fn *tcg_qemu_tb_exec;
 #endif
 
 void tcg_register_jit(void *buf, size_t buf_size);
diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
index 6460449719..49f3291f8a 100644
--- a/tcg/tci/tcg-target.h
+++ b/tcg/tci/tcg-target.h
@@ -189,8 +189,6 @@ typedef enum {
 
 void tci_disas(uint8_t opc);
 
-#define HAVE_TCG_QEMU_TB_EXEC
-
 /* Flush the dcache at RW, and the icache at RX, as necessary. */
 static inline void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t len)
 {
diff --git a/tcg/tcg.c b/tcg/tcg.c
index d5a72c226f..a6f47b033c 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -161,6 +161,10 @@ static TCGContext **tcg_ctxs;
 static unsigned int n_tcg_ctxs;
 TCGv_env cpu_env = 0;
 
+#ifndef CONFIG_TCG_INTERPRETER
+tcg_prologue_fn *tcg_qemu_tb_exec;
+#endif
+
 struct tcg_region_tree {
     QemuMutex lock;
     GTree *tree;
@@ -1054,7 +1058,10 @@ void tcg_prologue_init(TCGContext *s)
     s->code_ptr = buf0;
     s->code_buf = buf0;
     s->data_gen_ptr = NULL;
-    s->code_gen_prologue = buf0;
+
+#ifndef CONFIG_TCG_INTERPRETER
+    tcg_qemu_tb_exec = (tcg_prologue_fn *)buf0;
+#endif
 
     /* Compute a high-water mark, at which we voluntarily flush the buffer
        and start over.  The size here is arbitrary, significantly larger
diff --git a/tcg/tci.c b/tcg/tci.c
index 82039fd163..d996eb7cf8 100644
--- a/tcg/tci.c
+++ b/tcg/tci.c
@@ -475,8 +475,9 @@ static bool tci_compare64(uint64_t u0, uint64_t u1, TCGCond condition)
 #endif
 
 /* Interpret pseudo code in tb. */
-uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
+uintptr_t tcg_qemu_tb_exec(CPUArchState *env, void *v_tb_ptr)
 {
+    uint8_t *tb_ptr = v_tb_ptr;
     tcg_target_ulong regs[TCG_TARGET_NB_REGS];
     long tcg_temps[CPU_TEMP_BUF_NLONGS];
     uintptr_t sp_value = (uintptr_t)(tcg_temps + CPU_TEMP_BUF_NLONGS);
-- 
2.25.1



  parent reply	other threads:[~2020-11-06  3:33 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-06  3:28 [PATCH v3 00/41] Mirror map JIT memory for TCG Richard Henderson
2020-11-06  3:28 ` [PATCH v3 01/41] tcg: Enhance flush_icache_range with separate data pointer Richard Henderson
2020-11-06 20:31   ` Alex Bennée
2020-11-06 22:51     ` Richard Henderson
2020-11-07 21:08       ` Alex Bennée
2020-11-06  3:28 ` Richard Henderson [this message]
2020-11-07 21:10   ` [PATCH v3 02/41] tcg: Move tcg prologue pointer out of TCGContext Alex Bennée
2020-11-06  3:28 ` [PATCH v3 03/41] tcg: Move tcg epilogue " Richard Henderson
2020-11-06  3:28 ` [PATCH v3 04/41] tcg: Add in_code_gen_buffer Richard Henderson
2020-11-06  3:28 ` [PATCH v3 05/41] tcg: Introduce tcg_splitwx_to_{rx,rw} Richard Henderson
2020-11-06  3:28 ` [PATCH v3 06/41] tcg: Adjust TCGLabel for const Richard Henderson
2020-11-06  3:28 ` [PATCH v3 07/41] tcg: Adjust tcg_out_call " Richard Henderson
2020-11-06  3:28 ` [PATCH v3 08/41] tcg: Adjust tcg_out_label " Richard Henderson
2020-11-06  3:28 ` [PATCH v3 09/41] tcg: Adjust tcg_register_jit " Richard Henderson
2020-11-06  3:28 ` [PATCH v3 10/41] tcg: Adjust tb_target_set_jmp_target for split-wx Richard Henderson
2020-11-06  3:28 ` [PATCH v3 11/41] tcg: Make DisasContextBase.tb const Richard Henderson
2020-11-06  3:28 ` [PATCH v3 12/41] tcg: Make tb arg to synchronize_from_tb const Richard Henderson
2020-11-06  3:28 ` [PATCH v3 13/41] tcg: Use Error with alloc_code_gen_buffer Richard Henderson
2020-11-06  3:28 ` [PATCH v3 14/41] tcg: Add --accel tcg,split-wx property Richard Henderson
2020-11-06  3:28 ` [PATCH v3 15/41] accel/tcg: Support split-wx for linux with memfd Richard Henderson
2020-11-10 17:03   ` Alex Bennée
2020-11-10 17:26     ` Richard Henderson
2020-11-06  3:28 ` [PATCH v3 16/41] accel/tcg: Support split-wx for darwin/iOS with vm_remap Richard Henderson
2020-11-08  3:37   ` Joelle van Dyne
2020-11-10 17:37   ` Alex Bennée
2020-11-10 17:57     ` Joelle van Dyne
2020-11-06  3:28 ` [PATCH v3 17/41] tcg: Return the TB pointer from the rx region from exit_tb Richard Henderson
2020-11-06  3:28 ` [PATCH v3 18/41] tcg/i386: Support split-wx code generation Richard Henderson
2020-11-06  3:28 ` [PATCH v3 19/41] tcg/aarch64: Use B not BL for tcg_out_goto_long Richard Henderson
2020-11-06  3:29 ` [PATCH v3 20/41] tcg/aarch64: Implement flush_idcache_range manually Richard Henderson
2020-11-06  3:29 ` [PATCH v3 21/41] tcg/aarch64: Support split-wx code generation Richard Henderson
2020-11-06  3:29 ` [PATCH v3 22/41] disas: Push const down through host disasassembly Richard Henderson
2020-11-06  3:29 ` [PATCH v3 23/41] tcg/tci: Push const down through bytecode reading Richard Henderson
2020-11-06  3:29 ` [PATCH v3 24/41] tcg: Introduce tcg_tbrel_diff Richard Henderson
2020-11-06  3:29 ` [PATCH v3 25/41] tcg/ppc: Use tcg_tbrel_diff Richard Henderson
2020-11-06  3:29 ` [PATCH v3 26/41] tcg/ppc: Use tcg_out_mem_long to reset TCG_REG_TB Richard Henderson
2020-11-06  3:29 ` [PATCH v3 27/41] tcg/ppc: Support split-wx code generation Richard Henderson
2020-11-06  3:29 ` [PATCH v3 28/41] tcg/sparc: Use tcg_tbrel_diff Richard Henderson
2020-11-06  3:29 ` [PATCH v3 29/41] tcg/sparc: Support split-wx code generation Richard Henderson
2020-11-06  3:29 ` [PATCH v3 30/41] tcg/s390: Use tcg_tbrel_diff Richard Henderson
2020-11-06  3:29 ` [PATCH v3 31/41] tcg/s390: Support split-wx code generation Richard Henderson
2020-11-06  3:29 ` [PATCH v3 32/41] tcg/riscv: Fix branch range checks Richard Henderson
2020-11-06  3:29 ` [PATCH v3 33/41] tcg/riscv: Remove branch-over-branch fallback Richard Henderson
2020-11-06  3:29 ` [PATCH v3 34/41] tcg/riscv: Support split-wx code generation Richard Henderson
2020-11-06  3:29 ` [PATCH v3 35/41] accel/tcg: Add mips support to alloc_code_gen_buffer_splitwx_memfd Richard Henderson
2020-11-06  3:29 ` [PATCH v3 36/41] tcg/mips: Do not assert on relocation overflow Richard Henderson
2020-11-06  3:29 ` [PATCH v3 37/41] tcg/mips: Support split-wx code generation Richard Henderson
2020-11-06  3:29 ` [PATCH v3 38/41] tcg/arm: " Richard Henderson
2020-11-06  3:29 ` [PATCH v3 39/41] tcg: Remove TCG_TARGET_SUPPORT_MIRROR Richard Henderson
2020-11-06  3:29 ` [PATCH v3 40/41] tcg: Constify tcg_code_gen_epilogue Richard Henderson
2020-11-06  3:29 ` [PATCH v3 41/41] tcg: Constify TCGLabelQemuLdst.raddr Richard Henderson
2020-11-06  4:00 ` [PATCH v3 00/41] Mirror map JIT memory for TCG no-reply
2020-11-08  3:38 ` Joelle van Dyne
2020-11-17  3:47 ` Joelle van Dyne
2020-11-17 15:20   ` Richard Henderson
2020-11-17 15:31     ` Joelle van Dyne
2020-11-17 17:26       ` Alex Bennée

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201106032921.600200-3-richard.henderson@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=j@getutm.app \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.