xref: /qemu/include/disas/disas.h (revision cbafa2362ab8d96af39d6b01a79ea4ed16d47dda)
12a6a4076SMarkus Armbruster #ifndef QEMU_DISAS_H
22a6a4076SMarkus Armbruster #define QEMU_DISAS_H
3b9adb4a6Sbellard 
4ec150c7eSMarkus 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 
17*cbafa236SAlex Bennée char *plugin_disas(CPUState *cpu, uint64_t addr, size_t size);
18*cbafa236SAlex Bennée 
19b9adb4a6Sbellard /* Look up symbol for debugging purpose.  Returns "" if unknown. */
20c27004ecSbellard const char *lookup_symbol(target_ulong orig_addr);
21ca20cf32SBlue Swirl #endif
22b9adb4a6Sbellard 
2349918a75Spbrook struct syminfo;
2449918a75Spbrook struct elf32_sym;
2549918a75Spbrook struct elf64_sym;
2649918a75Spbrook 
279f9f0309SPaul Brook #if defined(CONFIG_USER_ONLY)
289f9f0309SPaul Brook typedef const char *(*lookup_symbol_t)(struct syminfo *s, target_ulong orig_addr);
299f9f0309SPaul Brook #else
30a8170e5eSAvi Kivity typedef const char *(*lookup_symbol_t)(struct syminfo *s, hwaddr orig_addr);
319f9f0309SPaul Brook #endif
3249918a75Spbrook 
3349918a75Spbrook struct syminfo {
3449918a75Spbrook     lookup_symbol_t lookup_symbol;
35e80cfcfcSbellard     unsigned int disas_num_syms;
3649918a75Spbrook     union {
3749918a75Spbrook       struct elf32_sym *elf32;
3849918a75Spbrook       struct elf64_sym *elf64;
3949918a75Spbrook     } disas_symtab;
40e80cfcfcSbellard     const char *disas_strtab;
41e80cfcfcSbellard     struct syminfo *next;
4249918a75Spbrook };
4349918a75Spbrook 
4449918a75Spbrook /* Filled in by elfload.c.  Simplistic, but will do for now. */
4549918a75Spbrook extern struct syminfo *syminfos;
46e80cfcfcSbellard 
472a6a4076SMarkus Armbruster #endif /* QEMU_DISAS_H */
48