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