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