virtio-blk: don't lock AioContext in the submission code path
[qemu/kevin.git] / include / exec / helper-info.c.inc
blob530d2e6d3560d832617e950b6636a5f68bf0bf1b
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Helper file for declaring TCG helper functions.
4  * This one expands info structures for tcg helpers.
5  * Define HELPER_H for the header file to be expanded.
6  */
8 #include "tcg/tcg.h"
9 #include "tcg/helper-info.h"
10 #include "exec/helper-head.h"
13  * Need one more level of indirection before stringification
14  * to get all the macros expanded first.
15  */
16 #define str(s) #s
18 #define DEF_HELPER_FLAGS_0(NAME, FLAGS, RET)                            \
19     TCGHelperInfo glue(helper_info_, NAME) = {                          \
20         .func = HELPER(NAME), .name = str(NAME),                        \
21         .flags = FLAGS | dh_callflag(RET),                              \
22         .typemask = dh_typemask(RET, 0)                                 \
23     };
25 #define DEF_HELPER_FLAGS_1(NAME, FLAGS, RET, T1)                        \
26     TCGHelperInfo glue(helper_info_, NAME) = {                          \
27         .func = HELPER(NAME), .name = str(NAME),                        \
28         .flags = FLAGS | dh_callflag(RET),                              \
29         .typemask = dh_typemask(RET, 0) | dh_typemask(T1, 1)            \
30     };
32 #define DEF_HELPER_FLAGS_2(NAME, FLAGS, RET, T1, T2)                    \
33     TCGHelperInfo glue(helper_info_, NAME) = {                          \
34         .func = HELPER(NAME), .name = str(NAME),                        \
35         .flags = FLAGS | dh_callflag(RET),                              \
36         .typemask = dh_typemask(RET, 0) | dh_typemask(T1, 1)            \
37                   | dh_typemask(T2, 2)                                  \
38     };
40 #define DEF_HELPER_FLAGS_3(NAME, FLAGS, RET, T1, T2, T3)                \
41     TCGHelperInfo glue(helper_info_, NAME) = {                          \
42         .func = HELPER(NAME), .name = str(NAME),                        \
43         .flags = FLAGS | dh_callflag(RET),                              \
44         .typemask = dh_typemask(RET, 0) | dh_typemask(T1, 1)            \
45                   | dh_typemask(T2, 2) | dh_typemask(T3, 3)             \
46     };
48 #define DEF_HELPER_FLAGS_4(NAME, FLAGS, RET, T1, T2, T3, T4)            \
49     TCGHelperInfo glue(helper_info_, NAME) = {                          \
50         .func = HELPER(NAME), .name = str(NAME),                        \
51         .flags = FLAGS | dh_callflag(RET),                              \
52         .typemask = dh_typemask(RET, 0) | dh_typemask(T1, 1)            \
53                   | dh_typemask(T2, 2) | dh_typemask(T3, 3)             \
54                   | dh_typemask(T4, 4)                                  \
55     };
57 #define DEF_HELPER_FLAGS_5(NAME, FLAGS, RET, T1, T2, T3, T4, T5)        \
58     TCGHelperInfo glue(helper_info_, NAME) = {                          \
59         .func = HELPER(NAME), .name = str(NAME),                        \
60         .flags = FLAGS | dh_callflag(RET),                              \
61         .typemask = dh_typemask(RET, 0) | dh_typemask(T1, 1)            \
62                   | dh_typemask(T2, 2) | dh_typemask(T3, 3)             \
63                   | dh_typemask(T4, 4) | dh_typemask(T5, 5)             \
64     };
66 #define DEF_HELPER_FLAGS_6(NAME, FLAGS, RET, T1, T2, T3, T4, T5, T6)    \
67     TCGHelperInfo glue(helper_info_, NAME) = {                          \
68         .func = HELPER(NAME), .name = str(NAME),                        \
69         .flags = FLAGS | dh_callflag(RET),                              \
70         .typemask = dh_typemask(RET, 0) | dh_typemask(T1, 1)            \
71                   | dh_typemask(T2, 2) | dh_typemask(T3, 3)             \
72                   | dh_typemask(T4, 4) | dh_typemask(T5, 5)             \
73                   | dh_typemask(T6, 6)                                  \
74     };
76 #define DEF_HELPER_FLAGS_7(NAME, FLAGS, RET, T1, T2, T3, T4, T5, T6, T7) \
77     TCGHelperInfo glue(helper_info_, NAME) = {                          \
78         .func = HELPER(NAME), .name = str(NAME),                        \
79         .flags = FLAGS | dh_callflag(RET),                              \
80         .typemask = dh_typemask(RET, 0) | dh_typemask(T1, 1)            \
81                   | dh_typemask(T2, 2) | dh_typemask(T3, 3)             \
82                   | dh_typemask(T4, 4) | dh_typemask(T5, 5)             \
83                   | dh_typemask(T6, 6) | dh_typemask(T7, 7)             \
84     };
86 #include HELPER_H
88 #undef str
89 #undef DEF_HELPER_FLAGS_0
90 #undef DEF_HELPER_FLAGS_1
91 #undef DEF_HELPER_FLAGS_2
92 #undef DEF_HELPER_FLAGS_3
93 #undef DEF_HELPER_FLAGS_4
94 #undef DEF_HELPER_FLAGS_5
95 #undef DEF_HELPER_FLAGS_6
96 #undef DEF_HELPER_FLAGS_7