qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PATCH v4 13/43] tcg: Adjust tb_target_set_jmp_target for split-wx
Date: Mon, 14 Dec 2020 08:02:44 -0600	[thread overview]
Message-ID: <20201214140314.18544-14-richard.henderson@linaro.org> (raw)
In-Reply-To: <20201214140314.18544-1-richard.henderson@linaro.org>

Pass both rx and rw addresses to tb_target_set_jmp_target.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/aarch64/tcg-target.h     |  2 +-
 tcg/arm/tcg-target.h         |  2 +-
 tcg/i386/tcg-target.h        |  6 +++---
 tcg/mips/tcg-target.h        |  2 +-
 tcg/ppc/tcg-target.h         |  2 +-
 tcg/riscv/tcg-target.h       |  2 +-
 tcg/s390/tcg-target.h        |  8 ++++----
 tcg/sparc/tcg-target.h       |  2 +-
 tcg/tci/tcg-target.h         |  6 +++---
 accel/tcg/cpu-exec.c         |  4 +++-
 tcg/aarch64/tcg-target.c.inc | 12 ++++++------
 tcg/mips/tcg-target.c.inc    |  8 ++++----
 tcg/ppc/tcg-target.c.inc     | 16 ++++++++--------
 tcg/sparc/tcg-target.c.inc   | 14 +++++++-------
 14 files changed, 44 insertions(+), 42 deletions(-)

diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h
index 8a6b97598e..6ba248f447 100644
--- a/tcg/aarch64/tcg-target.h
+++ b/tcg/aarch64/tcg-target.h
@@ -148,7 +148,7 @@ typedef enum {
 #define TCG_TARGET_DEFAULT_MO (0)
 #define TCG_TARGET_HAS_MEMORY_BSWAP     1
 
-void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t);
+void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 
 #ifdef CONFIG_SOFTMMU
 #define TCG_TARGET_NEED_LDST_LABELS
diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h
index f1955ce4ac..6ca4537ca6 100644
--- a/tcg/arm/tcg-target.h
+++ b/tcg/arm/tcg-target.h
@@ -135,7 +135,7 @@ enum {
 #define TCG_TARGET_HAS_MEMORY_BSWAP     1
 
 /* not defined -- call should be eliminated at compile time */
-void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t);
+void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 
 #ifdef CONFIG_SOFTMMU
 #define TCG_TARGET_NEED_LDST_LABELS
diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
index cd067e0b30..0dcaed7fe6 100644
--- a/tcg/i386/tcg-target.h
+++ b/tcg/i386/tcg-target.h
@@ -206,11 +206,11 @@ extern bool have_avx2;
 #define TCG_TARGET_extract_i64_valid(ofs, len) \
     (((ofs) == 8 && (len) == 8) || ((ofs) + (len)) == 32)
 
-static inline void tb_target_set_jmp_target(uintptr_t tc_ptr,
-                                            uintptr_t jmp_addr, uintptr_t addr)
+static inline void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_rx,
+                                            uintptr_t jmp_rw, uintptr_t addr)
 {
     /* patch the branch destination */
-    qatomic_set((int32_t *)jmp_addr, addr - (jmp_addr + 4));
+    qatomic_set((int32_t *)jmp_rw, addr - (jmp_rx + 4));
     /* no need to flush icache explicitly */
 }
 
diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h
index 92c1d63da3..d23baf7cda 100644
--- a/tcg/mips/tcg-target.h
+++ b/tcg/mips/tcg-target.h
@@ -201,7 +201,7 @@ extern bool use_mips32r2_instructions;
 #define TCG_TARGET_DEFAULT_MO (0)
 #define TCG_TARGET_HAS_MEMORY_BSWAP     1
 
-void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t);
+void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 
 #ifdef CONFIG_SOFTMMU
 #define TCG_TARGET_NEED_LDST_LABELS
diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h
index a509a19628..c41d10142b 100644
--- a/tcg/ppc/tcg-target.h
+++ b/tcg/ppc/tcg-target.h
@@ -175,7 +175,7 @@ extern bool have_vsx;
 #define TCG_TARGET_HAS_bitsel_vec       have_vsx
 #define TCG_TARGET_HAS_cmpsel_vec       0
 
-void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t);
+void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 
 #define TCG_TARGET_DEFAULT_MO (0)
 #define TCG_TARGET_HAS_MEMORY_BSWAP     1
diff --git a/tcg/riscv/tcg-target.h b/tcg/riscv/tcg-target.h
index c1bd52bb9a..3d0745c70c 100644
--- a/tcg/riscv/tcg-target.h
+++ b/tcg/riscv/tcg-target.h
@@ -160,7 +160,7 @@ typedef enum {
 #endif
 
 /* not defined -- call should be eliminated at compile time */
-void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t);
+void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 
 #define TCG_TARGET_DEFAULT_MO (0)
 
diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h
index b4feb2f55a..3750952598 100644
--- a/tcg/s390/tcg-target.h
+++ b/tcg/s390/tcg-target.h
@@ -145,12 +145,12 @@ enum {
     TCG_AREG0 = TCG_REG_R10,
 };
 
-static inline void tb_target_set_jmp_target(uintptr_t tc_ptr,
-                                            uintptr_t jmp_addr, uintptr_t addr)
+static inline void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_rx,
+                                            uintptr_t jmp_rw, uintptr_t addr)
 {
     /* patch the branch destination */
-    intptr_t disp = addr - (jmp_addr - 2);
-    qatomic_set((int32_t *)jmp_addr, disp / 2);
+    intptr_t disp = addr - (jmp_rx - 2);
+    qatomic_set((int32_t *)jmp_rw, disp / 2);
     /* no need to flush icache explicitly */
 }
 
diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
index d8b0e32e2e..9c15c91d39 100644
--- a/tcg/sparc/tcg-target.h
+++ b/tcg/sparc/tcg-target.h
@@ -168,7 +168,7 @@ extern bool use_vis3_instructions;
 #define TCG_TARGET_DEFAULT_MO (0)
 #define TCG_TARGET_HAS_MEMORY_BSWAP     1
 
-void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t);
+void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t, uintptr_t);
 
 #define TCG_TARGET_NEED_POOL_LABELS
 
diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
index b84480f989..fcec2e70db 100644
--- a/tcg/tci/tcg-target.h
+++ b/tcg/tci/tcg-target.h
@@ -198,11 +198,11 @@ void tci_disas(uint8_t opc);
 
 #define TCG_TARGET_HAS_MEMORY_BSWAP     1
 
-static inline void tb_target_set_jmp_target(uintptr_t tc_ptr,
-                                            uintptr_t jmp_addr, uintptr_t addr)
+static inline void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_rx,
+                                            uintptr_t jmp_rw, uintptr_t addr)
 {
     /* patch the branch destination */
-    qatomic_set((int32_t *)jmp_addr, addr - (jmp_addr + 4));
+    qatomic_set((int32_t *)jmp_rw, addr - (jmp_rx + 4));
     /* no need to flush icache explicitly */
 }
 
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index 1e3cb570f6..272d596e0c 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -354,7 +354,9 @@ void tb_set_jmp_target(TranslationBlock *tb, int n, uintptr_t addr)
     if (TCG_TARGET_HAS_direct_jump) {
         uintptr_t offset = tb->jmp_target_arg[n];
         uintptr_t tc_ptr = (uintptr_t)tb->tc.ptr;
-        tb_target_set_jmp_target(tc_ptr, tc_ptr + offset, addr);
+        uintptr_t jmp_rx = tc_ptr + offset;
+        uintptr_t jmp_rw = jmp_rx - tcg_splitwx_diff;
+        tb_target_set_jmp_target(tc_ptr, jmp_rx, jmp_rw, addr);
     } else {
         tb->jmp_target_arg[n] = addr;
     }
diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc
index 9ace859db3..fea784cf75 100644
--- a/tcg/aarch64/tcg-target.c.inc
+++ b/tcg/aarch64/tcg-target.c.inc
@@ -1340,21 +1340,21 @@ static inline void tcg_out_call(TCGContext *s, const tcg_insn_unit *target)
     }
 }
 
-void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
-                              uintptr_t addr)
+void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_rx,
+                              uintptr_t jmp_rw, uintptr_t addr)
 {
     tcg_insn_unit i1, i2;
     TCGType rt = TCG_TYPE_I64;
     TCGReg  rd = TCG_REG_TMP;
     uint64_t pair;
 
-    ptrdiff_t offset = addr - jmp_addr;
+    ptrdiff_t offset = addr - jmp_rx;
 
     if (offset == sextract64(offset, 0, 26)) {
         i1 = I3206_B | ((offset >> 2) & 0x3ffffff);
         i2 = NOP;
     } else {
-        offset = (addr >> 12) - (jmp_addr >> 12);
+        offset = (addr >> 12) - (jmp_rx >> 12);
 
         /* patch ADRP */
         i1 = I3406_ADRP | (offset & 3) << 29 | (offset & 0x1ffffc) << (5 - 2) | rd;
@@ -1362,8 +1362,8 @@ void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
         i2 = I3401_ADDI | rt << 31 | (addr & 0xfff) << 10 | rd << 5 | rd;
     }
     pair = (uint64_t)i2 << 32 | i1;
-    qatomic_set((uint64_t *)jmp_addr, pair);
-    flush_idcache_range(jmp_addr, jmp_addr, 8);
+    qatomic_set((uint64_t *)jmp_rw, pair);
+    flush_idcache_range(jmp_rx, jmp_rw, 8);
 }
 
 static inline void tcg_out_goto_label(TCGContext *s, TCGLabel *l)
diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc
index e9c8c24741..52638e920c 100644
--- a/tcg/mips/tcg-target.c.inc
+++ b/tcg/mips/tcg-target.c.inc
@@ -2657,11 +2657,11 @@ static void tcg_target_init(TCGContext *s)
     tcg_regset_set_reg(s->reserved_regs, TCG_REG_GP);   /* global pointer */
 }
 
-void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
-                              uintptr_t addr)
+void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_rx,
+                              uintptr_t jmp_rw, uintptr_t addr)
 {
-    qatomic_set((uint32_t *)jmp_addr, deposit32(OPC_J, 0, 26, addr >> 2));
-    flush_idcache_range(jmp_addr, jmp_addr, 4);
+    qatomic_set((uint32_t *)jmp_rw, deposit32(OPC_J, 0, 26, addr >> 2));
+    flush_idcache_range(jmp_rx, jmp_rw, 4);
 }
 
 typedef struct {
diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc/tcg-target.c.inc
index a0a5bac13f..0eb9c4ebe2 100644
--- a/tcg/ppc/tcg-target.c.inc
+++ b/tcg/ppc/tcg-target.c.inc
@@ -1722,13 +1722,13 @@ static void tcg_out_mb(TCGContext *s, TCGArg a0)
     tcg_out32(s, insn);
 }
 
-void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
-                              uintptr_t addr)
+void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_rx,
+                              uintptr_t jmp_rw, uintptr_t addr)
 {
     if (TCG_TARGET_REG_BITS == 64) {
         tcg_insn_unit i1, i2;
         intptr_t tb_diff = addr - tc_ptr;
-        intptr_t br_diff = addr - (jmp_addr + 4);
+        intptr_t br_diff = addr - (jmp_rx + 4);
         uint64_t pair;
 
         /* This does not exercise the range of the branch, but we do
@@ -1752,13 +1752,13 @@ void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
 
         /* As per the enclosing if, this is ppc64.  Avoid the _Static_assert
            within qatomic_set that would fail to build a ppc32 host.  */
-        qatomic_set__nocheck((uint64_t *)jmp_addr, pair);
-        flush_idcache_range(jmp_addr, jmp_addr, 8);
+        qatomic_set__nocheck((uint64_t *)jmp_rw, pair);
+        flush_idcache_range(jmp_rx, jmp_rw, 8);
     } else {
-        intptr_t diff = addr - jmp_addr;
+        intptr_t diff = addr - jmp_rx;
         tcg_debug_assert(in_range_b(diff));
-        qatomic_set((uint32_t *)jmp_addr, B | (diff & 0x3fffffc));
-        flush_idcache_range(jmp_addr, jmp_addr, 4);
+        qatomic_set((uint32_t *)jmp_rw, B | (diff & 0x3fffffc));
+        flush_idcache_range(jmp_rx, jmp_rw, 4);
     }
 }
 
diff --git a/tcg/sparc/tcg-target.c.inc b/tcg/sparc/tcg-target.c.inc
index 4c81d5f1c2..d599ae27b5 100644
--- a/tcg/sparc/tcg-target.c.inc
+++ b/tcg/sparc/tcg-target.c.inc
@@ -1821,11 +1821,11 @@ void tcg_register_jit(const void *buf, size_t buf_size)
     tcg_register_jit_int(buf, buf_size, &debug_frame, sizeof(debug_frame));
 }
 
-void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
-                              uintptr_t addr)
+void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_rx,
+                              uintptr_t jmp_rw, uintptr_t addr)
 {
     intptr_t tb_disp = addr - tc_ptr;
-    intptr_t br_disp = addr - jmp_addr;
+    intptr_t br_disp = addr - jmp_rx;
     tcg_insn_unit i1, i2;
 
     /* We can reach the entire address space for ILP32.
@@ -1834,9 +1834,9 @@ void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
     tcg_debug_assert(br_disp == (int32_t)br_disp);
 
     if (!USE_REG_TB) {
-        qatomic_set((uint32_t *)jmp_addr,
+        qatomic_set((uint32_t *)jmp_rw,
 		    deposit32(CALL, 0, 30, br_disp >> 2));
-        flush_idcache_range(jmp_addr, jmp_addr, 4);
+        flush_idcache_range(jmp_rx, jmp_rw, 4);
         return;
     }
 
@@ -1859,6 +1859,6 @@ void tb_target_set_jmp_target(uintptr_t tc_ptr, uintptr_t jmp_addr,
               | INSN_IMM13((tb_disp & 0x3ff) | -0x400));
     }
 
-    qatomic_set((uint64_t *)jmp_addr, deposit64(i2, 32, 32, i1));
-    flush_idcache_range(jmp_addr, jmp_addr, 8);
+    qatomic_set((uint64_t *)jmp_rw, deposit64(i2, 32, 32, i1));
+    flush_idcache_range(jmp_rx, jmp_rw, 8);
 }
-- 
2.25.1



  parent reply	other threads:[~2020-12-14 14:24 UTC|newest]

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

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=20201214140314.18544-14-richard.henderson@linaro.org \
    --to=richard.henderson@linaro.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).