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