|
GDB (xrefs)
|
#include "defs.h"#include "arch-utils.h"#include "dis-asm.h"#include "frame.h"#include "frame-base.h"#include "frame-unwind.h"#include "gdbcore.h"#include "gdbtypes.h"#include "regcache.h"#include "regset.h"#include "symtab.h"#include "trad-frame.h"#include "value.h"#include <algorithm>#include "m88k-tdep.h"Go to the source code of this file.
Classes | |
| struct | m88k_frame_cache |
| struct | m88k_prologue_insn |
Macros | |
| #define | BITMASK(pos, width) (((0x1 << (width)) - 1) << (pos)) |
| #define | EXTRACT_FIELD(val, pos, width) ((val) >> (pos) & BITMASK (0, width)) |
| #define | SUBU_OFFSET(x) ((unsigned)(x & 0xFFFF)) |
| #define | ST_OFFSET(x) ((unsigned)((x) & 0xFFFF)) |
| #define | ST_SRC(x) EXTRACT_FIELD ((x), 21, 5) |
| #define | ADDU_OFFSET(x) ((unsigned)(x & 0xFFFF)) |
Functions | |
| static unsigned long | m88k_fetch_instruction (CORE_ADDR pc, enum bfd_endian byte_order) |
| static const char * | m88k_register_name (struct gdbarch *gdbarch, int regnum) |
| static struct type * | m88k_register_type (struct gdbarch *gdbarch, int regnum) |
| static CORE_ADDR | m88k_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr) |
| typedef | BP_MANIPULATION (m88k_break_insn) |
| static void | m88k_write_pc (struct regcache *regcache, CORE_ADDR pc) |
| static int | m88k_integral_or_pointer_p (const struct type *type) |
| static int | m88k_floating_p (const struct type *type) |
| static int | m88k_structure_or_union_p (const struct type *type) |
| static int | m88k_8_byte_align_p (struct type *type) |
| static int | m88k_in_register_p (struct type *type) |
| static CORE_ADDR | m88k_store_arguments (struct regcache *regcache, int nargs, struct value **args, CORE_ADDR sp) |
| static CORE_ADDR | m88k_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr) |
| static struct frame_id | m88k_dummy_id (struct gdbarch *arch, struct frame_info *this_frame) |
| static enum return_value_convention | m88k_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) |
| static CORE_ADDR | m88k_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR limit, struct m88k_frame_cache *cache) |
| static CORE_ADDR | m88k_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) |
| static struct m88k_frame_cache * | m88k_frame_cache (struct frame_info *this_frame, void **this_cache) |
| static void | m88k_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id) |
| static struct value * | m88k_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum) |
| static CORE_ADDR | m88k_frame_base_address (struct frame_info *this_frame, void **this_cache) |
| static void | m88k_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len) |
| static void | m88k_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache) |
| static struct gdbarch * | m88k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) |
| void | _initialize_m88k_tdep (void) |
Variables | |
| constexpr gdb_byte | m88k_break_insn [] = { 0xf0, 0x00, 0xd1, 0xff } |
| struct m88k_prologue_insn | m88k_prologue_insn_table [] |
| const int | m88k_max_prologue_size = 128 * M88K_INSN_SIZE |
| static const struct frame_unwind | m88k_frame_unwind |
| static const struct frame_base | m88k_frame_base |
| static const struct regset | m88k_gregset |
| #define ADDU_OFFSET | ( | x | ) | ((unsigned)(x & 0xFFFF)) |
Definition at line 452 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
| #define BITMASK | ( | pos, | |
| width | |||
| ) | (((0x1 << (width)) - 1) << (pos)) |
Definition at line 447 of file m88k-tdep.c.
| #define EXTRACT_FIELD | ( | val, | |
| pos, | |||
| width | |||
| ) | ((val) >> (pos) & BITMASK (0, width)) |
Definition at line 448 of file m88k-tdep.c.
| #define ST_OFFSET | ( | x | ) | ((unsigned)((x) & 0xFFFF)) |
Definition at line 450 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
| #define ST_SRC | ( | x | ) | EXTRACT_FIELD ((x), 21, 5) |
Definition at line 451 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
| #define SUBU_OFFSET | ( | x | ) | ((unsigned)(x & 0xFFFF)) |
Definition at line 449 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
| Enumerator | |
|---|---|
| M88K_PIA_SKIP | |
| M88K_PIA_NOTE_ST | |
| M88K_PIA_NOTE_STD | |
| M88K_PIA_NOTE_SP_ADJUSTMENT | |
| M88K_PIA_NOTE_FP_ASSIGNMENT | |
| M88K_PIA_NOTE_BRANCH | |
| M88K_PIA_NOTE_PROLOGUE_END | |
Definition at line 457 of file m88k-tdep.c.
| void _initialize_m88k_tdep | ( | void | ) |
Definition at line 866 of file m88k-tdep.c.
References gdbarch_register(), and m88k_gdbarch_init().
| typedef BP_MANIPULATION | ( | m88k_break_insn | ) |
Definition at line 104 of file m88k-tdep.c.
References frame_unwind_register_unsigned(), m88k_addr_bits_remove(), and M88K_SXIP_REGNUM.
|
static |
Definition at line 216 of file m88k-tdep.c.
References check_typedef(), m88k_floating_p(), m88k_integral_or_pointer_p(), m88k_structure_or_union_p(), TYPE_FIELD_TYPE, TYPE_LENGTH, and TYPE_NFIELDS.
Referenced by m88k_store_arguments().
Definition at line 87 of file m88k-tdep.c.
Referenced by BP_MANIPULATION(), and m88k_gdbarch_init().
|
static |
Definition at line 523 of file m88k-tdep.c.
References m88k_prologue_insn::action, trad_frame_saved_reg::addr, ADDU_OFFSET, m88k_frame_cache::fp_offset, gdbarch_byte_order(), m88k_prologue_insn::insn, m88k_fetch_instruction(), M88K_INSN_SIZE, M88K_PIA_NOTE_BRANCH, M88K_PIA_NOTE_FP_ASSIGNMENT, M88K_PIA_NOTE_PROLOGUE_END, M88K_PIA_NOTE_SP_ADJUSTMENT, M88K_PIA_NOTE_ST, M88K_PIA_NOTE_STD, M88K_PIA_SKIP, m88k_prologue_insn_table, M88K_R0_REGNUM, M88K_R1_REGNUM, M88K_R31_REGNUM, m88k_prologue_insn::mask, offset, regnum, m88k_frame_cache::saved_regs, m88k_frame_cache::sp_offset, ST_OFFSET, ST_SRC, and SUBU_OFFSET.
Referenced by m88k_frame_cache(), and m88k_skip_prologue().
|
static |
Definition at line 364 of file m88k-tdep.c.
References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and M88K_R31_REGNUM.
Referenced by m88k_gdbarch_init().
|
static |
Definition at line 40 of file m88k-tdep.c.
References read_memory_unsigned_integer().
Referenced by m88k_analyze_prologue().
|
static |
Definition at line 180 of file m88k-tdep.c.
References TYPE_CODE, TYPE_CODE_FLT, and TYPE_LENGTH.
Referenced by m88k_8_byte_align_p(), m88k_in_register_p(), and m88k_return_value().
|
static |
Definition at line 752 of file m88k-tdep.c.
References m88k_frame_cache::base, m88k_frame_cache::fp_offset, m88k_frame_cache(), and m88k_frame_cache::sp_offset.
|
static |
Definition at line 645 of file m88k-tdep.c.
References trad_frame_saved_reg::addr, m88k_frame_cache::base, m88k_frame_cache::fp_offset, FRAME_OBSTACK_ZALLOC, get_frame_arch(), get_frame_func(), get_frame_pc(), get_frame_register_unsigned(), m88k_analyze_prologue(), M88K_R0_REGNUM, M88K_R1_REGNUM, M88K_R30_REGNUM, M88K_R31_REGNUM, M88K_SXIP_REGNUM, m88k_frame_cache::pc, regnum, m88k_frame_cache::saved_regs, m88k_frame_cache::sp_offset, trad_frame_alloc_saved_regs(), and trad_frame_set_value().
Referenced by m88k_frame_base_address(), m88k_frame_prev_register(), and m88k_frame_this_id().
|
static |
Definition at line 715 of file m88k-tdep.c.
References frame_unwind_got_constant(), m88k_frame_cache(), M88K_SFIP_REGNUM, M88K_SNIP_REGNUM, M88K_SXIP_REGNUM, regnum, release_value(), m88k_frame_cache::saved_regs, trad_frame_get_prev_register(), value_as_long(), and value_free().
|
static |
Definition at line 702 of file m88k-tdep.c.
References m88k_frame_cache::base, frame_id_build(), m88k_frame_cache(), and m88k_frame_cache::pc.
|
static |
Definition at line 813 of file m88k-tdep.c.
References core_addr_lessthan(), floatformats_ieee_double, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_list_lookup_by_info(), m88k_addr_bits_remove(), m88k_dummy_id(), m88k_frame_base, m88k_frame_unwind, m88k_iterate_over_regset_sections(), M88K_NUM_REGS, m88k_push_dummy_call(), M88K_R31_REGNUM, m88k_register_name(), m88k_register_type(), m88k_return_value(), m88k_skip_prologue(), M88K_SXIP_REGNUM, m88k_write_pc(), set_gdbarch_addr_bits_remove(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_dummy_id(), set_gdbarch_inner_than(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_unwind_pc(), and set_gdbarch_write_pc().
Referenced by _initialize_m88k_tdep().
|
static |
Definition at line 240 of file m88k-tdep.c.
References m88k_floating_p(), m88k_integral_or_pointer_p(), m88k_structure_or_union_p(), and TYPE_LENGTH.
Referenced by m88k_store_arguments().
|
static |
Definition at line 146 of file m88k-tdep.c.
References TYPE_CODE, TYPE_CODE_BOOL, TYPE_CODE_CHAR, TYPE_CODE_ENUM, TYPE_CODE_INT, TYPE_CODE_PTR, TYPE_CODE_RANGE, TYPE_CODE_REF, TYPE_CODE_RVALUE_REF, and TYPE_LENGTH.
Referenced by m88k_8_byte_align_p(), m88k_in_register_p(), m88k_return_value(), and m88k_store_arguments().
|
static |
Definition at line 803 of file m88k-tdep.c.
References m88k_gregset, and M88K_NUM_REGS.
Referenced by m88k_gdbarch_init().
|
static |
Definition at line 341 of file m88k-tdep.c.
References gdb_assert, M88K_R12_REGNUM, M88K_R1_REGNUM, M88K_R31_REGNUM, m88k_store_arguments(), and regcache_raw_write_unsigned().
Referenced by m88k_gdbarch_init().
|
static |
Definition at line 71 of file m88k-tdep.c.
References builtin_type::builtin_data_ptr, builtin_type::builtin_func_ptr, builtin_type::builtin_int32, builtin_type(), M88K_R1_REGNUM, M88K_R30_REGNUM, M88K_R31_REGNUM, M88K_SFIP_REGNUM, M88K_SXIP_REGNUM, and regnum.
Referenced by m88k_gdbarch_init().
|
static |
Definition at line 380 of file m88k-tdep.c.
References gdb_assert, m88k_floating_p(), m88k_integral_or_pointer_p(), M88K_R2_REGNUM, M88K_R3_REGNUM, regcache_cooked_read(), regcache_cooked_write(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, and TYPE_LENGTH.
Referenced by m88k_gdbarch_init().
Definition at line 625 of file m88k-tdep.c.
References symtab_and_line::end, find_pc_line(), find_pc_partial_function(), m88k_analyze_prologue(), m88k_max_prologue_size, and symtab_and_line::pc.
Referenced by m88k_gdbarch_init().
|
static |
Definition at line 252 of file m88k-tdep.c.
References align_down(), regcache::arch(), gdb_assert, m88k_8_byte_align_p(), m88k_in_register_p(), m88k_integral_or_pointer_p(), M88K_R2_REGNUM, regcache_raw_write(), regnum, TYPE_LENGTH, value_cast(), value_contents(), value_type(), and write_memory().
Referenced by m88k_push_dummy_call().
|
static |
Definition at line 199 of file m88k-tdep.c.
References TYPE_CODE, TYPE_CODE_STRUCT, and TYPE_CODE_UNION.
Referenced by m88k_8_byte_align_p(), and m88k_in_register_p().
|
static |
Definition at line 778 of file m88k-tdep.c.
References M88K_NUM_REGS, regcache_raw_supply(), and regnum.
Definition at line 116 of file m88k-tdep.c.
References M88K_SFIP_REGNUM, M88K_SNIP_REGNUM, M88K_SXIP_REGNUM, and regcache_cooked_write_unsigned().
Referenced by m88k_gdbarch_init().
| constexpr gdb_byte m88k_break_insn[] = { 0xf0, 0x00, 0xd1, 0xff } |
Definition at line 102 of file m88k-tdep.c.
|
static |
Definition at line 762 of file m88k-tdep.c.
Referenced by m88k_gdbarch_init().
|
static |
Definition at line 740 of file m88k-tdep.c.
Referenced by m88k_gdbarch_init().
|
static |
Definition at line 794 of file m88k-tdep.c.
Referenced by m88k_iterate_over_regset_sections().
| const int m88k_max_prologue_size = 128 * M88K_INSN_SIZE |
Definition at line 619 of file m88k-tdep.c.
Referenced by m88k_skip_prologue().
| struct m88k_prologue_insn m88k_prologue_insn_table[] |
Definition at line 477 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
1.8.14