1 /*
2 * Copyright (C) 2017, Emilio G. Cota <cota@braap.org>
3 *
4 * License: GNU GPL, version 2 or later.
5 * See the COPYING file in the top-level directory.
6 *
7 * plugin-gen.h - TCG-dependent definitions for generating plugin code
8 *
9 * This header should be included only from plugin.c and C files that emit
10 * TCG code.
11 */
12 #ifndef QEMU_PLUGIN_GEN_H
13 #define QEMU_PLUGIN_GEN_H
14
15 #include "tcg/tcg.h"
16
17 struct DisasContextBase;
18
19 #ifdef CONFIG_PLUGIN
20
21 bool plugin_gen_tb_start(CPUState *cpu, const struct DisasContextBase *db);
22 void plugin_gen_tb_end(CPUState *cpu, size_t num_insns);
23 void plugin_gen_insn_start(CPUState *cpu, const struct DisasContextBase *db);
24 void plugin_gen_insn_end(void);
25
26 void plugin_gen_disable_mem_helpers(void);
27
28 #else /* !CONFIG_PLUGIN */
29
30 static inline
plugin_gen_tb_start(CPUState * cpu,const struct DisasContextBase * db)31 bool plugin_gen_tb_start(CPUState *cpu, const struct DisasContextBase *db)
32 {
33 return false;
34 }
35
36 static inline
plugin_gen_insn_start(CPUState * cpu,const struct DisasContextBase * db)37 void plugin_gen_insn_start(CPUState *cpu, const struct DisasContextBase *db)
38 { }
39
plugin_gen_insn_end(void)40 static inline void plugin_gen_insn_end(void)
41 { }
42
plugin_gen_tb_end(CPUState * cpu,size_t num_insns)43 static inline void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
44 { }
45
plugin_gen_disable_mem_helpers(void)46 static inline void plugin_gen_disable_mem_helpers(void)
47 { }
48
49 #endif /* CONFIG_PLUGIN */
50
51 #endif /* QEMU_PLUGIN_GEN_H */
52
53