GDB (xrefs)
|
#include "defs.h"
#include "gdb_string.h"
#include "inferior.h"
#include "gdbcore.h"
#include "arch-utils.h"
#include "regcache.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "dis-asm.h"
#include "gdb_assert.h"
#include "sim-regno.h"
#include "gdb/sim-bfin.h"
#include "dwarf2-frame.h"
#include "symtab.h"
#include "elf-bfd.h"
#include "elf/bfin.h"
#include "osabi.h"
#include "infcall.h"
#include "xml-syscall.h"
#include "bfin-tdep.h"
Go to the source code of this file.
#define ASTAT_CC (1 << ASTAT_CC_POS) |
Definition at line 127 of file bfin-tdep.c.
Referenced by bfin_pseudo_register_read(), and bfin_pseudo_register_write().
#define ASTAT_CC_POS 5 |
Definition at line 126 of file bfin-tdep.c.
Referenced by bfin_pseudo_register_write().
#define NUM_BFIN_REGNAMES ARRAY_SIZE (bfin_register_name_strings) |
Definition at line 143 of file bfin-tdep.c.
#define P_16_BIT_INSR_MAX 0xBFFF |
Definition at line 60 of file bfin-tdep.c.
#define P_32_BIT_INSR_MAX 0xE801 |
Definition at line 64 of file bfin-tdep.c.
#define P_32_BIT_INSR_MIN 0xC000 |
Definition at line 62 of file bfin-tdep.c.
#define P_BIT_MULTI_INS_1 0xC000 |
Definition at line 118 of file bfin-tdep.c.
#define P_BIT_MULTI_INS_2 0x0800 |
Definition at line 120 of file bfin-tdep.c.
#define P_CALL_MAX 0xE3FF |
Definition at line 108 of file bfin-tdep.c.
#define P_CALL_MIN 0xE300 |
Definition at line 106 of file bfin-tdep.c.
#define P_CALL_PC_PLUS_PREG_MAX 0x0077 |
Definition at line 104 of file bfin-tdep.c.
#define P_CALL_PC_PLUS_PREG_MIN 0x0070 |
Definition at line 102 of file bfin-tdep.c.
#define P_CALL_PREG_MAX 0x0067 |
Definition at line 100 of file bfin-tdep.c.
#define P_CALL_PREG_MIN 0x0060 |
Definition at line 98 of file bfin-tdep.c.
#define P_EXCPT_MAX 0x00AF |
Definition at line 116 of file bfin-tdep.c.
#define P_EXCPT_MIN 0x00A0 |
Definition at line 114 of file bfin-tdep.c.
#define P_IF_CC_JUMP_BP_MAX 0x1FFF |
Definition at line 88 of file bfin-tdep.c.
#define P_IF_CC_JUMP_BP_MIN 0x1C00 |
Definition at line 86 of file bfin-tdep.c.
#define P_IF_CC_JUMP_MAX 0x1BFF |
Definition at line 84 of file bfin-tdep.c.
#define P_IF_CC_JUMP_MIN 0x1800 |
Definition at line 82 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_BP_MAX 0x17FF |
Definition at line 96 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_BP_MIN 0x1400 |
Definition at line 94 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_MAX 0x13FF |
Definition at line 92 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_MIN 0x1000 |
Definition at line 90 of file bfin-tdep.c.
#define P_JUMP_L_MAX 0xE2FF |
Definition at line 80 of file bfin-tdep.c.
#define P_JUMP_L_MIN 0xE200 |
Definition at line 78 of file bfin-tdep.c.
#define P_JUMP_PC_PLUS_PREG_MAX 0x0087 |
Definition at line 72 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_PC_PLUS_PREG_MIN 0x0080 |
Definition at line 70 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_PREG_MAX 0x0057 |
Definition at line 68 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_PREG_MIN 0x0050 |
Definition at line 66 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_S_MAX 0x2FFF |
Definition at line 76 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_S_MIN 0x2000 |
Definition at line 74 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_LINKAGE 0xE800 |
Definition at line 46 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_MINUS_MINUS_SP_EQ_RETS 0x0167 |
Definition at line 56 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_MINUS_SP1 0x0140 |
Definition at line 47 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MINUS_SP2 0x05C0 |
Definition at line 48 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MINUS_SP3 0x0540 |
Definition at line 49 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MINUS_SP4 0x04C0 |
Definition at line 50 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MNOP 0xC803 |
Definition at line 112 of file bfin-tdep.c.
#define P_P2_HIGH 0XE14A |
Definition at line 53 of file bfin-tdep.c.
#define P_P2_LOW 0xE10A |
Definition at line 52 of file bfin-tdep.c.
#define P_RTS 0x0010 |
Definition at line 110 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_SP_EQ_P2_PLUS_SP 0x5B96 |
Definition at line 55 of file bfin-tdep.c.
#define P_SP_EQ_SP_PLUS_P2 0X5BB2 |
Definition at line 54 of file bfin-tdep.c.
#define P_SP_PLUS 0x6C06 |
Definition at line 51 of file bfin-tdep.c.
#define UPPER_LIMIT 40 |
Definition at line 123 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
void _initialize_bfin_tdep | ( | void | ) |
Definition at line 865 of file bfin-tdep.c.
References _initialize_bfin_tdep, bfin_gdbarch_init(), and register_gdbarch_init().
Definition at line 782 of file bfin-tdep.c.
References gdbarch_tdep::bfin_abi, and gdbarch_tdep().
static struct bfin_frame_cache* bfin_alloc_frame_cache | ( | void | ) | [static, read] |
Definition at line 266 of file bfin-tdep.c.
References bfin_frame_cache::base, BFIN_NUM_REGS, FRAME_OBSTACK_ZALLOC, bfin_frame_cache::frameless_pc_value, bfin_frame_cache::locals, bfin_frame_cache::pc, bfin_frame_cache::saved_regs, and bfin_frame_cache::sp_offset.
Referenced by bfin_frame_cache().
static const unsigned char* bfin_breakpoint_from_pc | ( | struct gdbarch * | gdbarch, |
CORE_ADDR * | pcptr, | ||
int * | lenptr | ||
) | [static] |
Definition at line 584 of file bfin-tdep.c.
References gdbarch_byte_order(), read_memory_unsigned_integer(), and target_shortname.
Referenced by bfin_gdbarch_init().
static struct frame_id bfin_dummy_id | ( | struct gdbarch * | gdbarch, |
struct frame_info * | this_frame | ||
) | [static, read] |
Definition at line 760 of file bfin-tdep.c.
References BFIN_SP_REGNUM, frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and sp.
Referenced by bfin_gdbarch_init().
static void bfin_extract_return_value | ( | struct type * | type, |
struct regcache * | regs, | ||
gdb_byte * | dst | ||
) | [static] |
Definition at line 607 of file bfin-tdep.c.
References BFIN_R0_REGNUM, gdbarch::byte_order, gdb_assert, gdbarch_byte_order(), get_regcache_arch(), len, regcache_cooked_read_unsigned(), store_unsigned_integer(), TYPE_LENGTH, and ULONGEST.
Referenced by bfin_return_value().
static CORE_ADDR bfin_frame_align | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | address | ||
) | [static] |
Definition at line 776 of file bfin-tdep.c.
Referenced by bfin_gdbarch_init().
static CORE_ADDR bfin_frame_args_address | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static] |
Definition at line 744 of file bfin-tdep.c.
References bfin_frame_cache::base, and bfin_frame_cache().
static CORE_ADDR bfin_frame_base_address | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static] |
Definition at line 728 of file bfin-tdep.c.
References bfin_frame_cache::base, and bfin_frame_cache().
static struct bfin_frame_cache* bfin_frame_cache | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static, read] |
Definition at line 291 of file bfin-tdep.c.
References bfin_frame_cache::base, bfin_alloc_frame_cache(), BFIN_FP_REGNUM, BFIN_NUM_REGS, BFIN_PC_REGNUM, BFIN_RETS_REGNUM, bfin_frame_cache::frameless_pc_value, get_frame_func(), get_frame_pc(), get_frame_register_unsigned(), bfin_frame_cache::pc, bfin_frame_cache::saved_regs, and bfin_frame_cache::saved_sp.
Referenced by bfin_frame_args_address(), bfin_frame_base_address(), bfin_frame_local_address(), bfin_frame_prev_register(), and bfin_frame_this_id().
static CORE_ADDR bfin_frame_local_address | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static] |
Definition at line 736 of file bfin-tdep.c.
References bfin_frame_cache::base, and bfin_frame_cache().
static struct value* bfin_frame_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
int | regnum | ||
) | [static, read] |
Definition at line 358 of file bfin-tdep.c.
References bfin_frame_cache(), frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), gdbarch_sp_regnum(), get_frame_arch(), bfin_frame_cache::saved_regs, and bfin_frame_cache::saved_sp.
static void bfin_frame_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 343 of file bfin-tdep.c.
References bfin_frame_cache::base, bfin_frame_cache(), frame_id_build(), and bfin_frame_cache::pc.
static struct gdbarch* bfin_gdbarch_init | ( | struct gdbarch_info | info, |
struct gdbarch_list * | arches | ||
) | [static, read] |
Definition at line 795 of file bfin-tdep.c.
References gdbarch_info::abfd, gdbarch_tdep::bfin_abi, BFIN_ABI_FLAT, BFIN_ASTAT_REGNUM, bfin_breakpoint_from_pc(), bfin_dummy_id(), bfin_frame_align(), BFIN_NUM_PSEUDO_REGS, BFIN_NUM_REGS, BFIN_PC_REGNUM, bfin_pseudo_register_read(), bfin_pseudo_register_write(), bfin_push_dummy_call(), bfin_reg_to_regnum(), bfin_register_name(), bfin_register_type(), bfin_return_value(), bfin_skip_prologue(), BFIN_SP_REGNUM, bfin_unwind_pc(), core_addr_lessthan(), dwarf2_append_unwinders(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_list::next, set_gdbarch_believe_pcc_promotion(), set_gdbarch_breakpoint_from_pc(), set_gdbarch_decr_pc_after_break(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_args_skip(), set_gdbarch_inner_than(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_insn(), set_gdbarch_ps_regnum(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), 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_unwind_pc(), and XMALLOC.
Referenced by _initialize_bfin_tdep().
static enum register_status bfin_pseudo_register_read | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
int | regnum, | ||
gdb_byte * | buffer | ||
) | [static] |
Definition at line 691 of file bfin-tdep.c.
References _, ASTAT_CC, BFIN_ASTAT_REGNUM, BFIN_CC_REGNUM, internal_error(), MAX_REGISTER_SIZE, REG_VALID, regcache_raw_read(), and exsummary::status.
Referenced by bfin_gdbarch_init().
static void bfin_pseudo_register_write | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
int | regnum, | ||
const gdb_byte * | buffer | ||
) | [static] |
Definition at line 712 of file bfin-tdep.c.
References _, ASTAT_CC, ASTAT_CC_POS, BFIN_ASTAT_REGNUM, BFIN_CC_REGNUM, internal_error(), MAX_REGISTER_SIZE, regcache_raw_read(), and regcache_raw_write().
Referenced by bfin_gdbarch_init().
static CORE_ADDR bfin_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 494 of file bfin-tdep.c.
References gdbarch_tdep::abi, BFIN_P0_REGNUM, BFIN_R0_REGNUM, BFIN_R1_REGNUM, BFIN_R2_REGNUM, BFIN_RETS_REGNUM, BFIN_SP_REGNUM, check_typedef(), find_function_addr(), gdbarch_byte_order(), gdbarch_tdep(), read_memory_integer(), regcache_cooked_write_unsigned(), TYPE_LENGTH, value_contents_writeable(), value_enclosing_type(), value_type(), and write_memory().
Referenced by bfin_gdbarch_init().
static int bfin_reg_to_regnum | ( | struct gdbarch * | gdbarch, |
int | reg | ||
) | [static] |
Definition at line 569 of file bfin-tdep.c.
References map_gcc_gdb.
Referenced by bfin_gdbarch_init().
static const char* bfin_register_name | ( | struct gdbarch * | gdbarch, |
int | i | ||
) | [static] |
Definition at line 685 of file bfin-tdep.c.
References bfin_register_name_strings.
Referenced by bfin_gdbarch_init().
static struct type* bfin_register_type | ( | struct gdbarch * | gdbarch, |
int | regnum | ||
) | [static, read] |
Definition at line 477 of file bfin-tdep.c.
References BFIN_FP_REGNUM, BFIN_LB0_REGNUM, BFIN_LB1_REGNUM, BFIN_LT0_REGNUM, BFIN_LT1_REGNUM, BFIN_P0_REGNUM, BFIN_PC_REGNUM, BFIN_RETE_REGNUM, BFIN_RETI_REGNUM, BFIN_RETN_REGNUM, BFIN_RETS_REGNUM, BFIN_RETX_REGNUM, BFIN_USP_REGNUM, builtin_type::builtin_data_ptr, builtin_type::builtin_func_ptr, builtin_type::builtin_int32, and builtin_type().
Referenced by bfin_gdbarch_init().
static enum return_value_convention bfin_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 663 of file bfin-tdep.c.
References bfin_extract_return_value(), bfin_store_return_value(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, and TYPE_LENGTH.
Referenced by bfin_gdbarch_init().
static CORE_ADDR bfin_skip_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 403 of file bfin-tdep.c.
References _, gdbarch_byte_order(), is_minus_minus_sp(), P_JUMP_PC_PLUS_PREG_MAX, P_JUMP_PC_PLUS_PREG_MIN, P_JUMP_PREG_MAX, P_JUMP_PREG_MIN, P_JUMP_S_MAX, P_JUMP_S_MIN, P_LINKAGE, P_MINUS_MINUS_SP_EQ_RETS, P_RTS, read_memory_unsigned_integer(), UPPER_LIMIT, and warning().
Referenced by bfin_gdbarch_init().
static void bfin_store_return_value | ( | struct type * | type, |
struct regcache * | regs, | ||
const gdb_byte * | src | ||
) | [static] |
Definition at line 633 of file bfin-tdep.c.
References BFIN_R0_REGNUM, gdb_assert, len, regcache_cooked_write(), and TYPE_LENGTH.
Referenced by bfin_return_value().
static CORE_ADDR bfin_unwind_pc | ( | struct gdbarch * | gdbarch, |
struct frame_info * | next_frame | ||
) | [static] |
Definition at line 770 of file bfin-tdep.c.
References BFIN_PC_REGNUM, and frame_unwind_register_unsigned().
Referenced by bfin_gdbarch_init().
static int is_minus_minus_sp | ( | int | op | ) | [static] |
Definition at line 389 of file bfin-tdep.c.
References P_MINUS_SP1, P_MINUS_SP2, P_MINUS_SP3, and P_MINUS_SP4.
Referenced by bfin_skip_prologue().
Referenced by _initialize_bfin_tdep(), and initialize_all_files().
struct frame_base bfin_frame_base [static] |
Definition at line 751 of file bfin-tdep.c.
struct frame_unwind bfin_frame_unwind [static] |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, bfin_frame_this_id, bfin_frame_prev_register, NULL, default_frame_sniffer }
Definition at line 375 of file bfin-tdep.c.
const char* const bfin_register_name_strings[] [static] |
{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "p0", "p1", "p2", "p3", "p4", "p5", "sp", "fp", "i0", "i1", "i2", "i3", "m0", "m1", "m2", "m3", "b0", "b1", "b2", "b3", "l0", "l1", "l2", "l3", "a0x", "a0w", "a1x", "a1w", "astat", "rets", "lc0", "lt0", "lb0", "lc1", "lt1", "lb1", "cycles", "cycles2", "usp", "seqstat", "syscfg", "reti", "retx", "retn", "rete", "pc", "cc", }
Definition at line 131 of file bfin-tdep.c.
Referenced by bfin_register_name().
const int map_gcc_gdb[] [static] |
Definition at line 193 of file bfin-tdep.c.
Referenced by bfin_reg_to_regnum().