[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 18/23] accel/tcg: Un-inline retaddr helpers to 'user-retaddr.h
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH v2 18/23] accel/tcg: Un-inline retaddr helpers to 'user-retaddr.h' |
Date: |
Tue, 12 Dec 2023 13:33:54 +0100 |
set_helper_retaddr() is only used in accel/tcg/user-exec.c.
clear_helper_retaddr() is only used in accel/tcg/user-exec.c
and accel/tcg/user-exec.c.
No need to expose their definitions to all user-emulation
files including "exec/cpu_ldst.h", move them to a new
"user-retaddr.h" header (restricted to accel/tcg/).
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
accel/tcg/user-retaddr.h | 28 ++++++++++++++++++++++++++++
include/exec/cpu_ldst.h | 28 ++--------------------------
accel/tcg/cpu-exec.c | 3 +++
accel/tcg/user-exec.c | 1 +
4 files changed, 34 insertions(+), 26 deletions(-)
create mode 100644 accel/tcg/user-retaddr.h
diff --git a/accel/tcg/user-retaddr.h b/accel/tcg/user-retaddr.h
new file mode 100644
index 0000000000..e0f57e1994
--- /dev/null
+++ b/accel/tcg/user-retaddr.h
@@ -0,0 +1,28 @@
+#ifndef ACCEL_TCG_USER_RETADDR_H
+#define ACCEL_TCG_USER_RETADDR_H
+
+#include "qemu/atomic.h"
+
+extern __thread uintptr_t helper_retaddr;
+
+static inline void set_helper_retaddr(uintptr_t ra)
+{
+ helper_retaddr = ra;
+ /*
+ * Ensure that this write is visible to the SIGSEGV handler that
+ * may be invoked due to a subsequent invalid memory operation.
+ */
+ signal_barrier();
+}
+
+static inline void clear_helper_retaddr(void)
+{
+ /*
+ * Ensure that previous memory operations have succeeded before
+ * removing the data visible to the signal handler.
+ */
+ signal_barrier();
+ helper_retaddr = 0;
+}
+
+#endif
diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
index 6061e33ac9..25e7239cc5 100644
--- a/include/exec/cpu_ldst.h
+++ b/include/exec/cpu_ldst.h
@@ -300,31 +300,7 @@ Int128 cpu_atomic_cmpxchgo_be_mmu(CPUArchState *env,
abi_ptr addr,
Int128 cmpv, Int128 newv,
MemOpIdx oi, uintptr_t retaddr);
-#if defined(CONFIG_USER_ONLY)
-
-extern __thread uintptr_t helper_retaddr;
-
-static inline void set_helper_retaddr(uintptr_t ra)
-{
- helper_retaddr = ra;
- /*
- * Ensure that this write is visible to the SIGSEGV handler that
- * may be invoked due to a subsequent invalid memory operation.
- */
- signal_barrier();
-}
-
-static inline void clear_helper_retaddr(void)
-{
- /*
- * Ensure that previous memory operations have succeeded before
- * removing the data visible to the signal handler.
- */
- signal_barrier();
- helper_retaddr = 0;
-}
-
-#else
+#if !defined(CONFIG_USER_ONLY)
#include "tcg/oversized-guest.h"
@@ -376,7 +352,7 @@ static inline CPUTLBEntry *tlb_entry(CPUState *cpu,
uintptr_t mmu_idx,
return &cpu->neg.tlb.f[mmu_idx].table[tlb_index(cpu, mmu_idx, addr)];
}
-#endif /* defined(CONFIG_USER_ONLY) */
+#endif /* !defined(CONFIG_USER_ONLY) */
#if TARGET_BIG_ENDIAN
# define cpu_lduw_data cpu_lduw_be_data
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index c938eb96f8..e591992d0c 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -44,6 +44,9 @@
#include "tb-context.h"
#include "internal-common.h"
#include "internal-target.h"
+#if defined(CONFIG_USER_ONLY)
+#include "user-retaddr.h"
+#endif
/* -icount align implementation. */
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
index 68b252cb8e..2575f0842f 100644
--- a/accel/tcg/user-exec.c
+++ b/accel/tcg/user-exec.c
@@ -31,6 +31,7 @@
#include "tcg/tcg-ldst.h"
#include "internal-common.h"
#include "internal-target.h"
+#include "user-retaddr.h"
__thread uintptr_t helper_retaddr;
--
2.41.0
- [PATCH v2 14/23] exec/cpu-all: Remove unused tswapls() definitions, (continued)
- [PATCH v2 14/23] exec/cpu-all: Remove unused tswapls() definitions, Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 13/23] exec/cpu-all: Reduce 'qemu/rcu.h' header inclusion, Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 15/23] exec: Declare target_words_bigendian() in 'exec/tswap.h', Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 16/23] exec: Move [b]tswapl() declarations to 'exec/user/tswap-target.h', Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 17/23] target/ppc/excp_helper: Avoid 'abi_ptr' in system emulation, Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 18/23] accel/tcg: Un-inline retaddr helpers to 'user-retaddr.h',
Philippe Mathieu-Daudé <=
- [PATCH v2 19/23] exec/user: Do not include 'cpu.h' in 'abitypes.h', Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 20/23] exec: Declare abi_ptr type in its own 'abi_ptr.h' header, Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 22/23] exec/cpu-all: Extract page-protection definitions to page-prot-common.h, Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 23/23] exec/cpu_ldst: Avoid including 'cpu.h', Philippe Mathieu-Daudé, 2023/12/12
- [PATCH v2 21/23] exec/cpu-all: Restrict inclusion of 'exec/user/guest-base.h', Philippe Mathieu-Daudé, 2023/12/12
- Re: [PATCH v2 00/23] exec: Rework of various headers (user focused), Philippe Mathieu-Daudé, 2023/12/12