GDB (xrefs)
Classes | Enumerations | Functions | Variables
/home/stan/gdb/src/gdb/avr-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "gdbtypes.h"
#include "inferior.h"
#include "symfile.h"
#include "arch-utils.h"
#include "regcache.h"
#include "gdb_string.h"
#include "dis-asm.h"

Go to the source code of this file.

Classes

struct  avr_unwind_cache
struct  gdbarch_tdep
struct  stack_item

Enumerations

enum  {
  AVR_REG_W = 24, AVR_REG_X = 26, AVR_REG_Y = 28, AVR_FP_REGNUM = 28,
  AVR_REG_Z = 30, AVR_SREG_REGNUM = 32, AVR_SP_REGNUM = 33, AVR_PC_REGNUM = 34,
  AVR_NUM_REGS = 32 + 1 + 1 + 1, AVR_NUM_REG_BYTES = 32 + 1 + 2 + 4, AVR_PSEUDO_PC_REGNUM = 35, AVR_NUM_PSEUDO_REGS = 1,
  AVR_PC_REG_INDEX = 35, AVR_MAX_PROLOGUE_SIZE = 64, AVR_MAX_PUSHES = 18, AVR_LAST_PUSHED_REGNUM = 17,
  AVR_ARG1_REGNUM = 24, AVR_ARGN_REGNUM = 25, AVR_RET1_REGNUM = 24, AVR_RETN_REGNUM = 25,
  AVR_IMEM_START = 0x00000000, AVR_SMEM_START = 0x00800000, AVR_MEM_MASK = 0x00f00000
}
enum  {
  AVR_PROLOGUE_NONE, AVR_PROLOGUE_NORMAL, AVR_PROLOGUE_CALL, AVR_PROLOGUE_MAIN,
  AVR_PROLOGUE_INTR, AVR_PROLOGUE_SIG
}

Functions

static const char * avr_register_name (struct gdbarch *gdbarch, int regnum)
static struct typeavr_register_type (struct gdbarch *gdbarch, int reg_nr)
static CORE_ADDR avr_make_iaddr (CORE_ADDR x)
static CORE_ADDR avr_convert_iaddr_to_raw (CORE_ADDR x)
static CORE_ADDR avr_make_saddr (CORE_ADDR x)
static CORE_ADDR avr_convert_saddr_to_raw (CORE_ADDR x)
static void avr_address_to_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr)
static CORE_ADDR avr_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf)
static CORE_ADDR avr_integer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf)
static CORE_ADDR avr_read_pc (struct regcache *regcache)
static void avr_write_pc (struct regcache *regcache, CORE_ADDR val)
static enum register_status avr_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, gdb_byte *buf)
static void avr_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf)
static CORE_ADDR avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end, struct avr_unwind_cache *info)
static CORE_ADDR avr_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
static const unsigned char * avr_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
static enum return_value_convention avr_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
static struct avr_unwind_cacheavr_frame_unwind_cache (struct frame_info *this_frame, void **this_prologue_cache)
static CORE_ADDR avr_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
static CORE_ADDR avr_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
static void avr_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
static struct valueavr_frame_prev_register (struct frame_info *this_frame, void **this_prologue_cache, int regnum)
static CORE_ADDR avr_frame_base_address (struct frame_info *this_frame, void **this_cache)
static struct frame_id avr_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
static struct stack_itempush_stack_item (struct stack_item *prev, const bfd_byte *contents, int len)
static struct stack_itempop_stack_item (struct stack_item *si)
static CORE_ADDR avr_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 avr_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
static struct gdbarchavr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
static void avr_io_reg_read_command (char *args, int from_tty)
void _initialize_avr_tdep (void)

Variables

static struct frame_unwind avr_frame_unwind
static struct frame_base avr_frame_base
initialize_file_ftype _initialize_avr_tdep

Enumeration Type Documentation

anonymous enum
Enumerator:
AVR_REG_W 
AVR_REG_X 
AVR_REG_Y 
AVR_FP_REGNUM 
AVR_REG_Z 
AVR_SREG_REGNUM 
AVR_SP_REGNUM 
AVR_PC_REGNUM 
AVR_NUM_REGS 
AVR_NUM_REG_BYTES 
AVR_PSEUDO_PC_REGNUM 
AVR_NUM_PSEUDO_REGS 
AVR_PC_REG_INDEX 
AVR_MAX_PROLOGUE_SIZE 
AVR_MAX_PUSHES 
AVR_LAST_PUSHED_REGNUM 
AVR_ARG1_REGNUM 
AVR_ARGN_REGNUM 
AVR_RET1_REGNUM 
AVR_RETN_REGNUM 
AVR_IMEM_START 
AVR_SMEM_START 
AVR_MEM_MASK 

Definition at line 73 of file avr-tdep.c.

anonymous enum
Enumerator:
AVR_PROLOGUE_NONE 
AVR_PROLOGUE_NORMAL 
AVR_PROLOGUE_CALL 
AVR_PROLOGUE_MAIN 
AVR_PROLOGUE_INTR 
AVR_PROLOGUE_SIG 

Definition at line 146 of file avr-tdep.c.


Function Documentation

void _initialize_avr_tdep ( void  )
static void avr_address_to_pointer ( struct gdbarch gdbarch,
struct type type,
gdb_byte buf,
CORE_ADDR  addr 
) [static]
static const unsigned char* avr_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR pcptr,
int lenptr 
) [static]

Definition at line 886 of file avr-tdep.c.

Referenced by avr_gdbarch_init().

Definition at line 242 of file avr-tdep.c.

Referenced by avr_address_to_pointer(), avr_push_dummy_call(), and avr_write_pc().

Definition at line 260 of file avr-tdep.c.

Referenced by avr_address_to_pointer(), and avr_push_dummy_call().

static struct frame_id avr_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
) [static, read]
static int avr_dwarf_reg_to_regnum ( struct gdbarch gdbarch,
int  reg 
) [static]

Definition at line 1332 of file avr-tdep.c.

References _, AVR_SP_REGNUM, and warning().

Referenced by avr_gdbarch_init().

static CORE_ADDR avr_frame_base_address ( struct frame_info this_frame,
void **  this_cache 
) [static]

Definition at line 1137 of file avr-tdep.c.

References avr_frame_unwind_cache(), and avr_unwind_cache::base.

static struct value* avr_frame_prev_register ( struct frame_info this_frame,
void **  this_prologue_cache,
int  regnum 
) [static, read]
static void avr_frame_this_id ( struct frame_info this_frame,
void **  this_prologue_cache,
struct frame_id this_id 
) [static]
static struct avr_unwind_cache* avr_frame_unwind_cache ( struct frame_info this_frame,
void **  this_prologue_cache 
) [static, read]
static struct gdbarch* avr_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
) [static, read]

Definition at line 1347 of file avr-tdep.c.

References arch_type(), avr_address_to_pointer(), avr_breakpoint_from_pc(), avr_dummy_id(), avr_dwarf_reg_to_regnum(), avr_integer_to_address(), AVR_NUM_PSEUDO_REGS, AVR_NUM_REGS, AVR_PC_REGNUM, avr_pointer_to_address(), avr_pseudo_register_read(), avr_pseudo_register_write(), avr_push_dummy_call(), avr_read_pc(), avr_register_name(), avr_register_type(), avr_return_value(), avr_skip_prologue(), AVR_SP_REGNUM, avr_unwind_pc(), avr_unwind_sp(), avr_write_pc(), gdbarch_info::bfd_arch_info, gdbarch_tdep::call_length, core_addr_lessthan(), floatformats_ieee_single, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_tdep::func_void_type, gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_list_lookup_by_info(), make_function_type(), gdbarch_list::next, gdbarch_tdep::pc_type, set_gdbarch_addr_bit(), set_gdbarch_address_to_pointer(), set_gdbarch_breakpoint_from_pc(), set_gdbarch_double_bit(), set_gdbarch_double_format(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_float_bit(), set_gdbarch_float_format(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_integer_to_address(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_long_long_bit(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_pointer_to_address(), set_gdbarch_print_insn(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_read_pc(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), set_gdbarch_write_pc(), TYPE_CODE_PTR, TYPE_CODE_VOID, TYPE_TARGET_TYPE, TYPE_UNSIGNED, gdbarch_tdep::void_type, and XMALLOC.

Referenced by _initialize_avr_tdep().

static CORE_ADDR avr_integer_to_address ( struct gdbarch gdbarch,
struct type type,
const gdb_byte buf 
) [static]

Definition at line 330 of file avr-tdep.c.

References avr_make_saddr(), ULONGEST, and unpack_long().

Referenced by avr_gdbarch_init().

static void avr_io_reg_read_command ( char *  args,
int  from_tty 
) [static]
static CORE_ADDR avr_make_iaddr ( CORE_ADDR  x) [static]

Definition at line 231 of file avr-tdep.c.

References AVR_IMEM_START.

Referenced by avr_pointer_to_address(), avr_read_pc(), and avr_unwind_pc().

static CORE_ADDR avr_make_saddr ( CORE_ADDR  x) [static]
static CORE_ADDR avr_pointer_to_address ( struct gdbarch gdbarch,
struct type type,
const gdb_byte buf 
) [static]
static enum register_status avr_pseudo_register_read ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
gdb_byte buf 
) [static]
static void avr_pseudo_register_write ( struct gdbarch gdbarch,
struct regcache regcache,
int  regnum,
const gdb_byte buf 
) [static]
static CORE_ADDR avr_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 CORE_ADDR avr_read_pc ( struct regcache regcache) [static]

Definition at line 339 of file avr-tdep.c.

References avr_make_iaddr(), AVR_PC_REGNUM, regcache_cooked_read_unsigned(), and ULONGEST.

Referenced by avr_gdbarch_init().

static const char* avr_register_name ( struct gdbarch gdbarch,
int  regnum 
) [static]

Definition at line 196 of file avr-tdep.c.

References regnum.

Referenced by avr_gdbarch_init().

static struct type* avr_register_type ( struct gdbarch gdbarch,
int  reg_nr 
) [static, read]
static enum return_value_convention avr_return_value ( struct gdbarch gdbarch,
struct value function,
struct type valtype,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
) [static]
static CORE_ADDR avr_scan_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc_beg,
CORE_ADDR  pc_end,
struct avr_unwind_cache info 
) [static]
static CORE_ADDR avr_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  pc 
) [static]
static CORE_ADDR avr_unwind_pc ( struct gdbarch gdbarch,
struct frame_info next_frame 
) [static]
static CORE_ADDR avr_unwind_sp ( struct gdbarch gdbarch,
struct frame_info next_frame 
) [static]
static void avr_write_pc ( struct regcache regcache,
CORE_ADDR  val 
) [static]

Definition at line 347 of file avr-tdep.c.

References avr_convert_iaddr_to_raw(), AVR_PC_REGNUM, and regcache_cooked_write_unsigned().

Referenced by avr_gdbarch_init().

static struct stack_item * pop_stack_item ( struct stack_item si) [static, read]

Definition at line 1189 of file avr-tdep.c.

References stack_item::data, stack_item::prev, and xfree().

Referenced by avr_push_dummy_call().

static struct stack_item* push_stack_item ( struct stack_item prev,
const bfd_byte *  contents,
int  len 
) [static, read]

Definition at line 1176 of file avr-tdep.c.

References stack_item::data, len, stack_item::len, memcpy(), stack_item::prev, and xmalloc().

Referenced by avr_push_dummy_call().


Variable Documentation

struct frame_base avr_frame_base [static]
Initial value:

Definition at line 1145 of file avr-tdep.c.

struct frame_unwind avr_frame_unwind [static]
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines