GDB (xrefs)
|
#include "defs.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 "sim-regno.h"
#include "sim/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.
Classes | |
struct | bfin_frame_cache |
Macros | |
#define | P_LINKAGE 0xE800 |
#define | P_MINUS_SP1 0x0140 |
#define | P_MINUS_SP2 0x05C0 |
#define | P_MINUS_SP3 0x0540 |
#define | P_MINUS_SP4 0x04C0 |
#define | P_SP_PLUS 0x6C06 |
#define | P_P2_LOW 0xE10A |
#define | P_P2_HIGH 0XE14A |
#define | P_SP_EQ_SP_PLUS_P2 0X5BB2 |
#define | P_SP_EQ_P2_PLUS_SP 0x5B96 |
#define | P_MINUS_MINUS_SP_EQ_RETS 0x0167 |
#define | P_16_BIT_INSR_MAX 0xBFFF |
#define | P_32_BIT_INSR_MIN 0xC000 |
#define | P_32_BIT_INSR_MAX 0xE801 |
#define | P_JUMP_PREG_MIN 0x0050 |
#define | P_JUMP_PREG_MAX 0x0057 |
#define | P_JUMP_PC_PLUS_PREG_MIN 0x0080 |
#define | P_JUMP_PC_PLUS_PREG_MAX 0x0087 |
#define | P_JUMP_S_MIN 0x2000 |
#define | P_JUMP_S_MAX 0x2FFF |
#define | P_JUMP_L_MIN 0xE200 |
#define | P_JUMP_L_MAX 0xE2FF |
#define | P_IF_CC_JUMP_MIN 0x1800 |
#define | P_IF_CC_JUMP_MAX 0x1BFF |
#define | P_IF_CC_JUMP_BP_MIN 0x1C00 |
#define | P_IF_CC_JUMP_BP_MAX 0x1FFF |
#define | P_IF_NOT_CC_JUMP_MIN 0x1000 |
#define | P_IF_NOT_CC_JUMP_MAX 0x13FF |
#define | P_IF_NOT_CC_JUMP_BP_MIN 0x1400 |
#define | P_IF_NOT_CC_JUMP_BP_MAX 0x17FF |
#define | P_CALL_PREG_MIN 0x0060 |
#define | P_CALL_PREG_MAX 0x0067 |
#define | P_CALL_PC_PLUS_PREG_MIN 0x0070 |
#define | P_CALL_PC_PLUS_PREG_MAX 0x0077 |
#define | P_CALL_MIN 0xE300 |
#define | P_CALL_MAX 0xE3FF |
#define | P_RTS 0x0010 |
#define | P_MNOP 0xC803 |
#define | P_EXCPT_MIN 0x00A0 |
#define | P_EXCPT_MAX 0x00AF |
#define | P_BIT_MULTI_INS_1 0xC000 |
#define | P_BIT_MULTI_INS_2 0x0800 |
#define | UPPER_LIMIT 40 |
#define | ASTAT_CC_POS 5 |
#define | ASTAT_CC (1 << ASTAT_CC_POS) |
#define | NUM_BFIN_REGNAMES ARRAY_SIZE (bfin_register_name_strings) |
#define | BFIN_MAX_REGISTER_SIZE 4 |
Functions | |
static struct bfin_frame_cache * | bfin_alloc_frame_cache (void) |
static struct bfin_frame_cache * | bfin_frame_cache (frame_info_ptr this_frame, void **this_cache) |
static void | bfin_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id) |
static struct value * | bfin_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum) |
static int | is_minus_minus_sp (int op) |
static CORE_ADDR | bfin_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) |
static struct type * | bfin_register_type (struct gdbarch *gdbarch, int regnum) |
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, function_call_return_method return_method, CORE_ADDR struct_addr) |
static int | bfin_reg_to_regnum (struct gdbarch *gdbarch, int reg) |
static int | bfin_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr) |
static const gdb_byte * | bfin_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size) |
static void | bfin_extract_return_value (struct type *type, struct regcache *regs, gdb_byte *dst) |
static void | bfin_store_return_value (struct type *type, struct regcache *regs, const gdb_byte *src) |
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 const char * | bfin_register_name (struct gdbarch *gdbarch, int i) |
static enum register_status | bfin_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum, gdb_byte *buffer) |
static void | bfin_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buffer) |
static CORE_ADDR | bfin_frame_base_address (frame_info_ptr this_frame, void **this_cache) |
static CORE_ADDR | bfin_frame_local_address (frame_info_ptr this_frame, void **this_cache) |
static CORE_ADDR | bfin_frame_args_address (frame_info_ptr this_frame, void **this_cache) |
static CORE_ADDR | bfin_frame_align (struct gdbarch *gdbarch, CORE_ADDR address) |
enum bfin_abi | bfin_abi (struct gdbarch *gdbarch) |
static struct gdbarch * | bfin_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) |
void | _initialize_bfin_tdep () |
Variables | |
static const char *const | bfin_register_name_strings [] |
static const int | map_gcc_gdb [] |
static const struct frame_unwind | bfin_frame_unwind |
static const struct frame_base | bfin_frame_base |
#define ASTAT_CC (1 << ASTAT_CC_POS) |
Definition at line 125 of file bfin-tdep.c.
Referenced by bfin_pseudo_register_read().
#define ASTAT_CC_POS 5 |
Definition at line 124 of file bfin-tdep.c.
Referenced by bfin_pseudo_register_write().
#define BFIN_MAX_REGISTER_SIZE 4 |
Definition at line 245 of file bfin-tdep.c.
Referenced by bfin_pseudo_register_read(), and bfin_pseudo_register_write().
#define NUM_BFIN_REGNAMES ARRAY_SIZE (bfin_register_name_strings) |
Definition at line 141 of file bfin-tdep.c.
#define P_16_BIT_INSR_MAX 0xBFFF |
Definition at line 58 of file bfin-tdep.c.
#define P_32_BIT_INSR_MAX 0xE801 |
Definition at line 62 of file bfin-tdep.c.
#define P_32_BIT_INSR_MIN 0xC000 |
Definition at line 60 of file bfin-tdep.c.
#define P_BIT_MULTI_INS_1 0xC000 |
Definition at line 116 of file bfin-tdep.c.
#define P_BIT_MULTI_INS_2 0x0800 |
Definition at line 118 of file bfin-tdep.c.
#define P_CALL_MAX 0xE3FF |
Definition at line 106 of file bfin-tdep.c.
#define P_CALL_MIN 0xE300 |
Definition at line 104 of file bfin-tdep.c.
#define P_CALL_PC_PLUS_PREG_MAX 0x0077 |
Definition at line 102 of file bfin-tdep.c.
#define P_CALL_PC_PLUS_PREG_MIN 0x0070 |
Definition at line 100 of file bfin-tdep.c.
#define P_CALL_PREG_MAX 0x0067 |
Definition at line 98 of file bfin-tdep.c.
#define P_CALL_PREG_MIN 0x0060 |
Definition at line 96 of file bfin-tdep.c.
#define P_EXCPT_MAX 0x00AF |
Definition at line 114 of file bfin-tdep.c.
#define P_EXCPT_MIN 0x00A0 |
Definition at line 112 of file bfin-tdep.c.
#define P_IF_CC_JUMP_BP_MAX 0x1FFF |
Definition at line 86 of file bfin-tdep.c.
#define P_IF_CC_JUMP_BP_MIN 0x1C00 |
Definition at line 84 of file bfin-tdep.c.
#define P_IF_CC_JUMP_MAX 0x1BFF |
Definition at line 82 of file bfin-tdep.c.
#define P_IF_CC_JUMP_MIN 0x1800 |
Definition at line 80 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_BP_MAX 0x17FF |
Definition at line 94 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_BP_MIN 0x1400 |
Definition at line 92 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_MAX 0x13FF |
Definition at line 90 of file bfin-tdep.c.
#define P_IF_NOT_CC_JUMP_MIN 0x1000 |
Definition at line 88 of file bfin-tdep.c.
#define P_JUMP_L_MAX 0xE2FF |
Definition at line 78 of file bfin-tdep.c.
#define P_JUMP_L_MIN 0xE200 |
Definition at line 76 of file bfin-tdep.c.
#define P_JUMP_PC_PLUS_PREG_MAX 0x0087 |
Definition at line 70 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_PC_PLUS_PREG_MIN 0x0080 |
Definition at line 68 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_PREG_MAX 0x0057 |
Definition at line 66 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_PREG_MIN 0x0050 |
Definition at line 64 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_S_MAX 0x2FFF |
Definition at line 74 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_JUMP_S_MIN 0x2000 |
Definition at line 72 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_LINKAGE 0xE800 |
Definition at line 44 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_MINUS_MINUS_SP_EQ_RETS 0x0167 |
Definition at line 54 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_MINUS_SP1 0x0140 |
Definition at line 45 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MINUS_SP2 0x05C0 |
Definition at line 46 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MINUS_SP3 0x0540 |
Definition at line 47 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MINUS_SP4 0x04C0 |
Definition at line 48 of file bfin-tdep.c.
Referenced by is_minus_minus_sp().
#define P_MNOP 0xC803 |
Definition at line 110 of file bfin-tdep.c.
#define P_P2_HIGH 0XE14A |
Definition at line 51 of file bfin-tdep.c.
#define P_P2_LOW 0xE10A |
Definition at line 50 of file bfin-tdep.c.
#define P_RTS 0x0010 |
Definition at line 108 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
#define P_SP_EQ_P2_PLUS_SP 0x5B96 |
Definition at line 53 of file bfin-tdep.c.
#define P_SP_EQ_SP_PLUS_P2 0X5BB2 |
Definition at line 52 of file bfin-tdep.c.
#define P_SP_PLUS 0x6C06 |
Definition at line 49 of file bfin-tdep.c.
#define UPPER_LIMIT 40 |
Definition at line 121 of file bfin-tdep.c.
Referenced by bfin_skip_prologue().
void _initialize_bfin_tdep | ( | ) |
Definition at line 841 of file bfin-tdep.c.
References bfin_gdbarch_init(), and gdbarch_register().
Definition at line 765 of file bfin-tdep.c.
|
static |
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 |
Definition at line 577 of file bfin-tdep.c.
References gdbarch_byte_order(), and read_memory_unsigned_integer().
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 608 of file bfin-tdep.c.
References reg_buffer::arch(), BFIN_R0_REGNUM, gdbarch_byte_order(), type::length(), regcache_cooked_read_unsigned(), and store_unsigned_integer().
Referenced by bfin_return_value().
|
static |
Definition at line 759 of file bfin-tdep.c.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 743 of file bfin-tdep.c.
References bfin_frame_cache::base, and bfin_frame_cache().
|
static |
Definition at line 727 of file bfin-tdep.c.
References bfin_frame_cache::base, and bfin_frame_cache().
|
static |
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 |
Definition at line 735 of file bfin-tdep.c.
References bfin_frame_cache::base, and bfin_frame_cache().
|
static |
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(), regnum, bfin_frame_cache::saved_regs, and bfin_frame_cache::saved_sp.
|
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 |
Definition at line 779 of file bfin-tdep.c.
References arches, BFIN_ABI_FLAT, BFIN_ASTAT_REGNUM, bfin_breakpoint_kind_from_pc(), bfin_frame_align(), bfin_frame_base, bfin_frame_unwind, 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_sw_breakpoint_from_kind(), core_addr_lessthan(), dwarf2_append_unwinders(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch::info(), set_gdbarch_believe_pcc_promotion(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_decr_pc_after_break(), 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_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(), and set_gdbarch_sw_breakpoint_from_kind().
Referenced by _initialize_bfin_tdep().
|
static |
Definition at line 692 of file bfin-tdep.c.
References ASTAT_CC, BFIN_ASTAT_REGNUM, BFIN_CC_REGNUM, BFIN_MAX_REGISTER_SIZE, readable_regcache::raw_read(), regnum, and status.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 712 of file bfin-tdep.c.
References ASTAT_CC_POS, BFIN_ASTAT_REGNUM, BFIN_CC_REGNUM, BFIN_MAX_REGISTER_SIZE, readable_regcache::raw_read(), regcache::raw_write(), and regnum.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 495 of file bfin-tdep.c.
References BFIN_P0_REGNUM, BFIN_R0_REGNUM, BFIN_R1_REGNUM, BFIN_R2_REGNUM, BFIN_RETS_REGNUM, BFIN_SP_REGNUM, check_typedef(), gdbarch_byte_order(), type::length(), read_memory_integer(), regcache_cooked_write_unsigned(), return_method_struct, and write_memory().
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 566 of file bfin-tdep.c.
References map_gcc_gdb.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 686 of file bfin-tdep.c.
References bfin_register_name_strings.
Referenced by bfin_gdbarch_init().
Definition at line 478 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, builtin_type(), and regnum.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 664 of file bfin-tdep.c.
References bfin_extract_return_value(), bfin_store_return_value(), type::length(), RETURN_VALUE_REGISTER_CONVENTION, and RETURN_VALUE_STRUCT_CONVENTION.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 404 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(), and UPPER_LIMIT.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 634 of file bfin-tdep.c.
References BFIN_R0_REGNUM, regcache::cooked_write(), and type::length().
Referenced by bfin_return_value().
|
static |
Definition at line 594 of file bfin-tdep.c.
References size, and target_shortname().
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 390 of file bfin-tdep.c.
References P_MINUS_SP1, P_MINUS_SP2, P_MINUS_SP3, and P_MINUS_SP4.
Referenced by bfin_skip_prologue().
|
static |
Definition at line 750 of file bfin-tdep.c.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 375 of file bfin-tdep.c.
Referenced by bfin_gdbarch_init().
|
static |
Definition at line 129 of file bfin-tdep.c.
Referenced by bfin_register_name().
|
static |
Definition at line 191 of file bfin-tdep.c.
Referenced by bfin_reg_to_regnum().