]> git.proxmox.com Git - mirror_qemu.git/blame - scripts/tracetool/format/tcg_helper_wrapper_h.py
tracing: remove the trace-tcg includes from the build
[mirror_qemu.git] / scripts / tracetool / format / tcg_helper_wrapper_h.py
CommitLineData
f4654226
LV
1# -*- coding: utf-8 -*-
2
3"""
4Generate trace/generated-helpers-wrappers.h.
5"""
6
7__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
3d211d9f 8__copyright__ = "Copyright 2012-2016, Lluís Vilanova <vilanova@ac.upc.edu>"
f4654226
LV
9__license__ = "GPL version 2 or (at your option) any later version"
10
11__maintainer__ = "Stefan Hajnoczi"
f892b494 12__email__ = "stefanha@redhat.com"
f4654226
LV
13
14
15from tracetool import out
16from tracetool.transform import *
3d211d9f 17import tracetool.vcpu
f4654226
LV
18
19
80dd5c49 20def generate(events, backend, group):
f4654226
LV
21 events = [e for e in events
22 if "disable" not in e.properties]
23
24 out('/* This file is autogenerated by tracetool, do not edit. */',
25 '',
26 '#define tcg_temp_new_nop(v) (v)',
27 '#define tcg_temp_free_nop(v)',
28 '',
29 )
30
31 for e in events:
32 if "tcg-exec" not in e.properties:
33 continue
34
35 # tracetool.generate always transforms types to host
3d211d9f 36 e_args = tracetool.vcpu.transform_args("tcg_helper_c", e.original, "wrapper")
f4654226
LV
37
38 # mixed-type to TCG helper bridge
39 args_tcg_compat = e_args.transform(HOST_2_TCG_COMPAT)
40
41 code_new = [
42 "%(tcg_type)s __%(name)s = %(tcg_func)s(%(name)s);" %
43 {"tcg_type": transform_type(type_, HOST_2_TCG),
44 "tcg_func": transform_type(type_, HOST_2_TCG_TMP_NEW),
45 "name": name}
46 for (type_, name) in args_tcg_compat
47 ]
48
49 code_free = [
50 "%(tcg_func)s(__%(name)s);" %
51 {"tcg_func": transform_type(type_, HOST_2_TCG_TMP_FREE),
52 "name": name}
53 for (type_, name) in args_tcg_compat
54 ]
55
56 gen_name = "gen_helper_" + e.api()
57
58 out('static inline void %(name)s(%(args)s)',
59 '{',
60 ' %(code_new)s',
61 ' %(proxy_name)s(%(tmp_names)s);',
62 ' %(code_free)s',
63 '}',
64 name=gen_name,
65 args=e_args,
66 proxy_name=gen_name + "_proxy",
67 code_new="\n ".join(code_new),
68 code_free="\n ".join(code_free),
69 tmp_names=", ".join(["__%s" % name for _, name in e_args]),
70 )