xref: /qemu/include/disas/disas.h (revision ec150c7e09071bcf51bfaa8071fe23efb6df69f7)
12a6a4076SMarkus Armbruster #ifndef QEMU_DISAS_H
22a6a4076SMarkus Armbruster #define QEMU_DISAS_H
3b9adb4a6Sbellard 
4*ec150c7eSMarkus Armbruster #include "exec/hwaddr.h"
5376253ecSaliguori 
6ca20cf32SBlue Swirl #ifdef NEED_CPU_H
733c11879SPaolo Bonzini #include "cpu.h"
833c11879SPaolo Bonzini 
9b9adb4a6Sbellard /* Disassemble this for me please... (debugging). */
10c27004ecSbellard void disas(FILE *out, void *code, unsigned long size);
11d49190c4SPeter Crosthwaite void target_disas(FILE *out, CPUState *cpu, target_ulong code,
121d48474dSRichard Henderson                   target_ulong size);
13376253ecSaliguori 
14d49190c4SPeter Crosthwaite void monitor_disas(Monitor *mon, CPUState *cpu,
151d48474dSRichard Henderson                    target_ulong pc, int nb_insn, int is_physical);
16b9adb4a6Sbellard 
17b9adb4a6Sbellard /* Look up symbol for debugging purpose.  Returns "" if unknown. */
18c27004ecSbellard const char *lookup_symbol(target_ulong orig_addr);
19ca20cf32SBlue Swirl #endif
20b9adb4a6Sbellard 
2149918a75Spbrook struct syminfo;
2249918a75Spbrook struct elf32_sym;
2349918a75Spbrook struct elf64_sym;
2449918a75Spbrook 
259f9f0309SPaul Brook #if defined(CONFIG_USER_ONLY)
269f9f0309SPaul Brook typedef const char *(*lookup_symbol_t)(struct syminfo *s, target_ulong orig_addr);
279f9f0309SPaul Brook #else
28a8170e5eSAvi Kivity typedef const char *(*lookup_symbol_t)(struct syminfo *s, hwaddr orig_addr);
299f9f0309SPaul Brook #endif
3049918a75Spbrook 
3149918a75Spbrook struct syminfo {
3249918a75Spbrook     lookup_symbol_t lookup_symbol;
33e80cfcfcSbellard     unsigned int disas_num_syms;
3449918a75Spbrook     union {
3549918a75Spbrook       struct elf32_sym *elf32;
3649918a75Spbrook       struct elf64_sym *elf64;
3749918a75Spbrook     } disas_symtab;
38e80cfcfcSbellard     const char *disas_strtab;
39e80cfcfcSbellard     struct syminfo *next;
4049918a75Spbrook };
4149918a75Spbrook 
4249918a75Spbrook /* Filled in by elfload.c.  Simplistic, but will do for now. */
4349918a75Spbrook extern struct syminfo *syminfos;
44e80cfcfcSbellard 
452a6a4076SMarkus Armbruster #endif /* QEMU_DISAS_H */
46