xref: /openbmc/qemu/include/disas/disas.h (revision 2b01688380103acc2a9cd197b964d643fceba2a9)
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