]>
Commit | Line | Data |
---|---|---|
38b47b19 EC |
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 "qemu/plugin.h" | |
16 | #include "tcg/tcg.h" | |
17 | ||
18 | struct DisasContextBase; | |
19 | ||
20 | #ifdef CONFIG_PLUGIN | |
21 | ||
22 | bool plugin_gen_tb_start(CPUState *cpu, const TranslationBlock *tb); | |
23 | void plugin_gen_tb_end(CPUState *cpu); | |
24 | void plugin_gen_insn_start(CPUState *cpu, const struct DisasContextBase *db); | |
25 | void plugin_gen_insn_end(void); | |
26 | ||
27 | void plugin_gen_disable_mem_helpers(void); | |
28 | void plugin_gen_empty_mem_callback(TCGv addr, uint32_t info); | |
29 | ||
763f7e12 EC |
30 | static inline void plugin_insn_append(const void *from, size_t size) |
31 | { | |
32 | struct qemu_plugin_insn *insn = tcg_ctx->plugin_insn; | |
33 | ||
34 | if (insn == NULL) { | |
35 | return; | |
36 | } | |
37 | ||
38 | insn->data = g_byte_array_append(insn->data, from, size); | |
39 | } | |
40 | ||
38b47b19 EC |
41 | #else /* !CONFIG_PLUGIN */ |
42 | ||
43 | static inline | |
44 | bool plugin_gen_tb_start(CPUState *cpu, const TranslationBlock *tb) | |
45 | { | |
46 | return false; | |
47 | } | |
48 | ||
49 | static inline | |
50 | void plugin_gen_insn_start(CPUState *cpu, const struct DisasContextBase *db) | |
51 | { } | |
52 | ||
53 | static inline void plugin_gen_insn_end(void) | |
54 | { } | |
55 | ||
56 | static inline void plugin_gen_tb_end(CPUState *cpu) | |
57 | { } | |
58 | ||
59 | static inline void plugin_gen_disable_mem_helpers(void) | |
60 | { } | |
61 | ||
62 | static inline void plugin_gen_empty_mem_callback(TCGv addr, uint32_t info) | |
63 | { } | |
64 | ||
763f7e12 EC |
65 | static inline void plugin_insn_append(const void *from, size_t size) |
66 | { } | |
67 | ||
38b47b19 EC |
68 | #endif /* CONFIG_PLUGIN */ |
69 | ||
70 | #endif /* QEMU_PLUGIN_GEN_H */ | |
71 |