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