xref: /qemu/include/disas/disas.h (revision d49190c4208f2c556c3a01962a81f8a85d522bb1)
1b9adb4a6Sbellard #ifndef _QEMU_DISAS_H
2b9adb4a6Sbellard #define _QEMU_DISAS_H
3b9adb4a6Sbellard 
4376253ecSaliguori #include "qemu-common.h"
5376253ecSaliguori 
6ca20cf32SBlue Swirl #ifdef NEED_CPU_H
7b9adb4a6Sbellard /* Disassemble this for me please... (debugging). */
8c27004ecSbellard void disas(FILE *out, void *code, unsigned long size);
9*d49190c4SPeter Crosthwaite void target_disas(FILE *out, CPUState *cpu, target_ulong code,
10f4359b9fSBlue Swirl                   target_ulong size, int flags);
11376253ecSaliguori 
12*d49190c4SPeter Crosthwaite void monitor_disas(Monitor *mon, CPUState *cpu,
133476562dSbellard                    target_ulong pc, int nb_insn, int is_physical, int flags);
14b9adb4a6Sbellard 
15b9adb4a6Sbellard /* Look up symbol for debugging purpose.  Returns "" if unknown. */
16c27004ecSbellard const char *lookup_symbol(target_ulong orig_addr);
17ca20cf32SBlue Swirl #endif
18b9adb4a6Sbellard 
1949918a75Spbrook struct syminfo;
2049918a75Spbrook struct elf32_sym;
2149918a75Spbrook struct elf64_sym;
2249918a75Spbrook 
239f9f0309SPaul Brook #if defined(CONFIG_USER_ONLY)
249f9f0309SPaul Brook typedef const char *(*lookup_symbol_t)(struct syminfo *s, target_ulong orig_addr);
259f9f0309SPaul Brook #else
26a8170e5eSAvi Kivity typedef const char *(*lookup_symbol_t)(struct syminfo *s, hwaddr orig_addr);
279f9f0309SPaul Brook #endif
2849918a75Spbrook 
2949918a75Spbrook struct syminfo {
3049918a75Spbrook     lookup_symbol_t lookup_symbol;
31e80cfcfcSbellard     unsigned int disas_num_syms;
3249918a75Spbrook     union {
3349918a75Spbrook       struct elf32_sym *elf32;
3449918a75Spbrook       struct elf64_sym *elf64;
3549918a75Spbrook     } disas_symtab;
36e80cfcfcSbellard     const char *disas_strtab;
37e80cfcfcSbellard     struct syminfo *next;
3849918a75Spbrook };
3949918a75Spbrook 
4049918a75Spbrook /* Filled in by elfload.c.  Simplistic, but will do for now. */
4149918a75Spbrook extern struct syminfo *syminfos;
42e80cfcfcSbellard 
43b9adb4a6Sbellard #endif /* _QEMU_DISAS_H */
44