12a6a4076SMarkus Armbruster #ifndef QEMU_DISAS_H 22a6a4076SMarkus Armbruster #define QEMU_DISAS_H 376cad711SPaolo Bonzini 476cad711SPaolo Bonzini /* Disassemble this for me please... (debugging). */ 5c0d691abSRichard Henderson #ifdef CONFIG_TCG 6b6235a75SRichard Henderson void disas(FILE *out, const void *code, size_t size); 7*4c833c60SRichard Henderson void target_disas(FILE *out, CPUState *cpu, const DisasContextBase *db); 8c0d691abSRichard Henderson #endif 976cad711SPaolo Bonzini 10b6235a75SRichard Henderson void monitor_disas(Monitor *mon, CPUState *cpu, uint64_t pc, 11b6235a75SRichard Henderson int nb_insn, bool is_physical); 1276cad711SPaolo Bonzini 13c0d691abSRichard Henderson #ifdef CONFIG_PLUGIN 14*4c833c60SRichard Henderson char *plugin_disas(CPUState *cpu, const DisasContextBase *db, 15*4c833c60SRichard Henderson uint64_t addr, size_t size); 16c0d691abSRichard Henderson #endif 17cbafa236SAlex Bennée 1876cad711SPaolo Bonzini /* Look up symbol for debugging purpose. Returns "" if unknown. */ 19b6235a75SRichard Henderson const char *lookup_symbol(uint64_t orig_addr); 2076cad711SPaolo Bonzini 2176cad711SPaolo Bonzini struct syminfo; 2276cad711SPaolo Bonzini struct elf32_sym; 2376cad711SPaolo Bonzini struct elf64_sym; 2476cad711SPaolo Bonzini 25b6235a75SRichard Henderson typedef const char *(*lookup_symbol_t)(struct syminfo *s, uint64_t orig_addr); 2676cad711SPaolo Bonzini 2776cad711SPaolo Bonzini struct syminfo { 2876cad711SPaolo Bonzini lookup_symbol_t lookup_symbol; 2976cad711SPaolo Bonzini unsigned int disas_num_syms; 3076cad711SPaolo Bonzini union { 3176cad711SPaolo Bonzini struct elf32_sym *elf32; 3276cad711SPaolo Bonzini struct elf64_sym *elf64; 3376cad711SPaolo Bonzini } disas_symtab; 3476cad711SPaolo Bonzini const char *disas_strtab; 3576cad711SPaolo Bonzini struct syminfo *next; 3676cad711SPaolo Bonzini }; 3776cad711SPaolo Bonzini 3876cad711SPaolo Bonzini /* Filled in by elfload.c. Simplistic, but will do for now. */ 3976cad711SPaolo Bonzini extern struct syminfo *syminfos; 4076cad711SPaolo Bonzini 412a6a4076SMarkus Armbruster #endif /* QEMU_DISAS_H */ 42