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 "gdb_assert.h"
#include "gdb_string.h"
#include "m88k-tdep.h"
Go to the source code of this file.
#define ADDU_OFFSET | ( | x | ) | ((unsigned)(x & 0xFFFF)) |
Definition at line 458 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
#define BITMASK | ( | pos, | |
width | |||
) | (((0x1 << (width)) - 1) << (pos)) |
Definition at line 453 of file m88k-tdep.c.
#define EXTRACT_FIELD | ( | val, | |
pos, | |||
width | |||
) | ((val) >> (pos) & BITMASK (0, width)) |
Definition at line 454 of file m88k-tdep.c.
#define ST_OFFSET | ( | x | ) | ((unsigned)((x) & 0xFFFF)) |
Definition at line 456 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
#define ST_SRC | ( | x | ) | EXTRACT_FIELD ((x), 21, 5) |
Definition at line 457 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
#define SUBU_OFFSET | ( | x | ) | ((unsigned)(x & 0xFFFF)) |
Definition at line 455 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().
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 463 of file m88k-tdep.c.
void _initialize_m88k_tdep | ( | void | ) |
static int m88k_8_byte_align_p | ( | struct type * | type | ) | [static] |
Definition at line 222 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().
static CORE_ADDR m88k_addr_bits_remove | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | addr | ||
) | [static] |
Definition at line 89 of file m88k-tdep.c.
Referenced by m88k_gdbarch_init(), and m88k_unwind_pc().
static CORE_ADDR m88k_analyze_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc, | ||
CORE_ADDR | limit, | ||
struct m88k_frame_cache * | cache | ||
) | [static] |
Definition at line 529 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, min, offset, regnum, m88k_frame_cache::saved_regs, m88k_frame_cache::sp_offset, ST_OFFSET, ST_SRC, SUBU_OFFSET, and ULONGEST.
Referenced by m88k_frame_cache(), and m88k_skip_prologue().
static const gdb_byte* m88k_breakpoint_from_pc | ( | struct gdbarch * | gdbarch, |
CORE_ADDR * | pc, | ||
int * | len | ||
) | [static] |
Definition at line 104 of file m88k-tdep.c.
Referenced by m88k_gdbarch_init().
static struct frame_id m88k_dummy_id | ( | struct gdbarch * | arch, |
struct frame_info * | this_frame | ||
) | [static, read] |
Definition at line 370 of file m88k-tdep.c.
References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), M88K_R31_REGNUM, and sp.
Referenced by m88k_gdbarch_init().
static unsigned long m88k_fetch_instruction | ( | CORE_ADDR | pc, |
enum bfd_endian | byte_order | ||
) | [static] |
Definition at line 42 of file m88k-tdep.c.
References read_memory_unsigned_integer().
Referenced by m88k_analyze_prologue().
static int m88k_floating_p | ( | const struct type * | type | ) | [static] |
Definition at line 186 of file m88k-tdep.c.
References len, TYPE_CODE, TYPE_CODE_FLT, and TYPE_LENGTH.
Referenced by m88k_8_byte_align_p(), m88k_in_register_p(), and m88k_return_value().
static CORE_ADDR m88k_frame_base_address | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static] |
Definition at line 760 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 struct m88k_frame_cache* m88k_frame_cache | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static, read] |
Definition at line 653 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 struct value* m88k_frame_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
int | regnum | ||
) | [static, read] |
Definition at line 723 of file m88k-tdep.c.
References frame_unwind_got_constant(), m88k_frame_cache(), M88K_SFIP_REGNUM, M88K_SNIP_REGNUM, M88K_SXIP_REGNUM, release_value(), m88k_frame_cache::saved_regs, trad_frame_get_prev_register(), value_as_long(), and value_free().
static void m88k_frame_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 710 of file m88k-tdep.c.
References m88k_frame_cache::base, frame_id_build(), m88k_frame_cache(), and m88k_frame_cache::pc.
static struct gdbarch* m88k_gdbarch_init | ( | struct gdbarch_info | info, |
struct gdbarch_list * | arches | ||
) | [static, read] |
Definition at line 823 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_breakpoint_from_pc(), m88k_dummy_id(), M88K_NUM_REGS, m88k_push_dummy_call(), M88K_R31_REGNUM, m88k_register_name(), m88k_register_type(), m88k_regset_from_core_section(), m88k_return_value(), m88k_skip_prologue(), M88K_SXIP_REGNUM, m88k_unwind_pc(), m88k_write_pc(), set_gdbarch_addr_bits_remove(), set_gdbarch_breakpoint_from_pc(), set_gdbarch_dummy_id(), set_gdbarch_inner_than(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_insn(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_regset_from_core_section(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_unwind_pc(), and set_gdbarch_write_pc().
static int m88k_in_register_p | ( | struct type * | type | ) | [static] |
Definition at line 246 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 int m88k_integral_or_pointer_p | ( | const struct type * | type | ) | [static] |
Definition at line 153 of file m88k-tdep.c.
References len, TYPE_CODE, TYPE_CODE_BOOL, TYPE_CODE_CHAR, TYPE_CODE_ENUM, TYPE_CODE_INT, TYPE_CODE_PTR, TYPE_CODE_RANGE, TYPE_CODE_REF, and TYPE_LENGTH.
Referenced by m88k_8_byte_align_p(), m88k_in_register_p(), m88k_return_value(), and m88k_store_arguments().
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] |
Definition at line 347 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 const char* m88k_register_name | ( | struct gdbarch * | gdbarch, |
int | regnum | ||
) | [static] |
Definition at line 52 of file m88k-tdep.c.
References gdbarch_tdep::register_names, and regnum.
Referenced by m88k_gdbarch_init().
static struct type* m88k_register_type | ( | struct gdbarch * | gdbarch, |
int | regnum | ||
) | [static, read] |
Definition at line 73 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, and M88K_SXIP_REGNUM.
Referenced by m88k_gdbarch_init().
static struct regset* m88k_regset_from_core_section | ( | struct gdbarch * | gdbarch, |
const char * | sect_name, | ||
size_t | sect_size | ||
) | [static, read] |
Definition at line 812 of file m88k-tdep.c.
References m88k_gregset, and M88K_NUM_REGS.
Referenced by m88k_gdbarch_init().
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] |
Definition at line 386 of file m88k-tdep.c.
References gdb_assert, len, m88k_floating_p(), m88k_integral_or_pointer_p(), M88K_R2_REGNUM, M88K_R3_REGNUM, memcpy(), regcache_cooked_read(), regcache_cooked_write(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, and TYPE_LENGTH.
Referenced by m88k_gdbarch_init().
static CORE_ADDR m88k_skip_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 633 of file m88k-tdep.c.
References symtab_and_line::end, find_pc_line(), find_pc_partial_function(), m88k_analyze_prologue(), and m88k_max_prologue_size.
Referenced by m88k_gdbarch_init().
static CORE_ADDR m88k_store_arguments | ( | struct regcache * | regcache, |
int | nargs, | ||
struct value ** | args, | ||
CORE_ADDR | sp | ||
) | [static] |
Definition at line 258 of file m88k-tdep.c.
References align_down(), gdb_assert, get_regcache_arch(), len, 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 int m88k_structure_or_union_p | ( | const struct type * | type | ) | [static] |
Definition at line 205 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 void m88k_supply_gregset | ( | const struct regset * | regset, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | gregs, | ||
size_t | len | ||
) | [static] |
Definition at line 786 of file m88k-tdep.c.
References M88K_NUM_REGS, and regcache_raw_supply().
static CORE_ADDR m88k_unwind_pc | ( | struct gdbarch * | gdbarch, |
struct frame_info * | next_frame | ||
) | [static] |
Definition at line 114 of file m88k-tdep.c.
References frame_unwind_register_unsigned(), m88k_addr_bits_remove(), and M88K_SXIP_REGNUM.
Referenced by m88k_gdbarch_init().
static void m88k_write_pc | ( | struct regcache * | regcache, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 123 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().
struct frame_base m88k_frame_base [static] |
{ &m88k_frame_unwind, m88k_frame_base_address, m88k_frame_base_address, m88k_frame_base_address }
Definition at line 770 of file m88k-tdep.c.
struct frame_unwind m88k_frame_unwind [static] |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, m88k_frame_this_id, m88k_frame_prev_register, NULL, default_frame_sniffer }
Definition at line 748 of file m88k-tdep.c.
struct regset m88k_gregset [static] |
{ NULL, m88k_supply_gregset }
Definition at line 802 of file m88k-tdep.c.
Referenced by m88k_regset_from_core_section().
const int m88k_max_prologue_size = 128 * M88K_INSN_SIZE |
Definition at line 627 of file m88k-tdep.c.
Referenced by m88k_skip_prologue().
Definition at line 483 of file m88k-tdep.c.
Referenced by m88k_analyze_prologue().