GDB (xrefs)
Classes | Defines | Functions | Variables
/home/stan/gdb/src/gdb/tic6x-tdep.c File Reference
#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.

Classes

struct  tic6x_unwind_cache

Defines

#define TIC6X_OPCODE_SIZE   4
#define TIC6X_FETCH_PACKET_SIZE   32
#define INST_S_BIT(INST)   ((INST >> 1) & 1)
#define INST_X_BIT(INST)   ((INST >> 12) & 1)

Functions

static const char * tic6x_register_name (struct gdbarch *gdbarch, int regno)
static struct typetic6x_register_type (struct gdbarch *gdbarch, int regno)
static void tic6x_setup_default (struct tic6x_unwind_cache *cache)
static unsigned long tic6x_fetch_instruction (struct gdbarch *, CORE_ADDR)
static int tic6x_register_number (int reg, int side, int crosspath)
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 CORE_ADDR tic6x_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
static const gdb_bytetic6x_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *bp_addr, int *bp_size)
static int tic6x_print_insn (bfd_vma memaddr, disassemble_info *info)
static void tic6x_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, struct frame_info *this_frame)
static CORE_ADDR tic6x_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
static CORE_ADDR tic6x_unwind_sp (struct gdbarch *gdbarch, struct frame_info *this_frame)
static struct tic6x_unwind_cachetic6x_frame_unwind_cache (struct frame_info *this_frame, void **this_prologue_cache)
static void tic6x_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct valuetic6x_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static CORE_ADDR tic6x_frame_base_address (struct frame_info *this_frame, void **this_cache)
static struct tic6x_unwind_cachetic6x_make_stub_cache (struct frame_info *this_frame)
static void tic6x_stub_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static int tic6x_stub_unwind_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static int tic6x_condition_true (struct frame_info *frame, unsigned long inst)
static int tic6x_extract_signed_field (int value, int low_bit, int bits)
static CORE_ADDR tic6x_get_next_pc (struct frame_info *frame, CORE_ADDR pc)
static int tic6x_software_single_step (struct frame_info *frame)
static CORE_ADDR tic6x_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
static void tic6x_extract_return_value (struct type *valtype, struct regcache *regcache, enum bfd_endian byte_order, gdb_byte *valbuf)
static void tic6x_store_return_value (struct type *valtype, struct regcache *regcache, enum bfd_endian byte_order, const gdb_byte *valbuf)
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 struct frame_id tic6x_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
static int tic6x_arg_type_alignment (struct type *type)
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 int tic6x_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR pc)
static int tic6x_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
static int tic6x_return_in_first_hidden_param_p (struct gdbarch *gdbarch, struct type *type)
static struct gdbarchtic6x_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
void _initialize_tic6x_tdep (void)

Variables

const gdb_byte tic6x_bkpt_illegal_opcode_be [] = { 0x56, 0x45, 0x43, 0x14 }
const gdb_byte tic6x_bkpt_illegal_opcode_le [] = { 0x14, 0x43, 0x45, 0x56 }
static const char *const tic6x_register_names []
static const int arg_regs [] = { 4, 20, 6, 22, 8, 24, 10, 26, 12, 28 }
static struct frame_unwind tic6x_frame_unwind
static struct frame_base tic6x_frame_base
static struct frame_unwind tic6x_stub_unwind
initialize_file_ftype _initialize_tic6x_tdep

Define Documentation

#define INST_S_BIT (   INST)    ((INST >> 1) & 1)
#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().


Function Documentation

void _initialize_tic6x_tdep ( void  )
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]
static int tic6x_arg_type_alignment ( struct type type) [static]
static const gdb_byte* tic6x_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR bp_addr,
int bp_size 
) [static]
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]
static void tic6x_dwarf2_frame_init_reg ( struct gdbarch gdbarch,
int  regnum,
struct dwarf2_frame_state_reg reg,
struct frame_info this_frame 
) [static]
static void tic6x_extract_return_value ( struct type valtype,
struct regcache regcache,
enum bfd_endian  byte_order,
gdb_byte valbuf 
) [static]
static int tic6x_extract_signed_field ( int  value,
int  low_bit,
int  bits 
) [static]

Definition at line 591 of file tic6x-tdep.c.

References bits.

Referenced by tic6x_get_next_pc().

static unsigned long tic6x_fetch_instruction ( struct gdbarch gdbarch,
CORE_ADDR  pc 
) [static]
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]
static void tic6x_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
) [static]
static struct tic6x_unwind_cache* tic6x_frame_unwind_cache ( struct frame_info this_frame,
void **  this_prologue_cache 
) [static, read]
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]
static CORE_ADDR tic6x_get_next_pc ( struct frame_info frame,
CORE_ADDR  pc 
) [static]
static int tic6x_in_function_epilogue_p ( struct gdbarch gdbarch,
CORE_ADDR  pc 
) [static]
static struct tic6x_unwind_cache* tic6x_make_stub_cache ( struct frame_info this_frame) [static, read]
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]
static const char* tic6x_register_name ( struct gdbarch gdbarch,
int  regno 
) [static]
static int tic6x_register_number ( int  reg,
int  side,
int  crosspath 
) [static]
static struct type* tic6x_register_type ( struct gdbarch gdbarch,
int  regno 
) [static, read]
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]
static void tic6x_setup_default ( struct tic6x_unwind_cache cache) [static]
static CORE_ADDR tic6x_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  start_pc 
) [static]
static int tic6x_software_single_step ( struct frame_info frame) [static]
static void tic6x_store_return_value ( struct type valtype,
struct regcache regcache,
enum bfd_endian  byte_order,
const gdb_byte valbuf 
) [static]
static void tic6x_stub_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
) [static]
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().


Variable Documentation

const int arg_regs[] = { 4, 20, 6, 22, 8, 24, 10, 26, 12, 28 } [static]

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]
Initial value:

Definition at line 487 of file tic6x-tdep.c.

const char* const tic6x_register_names[] [static]
Initial value:
{
  "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().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines