From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PATCH v2 20/52] tcg: Move TCGHelperInfo and dependencies to tcg/helper-info.h
Date: Tue, 23 May 2023 06:52:50 -0700 [thread overview]
Message-ID: <20230523135322.678948-21-richard.henderson@linaro.org> (raw)
In-Reply-To: <20230523135322.678948-1-richard.henderson@linaro.org>
This will be required outside of tcg-internal.h soon.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
include/tcg/helper-info.h | 59 +++++++++++++++++++++++++++++++++++++++
tcg/tcg-internal.h | 47 +------------------------------
2 files changed, 60 insertions(+), 46 deletions(-)
create mode 100644 include/tcg/helper-info.h
diff --git a/include/tcg/helper-info.h b/include/tcg/helper-info.h
new file mode 100644
index 0000000000..f65f81c2e7
--- /dev/null
+++ b/include/tcg/helper-info.h
@@ -0,0 +1,59 @@
+/*
+ * TCG Helper Infomation Structure
+ *
+ * Copyright (c) 2023 Linaro Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef TCG_HELPER_INFO_H
+#define TCG_HELPER_INFO_H
+
+#ifdef CONFIG_TCG_INTERPRETER
+#include <ffi.h>
+#endif
+
+/*
+ * Describe the calling convention of a given argument type.
+ */
+typedef enum {
+ TCG_CALL_RET_NORMAL, /* by registers */
+ TCG_CALL_RET_BY_REF, /* for i128, by reference */
+ TCG_CALL_RET_BY_VEC, /* for i128, by vector register */
+} TCGCallReturnKind;
+
+typedef enum {
+ TCG_CALL_ARG_NORMAL, /* by registers (continuing onto stack) */
+ TCG_CALL_ARG_EVEN, /* like normal, but skipping odd slots */
+ TCG_CALL_ARG_EXTEND, /* for i32, as a sign/zero-extended i64 */
+ TCG_CALL_ARG_EXTEND_U, /* ... as a zero-extended i64 */
+ TCG_CALL_ARG_EXTEND_S, /* ... as a sign-extended i64 */
+ TCG_CALL_ARG_BY_REF, /* for i128, by reference, first */
+ TCG_CALL_ARG_BY_REF_N, /* ... by reference, subsequent */
+} TCGCallArgumentKind;
+
+typedef struct TCGCallArgumentLoc {
+ TCGCallArgumentKind kind : 8;
+ unsigned arg_slot : 8;
+ unsigned ref_slot : 8;
+ unsigned arg_idx : 4;
+ unsigned tmp_subindex : 2;
+} TCGCallArgumentLoc;
+
+typedef struct TCGHelperInfo {
+ void *func;
+ const char *name;
+#ifdef CONFIG_TCG_INTERPRETER
+ ffi_cif *cif;
+#endif
+ unsigned typemask : 32;
+ unsigned flags : 8;
+ unsigned nr_in : 8;
+ unsigned nr_out : 8;
+ TCGCallReturnKind out_kind : 8;
+
+ /* Maximum physical arguments are constrained by TCG_TYPE_I128. */
+ TCGCallArgumentLoc in[MAX_CALL_IARGS * (128 / TCG_TARGET_REG_BITS)];
+} TCGHelperInfo;
+
+#endif /* TCG_HELPER_INFO_H */
diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h
index 67b698bd5c..fbe62b31b8 100644
--- a/tcg/tcg-internal.h
+++ b/tcg/tcg-internal.h
@@ -25,55 +25,10 @@
#ifndef TCG_INTERNAL_H
#define TCG_INTERNAL_H
-#ifdef CONFIG_TCG_INTERPRETER
-#include <ffi.h>
-#endif
+#include "tcg/helper-info.h"
#define TCG_HIGHWATER 1024
-/*
- * Describe the calling convention of a given argument type.
- */
-typedef enum {
- TCG_CALL_RET_NORMAL, /* by registers */
- TCG_CALL_RET_BY_REF, /* for i128, by reference */
- TCG_CALL_RET_BY_VEC, /* for i128, by vector register */
-} TCGCallReturnKind;
-
-typedef enum {
- TCG_CALL_ARG_NORMAL, /* by registers (continuing onto stack) */
- TCG_CALL_ARG_EVEN, /* like normal, but skipping odd slots */
- TCG_CALL_ARG_EXTEND, /* for i32, as a sign/zero-extended i64 */
- TCG_CALL_ARG_EXTEND_U, /* ... as a zero-extended i64 */
- TCG_CALL_ARG_EXTEND_S, /* ... as a sign-extended i64 */
- TCG_CALL_ARG_BY_REF, /* for i128, by reference, first */
- TCG_CALL_ARG_BY_REF_N, /* ... by reference, subsequent */
-} TCGCallArgumentKind;
-
-typedef struct TCGCallArgumentLoc {
- TCGCallArgumentKind kind : 8;
- unsigned arg_slot : 8;
- unsigned ref_slot : 8;
- unsigned arg_idx : 4;
- unsigned tmp_subindex : 2;
-} TCGCallArgumentLoc;
-
-typedef struct TCGHelperInfo {
- void *func;
- const char *name;
-#ifdef CONFIG_TCG_INTERPRETER
- ffi_cif *cif;
-#endif
- unsigned typemask : 32;
- unsigned flags : 8;
- unsigned nr_in : 8;
- unsigned nr_out : 8;
- TCGCallReturnKind out_kind : 8;
-
- /* Maximum physical arguments are constrained by TCG_TYPE_I128. */
- TCGCallArgumentLoc in[MAX_CALL_IARGS * (128 / TCG_TARGET_REG_BITS)];
-} TCGHelperInfo;
-
extern TCGContext tcg_init_ctx;
extern TCGContext **tcg_ctxs;
extern unsigned int tcg_cur_ctxs;
--
2.34.1
next prev parent reply other threads:[~2023-05-23 14:05 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-23 13:52 [PATCH v2 00/52] tcg: Build once for system, once for user Richard Henderson
2023-05-23 13:52 ` [PATCH v2 01/52] tcg/ppc: Remove TARGET_LONG_BITS, TCG_TYPE_TL Richard Henderson
2023-05-23 13:52 ` [PATCH v2 02/52] tcg/riscv: " Richard Henderson
2023-05-23 13:52 ` [PATCH v2 03/52] tcg/s390x: " Richard Henderson
2023-05-23 13:52 ` [PATCH v2 04/52] tcg/sparc64: " Richard Henderson
2023-05-23 13:52 ` [PATCH v2 05/52] tcg: Move TCG_TYPE_TL from tcg.h to tcg-op.h Richard Henderson
2023-05-23 16:28 ` Philippe Mathieu-Daudé
2023-05-23 13:52 ` [PATCH v2 06/52] tcg: Widen CPUTLBEntry comparators to 64-bits Richard Henderson
2023-05-23 13:52 ` [PATCH v2 07/52] tcg: Add tlb_fast_offset to TCGContext Richard Henderson
2023-05-23 13:52 ` [PATCH v2 08/52] tcg: Remove TCG_TARGET_TLB_DISPLACEMENT_BITS Richard Henderson
2023-05-23 16:29 ` Philippe Mathieu-Daudé
2023-05-23 13:52 ` [PATCH v2 09/52] *: Add missing includes of qemu/error-report.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 10/52] *: Add missing includes of tcg/debug-assert.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 11/52] *: Add missing includes of tcg/tcg.h Richard Henderson
2023-05-23 16:31 ` Philippe Mathieu-Daudé
2023-05-23 13:52 ` [PATCH v2 12/52] tcg: Split out tcg-target-reg-bits.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 13/52] target/arm: Fix test of TCG_OVERSIZED_GUEST Richard Henderson
2023-05-23 13:52 ` [PATCH v2 14/52] tcg: Split out tcg/oversized-guest.h Richard Henderson
2023-05-23 16:33 ` Philippe Mathieu-Daudé
2023-05-23 13:52 ` [PATCH v2 15/52] tcg: Move TCGv, dup_const_tl definitions to tcg-op.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 16/52] tcg: Split tcg/tcg-op-common.h from tcg/tcg-op.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 17/52] target/arm: Include helper-gen.h in translator.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 18/52] target/hexagon: Include helper-gen.h where needed Richard Henderson
2023-05-23 13:52 ` [PATCH v2 19/52] tcg: Remove outdated comments in helper-head.h Richard Henderson
2023-05-23 13:52 ` Richard Henderson [this message]
2023-05-23 13:52 ` [PATCH v2 21/52] tcg: Pass TCGHelperInfo to tcg_gen_callN Richard Henderson
2023-05-23 13:52 ` [PATCH v2 22/52] tcg: Move temp_idx and tcgv_i32_temp debug out of line Richard Henderson
2023-05-23 13:52 ` [PATCH v2 23/52] tcg: Split tcg_gen_callN Richard Henderson
2023-05-23 13:52 ` [PATCH v2 24/52] tcg: Split helper-gen.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 25/52] tcg: Split helper-proto.h Richard Henderson
2023-05-23 13:52 ` [PATCH v2 26/52] tcg: Add insn_start_words to TCGContext Richard Henderson
2023-05-23 13:52 ` [PATCH v2 27/52] tcg: Add guest_mo " Richard Henderson
2023-05-23 13:52 ` [PATCH v2 28/52] tcg: Move TLB_FLAGS_MASK check out of get_alignment_bits Richard Henderson
2023-05-23 13:52 ` [PATCH v2 29/52] tcg: Split tcg/tcg-op-gvec.h Richard Henderson
2023-05-23 13:53 ` [PATCH v2 30/52] tcg: Remove NO_CPU_IO_DEFS Richard Henderson
2023-05-23 13:53 ` [PATCH v2 31/52] exec-all: Widen tb_page_addr_t for user-only Richard Henderson
2023-05-23 13:53 ` [PATCH v2 32/52] exec-all: Widen TranslationBlock pc and cs_base to 64-bits Richard Henderson
2023-05-23 16:36 ` Philippe Mathieu-Daudé
2023-05-23 13:53 ` [PATCH v2 33/52] tcg: Remove DEBUG_DISAS Richard Henderson
2023-05-23 16:37 ` Philippe Mathieu-Daudé
2023-05-23 13:53 ` [PATCH v2 34/52] tcg: Remove USE_TCG_OPTIMIZATIONS Richard Henderson
2023-05-23 16:37 ` Philippe Mathieu-Daudé
2023-05-23 13:53 ` [PATCH v2 35/52] tcg: Spit out exec/translation-block.h Richard Henderson
2023-05-23 13:53 ` [PATCH v2 36/52] include/exec: Remove CODE_GEN_AVG_BLOCK_SIZE Richard Henderson
2023-05-23 13:53 ` [PATCH v2 37/52] accel/tcg: Move most of gen-icount.h into translator.c Richard Henderson
2023-05-23 13:53 ` [PATCH v2 38/52] accel/tcg: Introduce translator_io_start Richard Henderson
2023-05-23 13:53 ` [PATCH v2 39/52] accel/tcg: Move translator_fake_ldb out of line Richard Henderson
2023-05-23 13:53 ` [PATCH v2 40/52] target/arm: Tidy helpers for translation Richard Henderson
2023-05-23 13:53 ` [PATCH v2 41/52] target/mips: " Richard Henderson
2023-05-23 13:53 ` [PATCH v2 42/52] *: Add missing includes of exec/translation-block.h Richard Henderson
2023-05-23 13:53 ` [PATCH v2 43/52] *: Add missing includes of exec/exec-all.h Richard Henderson
2023-05-23 13:53 ` [PATCH v2 44/52] accel/tcg: Tidy includes for translator.[ch] Richard Henderson
2023-05-23 13:53 ` [PATCH v2 45/52] tcg: Define IN_TCG Richard Henderson
2023-05-23 16:45 ` Philippe Mathieu-Daudé
2023-05-23 16:50 ` Philippe Mathieu-Daudé
2023-05-24 0:26 ` Richard Henderson
2023-05-23 13:53 ` [PATCH v2 46/52] tcg: Fix PAGE/PROT confusion Richard Henderson
2023-05-23 13:53 ` [PATCH v2 47/52] tcg: Move env defines out of NEED_CPU_H in helper-head.h Richard Henderson
2023-05-23 13:53 ` [PATCH v2 48/52] tcg: Remove target-specific headers from tcg.[ch] Richard Henderson
2023-05-23 13:53 ` [PATCH v2 49/52] plugins: Move plugin_insn_append to translator.c Richard Henderson
2023-05-23 13:53 ` [PATCH v2 50/52] plugins: Drop unused headers from exec/plugin-gen.h Richard Henderson
2023-05-23 13:53 ` [PATCH v2 51/52] exec/poison: Do not poison CONFIG_SOFTMMU Richard Henderson
2023-05-23 13:53 ` [PATCH v2 52/52] tcg: Build once for system and once for user-only Richard Henderson
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=20230523135322.678948-21-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).