GDB (xrefs)
|
#include "defs.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "dwarf2-frame.h"
#include "symtab.h"
#include "inferior.h"
#include "gdbtypes.h"
#include "gdbcore.h"
#include "gdbcmd.h"
#include "target.h"
#include "dis-asm.h"
#include "regcache.h"
#include "value.h"
#include "symfile.h"
#include "arch-utils.h"
#include "floatformat.h"
#include "glibc-tdep.h"
#include "infcall.h"
#include "regset.h"
#include "tramp-frame.h"
#include "linux-tdep.h"
#include "solib.h"
#include "objfiles.h"
#include "gdb_assert.h"
#include "osabi.h"
#include "tic6x-tdep.h"
#include "language.h"
#include "target-descriptions.h"
#include "features/tic6x-c64xp.c"
#include "features/tic6x-c64x.c"
#include "features/tic6x-c62x.c"
Go to the source code of this file.
#define INST_S_BIT | ( | INST | ) | ((INST >> 1) & 1) |
Definition at line 60 of file tic6x-tdep.c.
Referenced by tic6x_analyze_prologue(), tic6x_get_next_pc(), and tic6x_in_function_epilogue_p().
#define INST_X_BIT | ( | INST | ) | ((INST >> 12) & 1) |
Definition at line 61 of file tic6x-tdep.c.
Referenced by tic6x_get_next_pc(), and tic6x_in_function_epilogue_p().
#define TIC6X_FETCH_PACKET_SIZE 32 |
Definition at line 58 of file tic6x-tdep.c.
Referenced by tic6x_get_next_pc().
#define TIC6X_OPCODE_SIZE 4 |
Definition at line 57 of file tic6x-tdep.c.
Referenced by tic6x_fetch_instruction(), and tic6x_get_next_pc().
void _initialize_tic6x_tdep | ( | void | ) |
Definition at line 1349 of file tic6x-tdep.c.
References _initialize_tic6x_tdep, initialize_tdesc_tic6x_c62x(), initialize_tdesc_tic6x_c64x(), initialize_tdesc_tic6x_c64xp(), register_gdbarch_init(), and tic6x_gdbarch_init().
static CORE_ADDR tic6x_analyze_prologue | ( | struct gdbarch * | gdbarch, |
const CORE_ADDR | start_pc, | ||
const CORE_ADDR | current_pc, | ||
struct tic6x_unwind_cache * | cache, | ||
struct frame_info * | this_frame | ||
) | [static] |
Definition at line 150 of file tic6x-tdep.c.
References tic6x_unwind_cache::base, tic6x_unwind_cache::cfa, gdb_assert_not_reached, gdbarch_byte_order(), get_frame_register_unsigned(), INST_S_BIT, offset, tic6x_unwind_cache::reg_saved, TIC6X_DP_REGNUM, tic6x_fetch_instruction(), TIC6X_FP_REGNUM, TIC6X_NUM_CORE_REGS, tic6x_register_number(), and TIC6X_SP_REGNUM.
Referenced by tic6x_frame_unwind_cache(), and tic6x_skip_prologue().
static int tic6x_arg_type_alignment | ( | struct type * | type | ) | [static] |
Definition at line 843 of file tic6x-tdep.c.
References _, check_typedef(), gdb_assert_not_reached, internal_error(), len, TYPE_CODE, TYPE_CODE_COMPLEX, TYPE_CODE_STRUCT, TYPE_CODE_UNION, and TYPE_LENGTH.
Referenced by tic6x_push_dummy_call().
static const gdb_byte* tic6x_breakpoint_from_pc | ( | struct gdbarch * | gdbarch, |
CORE_ADDR * | bp_addr, | ||
int * | bp_size | ||
) | [static] |
Definition at line 327 of file tic6x-tdep.c.
References gdbarch_tdep::breakpoint, gdbarch_byte_order_for_code(), gdbarch_tdep(), tic6x_bkpt_illegal_opcode_be, and tic6x_bkpt_illegal_opcode_le.
Referenced by tic6x_gdbarch_init().
static int tic6x_condition_true | ( | struct frame_info * | frame, |
unsigned long | inst | ||
) | [static] |
Definition at line 562 of file tic6x-tdep.c.
References get_frame_register_signed().
Referenced by tic6x_get_next_pc().
static struct frame_id tic6x_dummy_id | ( | struct gdbarch * | gdbarch, |
struct frame_info * | this_frame | ||
) | [static, read] |
Definition at line 833 of file tic6x-tdep.c.
References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and TIC6X_SP_REGNUM.
Referenced by tic6x_gdbarch_init().
static void tic6x_dwarf2_frame_init_reg | ( | struct gdbarch * | gdbarch, |
int | regnum, | ||
struct dwarf2_frame_state_reg * | reg, | ||
struct frame_info * | this_frame | ||
) | [static] |
Definition at line 354 of file tic6x-tdep.c.
References DWARF2_FRAME_REG_CFA, DWARF2_FRAME_REG_RA, DWARF2_FRAME_REG_SAME_VALUE, DWARF2_FRAME_REG_UNDEFINED, gdbarch_pc_regnum(), gdbarch_sp_regnum(), and dwarf2_frame_state_reg::how.
Referenced by tic6x_gdbarch_init().
static void tic6x_extract_return_value | ( | struct type * | valtype, |
struct regcache * | regcache, | ||
enum bfd_endian | byte_order, | ||
gdb_byte * | valbuf | ||
) | [static] |
Definition at line 722 of file tic6x-tdep.c.
References len, regcache_cooked_read(), regcache_cooked_read_part(), TIC6X_A4_REGNUM, TIC6X_A5_REGNUM, and TYPE_LENGTH.
Referenced by tic6x_return_value().
static int tic6x_extract_signed_field | ( | int | value, |
int | low_bit, | ||
int | bits | ||
) | [static] |
static unsigned long tic6x_fetch_instruction | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 552 of file tic6x-tdep.c.
References gdbarch_byte_order(), read_memory_unsigned_integer(), and TIC6X_OPCODE_SIZE.
Referenced by tic6x_analyze_prologue(), tic6x_get_next_pc(), and tic6x_in_function_epilogue_p().
static CORE_ADDR tic6x_frame_align | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | addr | ||
) | [static] |
Definition at line 713 of file tic6x-tdep.c.
References align_down().
Referenced by tic6x_gdbarch_init().
static CORE_ADDR tic6x_frame_base_address | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static] |
Definition at line 470 of file tic6x-tdep.c.
References tic6x_unwind_cache::base, and tic6x_frame_unwind_cache().
static struct value* tic6x_frame_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
int | regnum | ||
) | [static, read] |
Definition at line 443 of file tic6x-tdep.c.
References tic6x_unwind_cache::cfa, frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), gdb_assert, tic6x_unwind_cache::reg_saved, tic6x_unwind_cache::return_regnum, tic6x_frame_unwind_cache(), TIC6X_PC_REGNUM, and TIC6X_SP_REGNUM.
static void tic6x_frame_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 429 of file tic6x-tdep.c.
References tic6x_unwind_cache::base, tic6x_unwind_cache::cfa, frame_id_build(), tic6x_unwind_cache::pc, and tic6x_frame_unwind_cache().
static struct tic6x_unwind_cache* tic6x_frame_unwind_cache | ( | struct frame_info * | this_frame, |
void ** | this_prologue_cache | ||
) | [static, read] |
Definition at line 401 of file tic6x-tdep.c.
References FRAME_OBSTACK_ZALLOC, get_frame_arch(), get_frame_func(), get_frame_pc(), tic6x_unwind_cache::pc, tic6x_unwind_cache::return_regnum, tic6x_analyze_prologue(), TIC6X_RA_REGNUM, and tic6x_setup_default().
Referenced by tic6x_frame_base_address(), tic6x_frame_prev_register(), and tic6x_frame_this_id().
static struct gdbarch* tic6x_gdbarch_init | ( | struct gdbarch_info | info, |
struct gdbarch_list * | arches | ||
) | [static, read] |
Definition at line 1179 of file tic6x-tdep.c.
References gdbarch_tdep::breakpoint, core_addr_lessthan(), dwarf2_append_unwinders(), dwarf2_frame_set_init_reg(), floatformats_ieee_double, floatformats_ieee_single, frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_tdep(), gdbarch_tdep::has_gp, gdbarch_list::next, set_gdbarch_addr_bit(), set_gdbarch_breakpoint_from_pc(), set_gdbarch_double_bit(), set_gdbarch_double_format(), set_gdbarch_dummy_id(), set_gdbarch_float_bit(), set_gdbarch_float_format(), set_gdbarch_frame_align(), set_gdbarch_get_longjmp_target(), set_gdbarch_in_function_epilogue_p(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_print_insn(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_in_first_hidden_param_p(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), gdbarch_info::target_desc, tdesc_data, tdesc_data_alloc(), tdesc_data_cleanup(), tdesc_find_feature(), tdesc_has_registers(), tdesc_numbered_register(), tdesc_use_registers(), tic6x_breakpoint_from_pc(), TIC6X_CSR_REGNUM, tic6x_dummy_id(), tic6x_dwarf2_frame_init_reg(), tic6x_frame_align(), tic6x_get_longjmp_target(), tic6x_in_function_epilogue_p(), TIC6X_NUM_REGS, TIC6X_PC_REGNUM, tic6x_print_insn(), tic6x_push_dummy_call(), tic6x_register_name(), tic6x_register_names, tic6x_register_type(), tic6x_return_in_first_hidden_param_p(), tic6x_return_value(), tic6x_skip_prologue(), tic6x_software_single_step(), TIC6X_SP_REGNUM, tic6x_unwind_pc(), tic6x_unwind_sp(), and xcalloc().
Referenced by _initialize_tic6x_tdep().
static int tic6x_get_longjmp_target | ( | struct frame_info * | frame, |
CORE_ADDR * | pc | ||
) | [static] |
Definition at line 1148 of file tic6x-tdep.c.
References gdbarch::byte_order, extract_unsigned_integer(), gdbarch_byte_order(), get_frame_arch(), get_frame_register_unsigned(), and target_read_memory().
Referenced by tic6x_gdbarch_init().
static CORE_ADDR tic6x_get_next_pc | ( | struct frame_info * | frame, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 603 of file tic6x-tdep.c.
References gdbarch_tdep(), get_frame_arch(), get_frame_register_signed(), get_frame_register_unsigned(), INST_S_BIT, INST_X_BIT, gdbarch_tdep::pc, gdbarch_tdep::syscall_next_pc, tic6x_condition_true(), tic6x_extract_signed_field(), tic6x_fetch_instruction(), TIC6X_FETCH_PACKET_SIZE, TIC6X_INST_SWE, TIC6X_OPCODE_SIZE, and tic6x_register_number().
Referenced by tic6x_software_single_step().
static int tic6x_in_function_epilogue_p | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 1129 of file tic6x-tdep.c.
References INST_S_BIT, INST_X_BIT, tic6x_fetch_instruction(), TIC6X_RA_REGNUM, and tic6x_register_number().
Referenced by tic6x_gdbarch_init().
static struct tic6x_unwind_cache* tic6x_make_stub_cache | ( | struct frame_info * | this_frame | ) | [static, read] |
Definition at line 497 of file tic6x-tdep.c.
References tic6x_unwind_cache::cfa, FRAME_OBSTACK_ZALLOC, get_frame_register_unsigned(), tic6x_unwind_cache::return_regnum, TIC6X_RA_REGNUM, tic6x_setup_default(), and TIC6X_SP_REGNUM.
Referenced by tic6x_stub_this_id().
static int tic6x_print_insn | ( | bfd_vma | memaddr, |
disassemble_info * | info | ||
) | [static] |
Definition at line 348 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().
static CORE_ADDR tic6x_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 891 of file tic6x-tdep.c.
References _, align_down(), align_up(), arg_regs, check_typedef(), extract_unsigned_integer(), find_function_addr(), gdb_assert, gdbarch_byte_order(), internal_error(), len, regcache_cooked_write(), regcache_cooked_write_part(), regcache_cooked_write_signed(), regcache_cooked_write_unsigned(), store_unsigned_integer(), tic6x_arg_type_alignment(), TIC6X_RA_REGNUM, TIC6X_SP_REGNUM, TYPE_CODE, TYPE_CODE_COMPLEX, TYPE_CODE_FUNC, TYPE_CODE_METHOD, TYPE_CODE_PTR, TYPE_CODE_STRUCT, TYPE_CODE_UNION, TYPE_LENGTH, TYPE_NFIELDS, TYPE_TARGET_TYPE, TYPE_VARARGS, ULONGEST, value_contents(), value_type(), and write_memory().
Referenced by tic6x_gdbarch_init().
static const char* tic6x_register_name | ( | struct gdbarch * | gdbarch, |
int | regno | ||
) | [static] |
Definition at line 108 of file tic6x-tdep.c.
References gdbarch_target_desc(), tdesc_has_registers(), tdesc_register_name(), and tic6x_register_names.
Referenced by tic6x_gdbarch_init().
static int tic6x_register_number | ( | int | reg, |
int | side, | ||
int | crosspath | ||
) | [static] |
Definition at line 582 of file tic6x-tdep.c.
Referenced by tic6x_analyze_prologue(), tic6x_get_next_pc(), and tic6x_in_function_epilogue_p().
static struct type* tic6x_register_type | ( | struct gdbarch * | gdbarch, |
int | regno | ||
) | [static, read] |
Definition at line 124 of file tic6x-tdep.c.
References builtin_type::builtin_func_ptr, builtin_type(), builtin_type::builtin_uint32, and TIC6X_PC_REGNUM.
Referenced by tic6x_gdbarch_init().
static int tic6x_return_in_first_hidden_param_p | ( | struct gdbarch * | gdbarch, |
struct type * | type | ||
) | [static] |
Definition at line 1172 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init().
static enum return_value_convention tic6x_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 800 of file tic6x-tdep.c.
References CHECK_TYPEDEF, current_language, gdbarch_byte_order(), language_defn::la_language, language_cplus, language_pass_by_reference(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, tic6x_extract_return_value(), tic6x_store_return_value(), and TYPE_LENGTH.
Referenced by tic6x_gdbarch_init().
static void tic6x_setup_default | ( | struct tic6x_unwind_cache * | cache | ) | [static] |
Definition at line 134 of file tic6x-tdep.c.
References tic6x_unwind_cache::reg_saved, and TIC6X_NUM_CORE_REGS.
Referenced by tic6x_frame_unwind_cache(), and tic6x_make_stub_cache().
static CORE_ADDR tic6x_skip_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | start_pc | ||
) | [static] |
Definition at line 302 of file tic6x-tdep.c.
References find_pc_partial_function(), max, skip_prologue_using_sal(), and tic6x_analyze_prologue().
Referenced by tic6x_gdbarch_init().
static int tic6x_software_single_step | ( | struct frame_info * | frame | ) | [static] |
Definition at line 699 of file tic6x-tdep.c.
References get_frame_address_space(), get_frame_arch(), get_frame_pc(), insert_single_step_breakpoint(), and tic6x_get_next_pc().
Referenced by tic6x_gdbarch_init().
static void tic6x_store_return_value | ( | struct type * | valtype, |
struct regcache * | regcache, | ||
enum bfd_endian | byte_order, | ||
const gdb_byte * | valbuf | ||
) | [static] |
Definition at line 767 of file tic6x-tdep.c.
References len, regcache_cooked_write(), regcache_cooked_write_part(), TIC6X_A4_REGNUM, TIC6X_A5_REGNUM, and TYPE_LENGTH.
Referenced by tic6x_return_value().
static void tic6x_stub_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 513 of file tic6x-tdep.c.
References tic6x_unwind_cache::cfa, frame_id_build(), get_frame_pc(), and tic6x_make_stub_cache().
static int tic6x_stub_unwind_sniffer | ( | const struct frame_unwind * | self, |
struct frame_info * | this_frame, | ||
void ** | this_prologue_cache | ||
) | [static] |
Definition at line 526 of file tic6x-tdep.c.
References get_frame_address_in_block(), and in_plt_section().
static CORE_ADDR tic6x_unwind_pc | ( | struct gdbarch * | gdbarch, |
struct frame_info * | next_frame | ||
) | [static] |
Definition at line 381 of file tic6x-tdep.c.
References extract_typed_address(), frame_unwind_register(), and TIC6X_PC_REGNUM.
Referenced by tic6x_gdbarch_init().
static CORE_ADDR tic6x_unwind_sp | ( | struct gdbarch * | gdbarch, |
struct frame_info * | this_frame | ||
) | [static] |
Definition at line 392 of file tic6x-tdep.c.
References frame_unwind_register_unsigned(), and TIC6X_SP_REGNUM.
Referenced by tic6x_gdbarch_init().
Referenced by _initialize_tic6x_tdep(), and initialize_all_files().
Definition at line 103 of file tic6x-tdep.c.
Referenced by tic6x_push_dummy_call().
const gdb_byte tic6x_bkpt_illegal_opcode_be[] = { 0x56, 0x45, 0x43, 0x14 } |
Definition at line 63 of file tic6x-tdep.c.
Referenced by tic6x_breakpoint_from_pc(), and tic6x_uclinux_init_abi().
const gdb_byte tic6x_bkpt_illegal_opcode_le[] = { 0x14, 0x43, 0x45, 0x56 } |
Definition at line 64 of file tic6x-tdep.c.
Referenced by tic6x_breakpoint_from_pc(), and tic6x_uclinux_init_abi().
struct frame_base tic6x_frame_base [static] |
{ &tic6x_frame_unwind, tic6x_frame_base_address, tic6x_frame_base_address, tic6x_frame_base_address }
Definition at line 487 of file tic6x-tdep.c.
struct frame_unwind tic6x_frame_unwind [static] |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, tic6x_frame_this_id, tic6x_frame_prev_register, NULL, default_frame_sniffer }
Definition at line 477 of file tic6x-tdep.c.
const char* const tic6x_register_names[] [static] |
{ "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13", "B14", "B15", "CSR", "PC", }
Definition at line 88 of file tic6x-tdep.c.
Referenced by tic6x_gdbarch_init(), and tic6x_register_name().
struct frame_unwind tic6x_stub_unwind [static] |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, tic6x_stub_this_id, tic6x_frame_prev_register, NULL, tic6x_stub_unwind_sniffer }
Definition at line 539 of file tic6x-tdep.c.