tcg: Introduce TCGCallReturnKind and TCGCallArgumentKind
authorRichard Henderson <richard.henderson@linaro.org>
Sun, 16 Oct 2022 02:47:00 +0000 (13:47 +1100)
committerRichard Henderson <richard.henderson@linaro.org>
Thu, 5 Jan 2023 19:41:28 +0000 (11:41 -0800)
Prepare to replace a bunch of separate ifdefs with a
consistent way to describe the ABI of a function call.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
tcg/tcg-internal.h

index 2c06b5116a4066c27920f0626dae7cf2a20f3f90..f574743ff87ae01eb84523a4ecd207a3c577f18c 100644 (file)
 
 #define TCG_HIGHWATER 1024
 
+/*
+ * Describe the calling convention of a given argument type.
+ */
+typedef enum {
+    TCG_CALL_RET_NORMAL,         /* by registers */
+} 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 */
+} TCGCallArgumentKind;
+
 typedef struct TCGHelperInfo {
     void *func;
     const char *name;