GDB (xrefs)
Classes | Enumerations | Functions | Variables
/tmp/gdb-7.10/gdb/nios2-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 "osabi.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 "infcall.h"
#include "regset.h"
#include "target-descriptions.h"
#include "objfiles.h"
#include "opcode/nios2.h"
#include "nios2-tdep.h"
#include "features/nios2.c"

Go to the source code of this file.

Classes

struct  reg_value
 
struct  reg_saved
 
struct  nios2_unwind_cache
 

Enumerations

enum  branch_condition {
  branch_none, branch_eq, branch_ne, branch_ge,
  branch_geu, branch_lt, branch_ltu
}
 

Functions

static int nios2_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dw_reg)
 
static const char * nios2_register_name (struct gdbarch *gdbarch, int regno)
 
static struct typenios2_register_type (struct gdbarch *gdbarch, int regno)
 
static void nios2_extract_return_value (struct gdbarch *gdbarch, struct type *valtype, struct regcache *regcache, gdb_byte *valbuf)
 
static void nios2_store_return_value (struct gdbarch *gdbarch, struct type *valtype, struct regcache *regcache, const gdb_byte *valbuf)
 
static void nios2_setup_default (struct nios2_unwind_cache *cache)
 
static void nios2_init_cache (struct nios2_unwind_cache *cache, CORE_ADDR pc)
 
static const struct nios2_opcode * nios2_fetch_insn (struct gdbarch *gdbarch, CORE_ADDR pc, unsigned int *insnp)
 
static int nios2_match_add (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rb, int *rc)
 
static int nios2_match_sub (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rb, int *rc)
 
static int nios2_match_addi (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rb, int *imm)
 
static int nios2_match_orhi (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rb, unsigned int *uimm)
 
static int nios2_match_stw (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rb, int *imm)
 
static int nios2_match_ldw (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rb, int *imm)
 
static int nios2_match_rdctl (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rc)
 
static int nios2_match_branch (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra, int *rb, int *imm, enum branch_condition *cond)
 
static int nios2_match_jmpi (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, unsigned int *uimm)
 
static int nios2_match_calli (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, unsigned int *uimm)
 
static int nios2_match_jmpr (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra)
 
static int nios2_match_callr (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, int *ra)
 
static int nios2_match_break (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, unsigned int *uimm)
 
static int nios2_match_trap (uint32_t insn, const struct nios2_opcode *op, unsigned long mach, unsigned int *uimm)
 
static int nios2_in_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR current_pc, CORE_ADDR start_pc)
 
static int nios2_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static CORE_ADDR nios2_analyze_prologue (struct gdbarch *gdbarch, const CORE_ADDR start_pc, const CORE_ADDR current_pc, struct nios2_unwind_cache *cache, struct frame_info *this_frame)
 
static CORE_ADDR nios2_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 
static const gdb_bytenios2_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *bp_addr, int *bp_size)
 
static int nios2_print_insn (bfd_vma memaddr, disassemble_info *info)
 
static CORE_ADDR nios2_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static enum return_value_convention nios2_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 nios2_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
 
static CORE_ADDR nios2_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 CORE_ADDR nios2_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
 
static CORE_ADDR nios2_unwind_sp (struct gdbarch *gdbarch, struct frame_info *this_frame)
 
static struct nios2_unwind_cachenios2_frame_unwind_cache (struct frame_info *this_frame, void **this_prologue_cache)
 
static void nios2_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuenios2_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
 
static CORE_ADDR nios2_frame_base_address (struct frame_info *this_frame, void **this_cache)
 
static struct trad_frame_cachenios2_stub_frame_cache (struct frame_info *this_frame, void **this_cache)
 
static void nios2_stub_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuenios2_stub_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
 
static int nios2_stub_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **cache)
 
static CORE_ADDR nios2_get_next_pc (struct frame_info *frame, CORE_ADDR pc)
 
static int nios2_software_single_step (struct frame_info *frame)
 
static int nios2_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
 
static struct gdbarchnios2_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
void _initialize_nios2_tdep (void)
 

Variables

static int nios2_debug = 0
 
static int nios2_dwarf2gdb_regno_map []
 
static const char *const nios2_reg_names [NIOS2_NUM_REGS]
 
static const struct frame_unwind nios2_frame_unwind
 
static const struct frame_base nios2_frame_base
 
static const struct frame_unwind nios2_stub_frame_unwind
 
initialize_file_ftype _initialize_nios2_tdep
 

Enumeration Type Documentation

Enumerator
branch_none 
branch_eq 
branch_ne 
branch_ge 
branch_geu 
branch_lt 
branch_ltu 

Definition at line 428 of file nios2-tdep.c.

Function Documentation

void _initialize_nios2_tdep ( void  )
static CORE_ADDR nios2_analyze_prologue ( struct gdbarch gdbarch,
const CORE_ADDR  start_pc,
const CORE_ADDR  current_pc,
struct nios2_unwind_cache cache,
struct frame_info this_frame 
)
static
static const gdb_byte* nios2_breakpoint_from_pc ( struct gdbarch gdbarch,
CORE_ADDR bp_addr,
int bp_size 
)
static
static struct frame_id nios2_dummy_id ( struct gdbarch gdbarch,
struct frame_info this_frame 
)
static
static int nios2_dwarf_reg_to_regnum ( struct gdbarch gdbarch,
int  dw_reg 
)
static

Definition at line 148 of file nios2-tdep.c.

References _, nios2_dwarf2gdb_regno_map, NIOS2_NUM_REGS, and warning().

Referenced by nios2_gdbarch_init().

static void nios2_extract_return_value ( struct gdbarch gdbarch,
struct type valtype,
struct regcache regcache,
gdb_byte valbuf 
)
static
static const struct nios2_opcode* nios2_fetch_insn ( struct gdbarch gdbarch,
CORE_ADDR  pc,
unsigned int insnp 
)
static
static CORE_ADDR nios2_frame_align ( struct gdbarch gdbarch,
CORE_ADDR  addr 
)
static

Definition at line 1236 of file nios2-tdep.c.

References align_down().

Referenced by nios2_gdbarch_init().

static CORE_ADDR nios2_frame_base_address ( struct frame_info this_frame,
void **  this_cache 
)
static

Definition at line 1451 of file nios2-tdep.c.

References nios2_unwind_cache::base, and nios2_frame_unwind_cache().

static struct value* nios2_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
)
static
static void nios2_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
)
static
static struct nios2_unwind_cache* nios2_frame_unwind_cache ( struct frame_info this_frame,
void **  this_prologue_cache 
)
static
static struct gdbarch* nios2_gdbarch_init ( struct gdbarch_info  info,
struct gdbarch_list arches 
)
static

Definition at line 1695 of file nios2-tdep.c.

References core_addr_lessthan(), dwarf2_append_unwinders(), floatformats_ieee_double, floatformats_ieee_single, frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_tdep::jb_pc, nios2_breakpoint_from_pc(), nios2_dummy_id(), nios2_dwarf_reg_to_regnum(), nios2_frame_align(), nios2_get_longjmp_target(), NIOS2_NUM_REGS, NIOS2_PC_REGNUM, nios2_print_insn(), nios2_push_dummy_call(), nios2_reg_names, nios2_register_name(), nios2_register_type(), nios2_return_value(), nios2_skip_prologue(), nios2_software_single_step(), NIOS2_SP_REGNUM, nios2_stack_frame_destroyed_p(), nios2_unwind_pc(), nios2_unwind_sp(), set_gdbarch_addr_bit(), 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_frame_align(), set_gdbarch_get_longjmp_target(), 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_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_stab_reg_to_regnum(), set_gdbarch_stack_frame_destroyed_p(), 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_nios2, tdesc_numbered_register(), tdesc_use_registers(), and xcalloc().

Referenced by _initialize_nios2_tdep().

static int nios2_get_longjmp_target ( struct frame_info frame,
CORE_ADDR pc 
)
static
static CORE_ADDR nios2_get_next_pc ( struct frame_info frame,
CORE_ADDR  pc 
)
static
static int nios2_in_epilogue_p ( struct gdbarch gdbarch,
CORE_ADDR  current_pc,
CORE_ADDR  start_pc 
)
static
static void nios2_init_cache ( struct nios2_unwind_cache cache,
CORE_ADDR  pc 
)
static
static int nios2_match_add ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rb,
int rc 
)
static

Definition at line 305 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue(), and nios2_in_epilogue_p().

static int nios2_match_addi ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rb,
int imm 
)
static

Definition at line 340 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue(), and nios2_in_epilogue_p().

static int nios2_match_branch ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rb,
int imm,
enum branch_condition cond 
)
static
static int nios2_match_break ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
unsigned int uimm 
)
static

Definition at line 553 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue().

static int nios2_match_calli ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
unsigned int uimm 
)
static

Definition at line 496 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue(), and nios2_get_next_pc().

static int nios2_match_callr ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra 
)
static

Definition at line 538 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue(), and nios2_get_next_pc().

static int nios2_match_jmpi ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
unsigned int uimm 
)
static

Definition at line 480 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue(), nios2_get_next_pc(), and nios2_in_epilogue_p().

static int nios2_match_jmpr ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra 
)
static
static int nios2_match_ldw ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rb,
int imm 
)
static

Definition at line 394 of file nios2-tdep.c.

Referenced by nios2_in_epilogue_p().

static int nios2_match_orhi ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rb,
unsigned int uimm 
)
static

Definition at line 358 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue().

static int nios2_match_rdctl ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rc 
)
static

Definition at line 411 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue().

static int nios2_match_stw ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rb,
int imm 
)
static

Definition at line 376 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue().

static int nios2_match_sub ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
int ra,
int rb,
int rc 
)
static

Definition at line 322 of file nios2-tdep.c.

Referenced by nios2_analyze_prologue().

static int nios2_match_trap ( uint32_t  insn,
const struct nios2_opcode *  op,
unsigned long  mach,
unsigned int uimm 
)
static

Definition at line 568 of file nios2-tdep.c.

Referenced by nios2_get_next_pc().

static int nios2_print_insn ( bfd_vma  memaddr,
disassemble_info *  info 
)
static

Definition at line 1224 of file nios2-tdep.c.

Referenced by nios2_gdbarch_init().

static CORE_ADDR nios2_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* nios2_register_name ( struct gdbarch gdbarch,
int  regno 
)
static

Definition at line 177 of file nios2-tdep.c.

References NIOS2_NUM_REGS, nios2_reg_names, and tdesc_register_name().

Referenced by nios2_gdbarch_init().

static struct type* nios2_register_type ( struct gdbarch gdbarch,
int  regno 
)
static
static enum return_value_convention nios2_return_value ( struct gdbarch gdbarch,
struct value function,
struct type type,
struct regcache regcache,
gdb_byte readbuf,
const gdb_byte writebuf 
)
static
static void nios2_setup_default ( struct nios2_unwind_cache cache)
static
static CORE_ADDR nios2_skip_prologue ( struct gdbarch gdbarch,
CORE_ADDR  start_pc 
)
static
static int nios2_software_single_step ( struct frame_info frame)
static
static int nios2_stack_frame_destroyed_p ( struct gdbarch gdbarch,
CORE_ADDR  pc 
)
static

Definition at line 664 of file nios2-tdep.c.

References find_pc_partial_function(), and nios2_in_epilogue_p().

Referenced by nios2_gdbarch_init().

static void nios2_store_return_value ( struct gdbarch gdbarch,
struct type valtype,
struct regcache regcache,
const gdb_byte valbuf 
)
static
static struct trad_frame_cache* nios2_stub_frame_cache ( struct frame_info this_frame,
void **  this_cache 
)
static
static struct value* nios2_stub_frame_prev_register ( struct frame_info this_frame,
void **  this_cache,
int  regnum 
)
static

Definition at line 1530 of file nios2-tdep.c.

References nios2_stub_frame_cache(), and trad_frame_get_register().

static int nios2_stub_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  cache 
)
static
static void nios2_stub_frame_this_id ( struct frame_info this_frame,
void **  this_cache,
struct frame_id this_id 
)
static

Definition at line 1518 of file nios2-tdep.c.

References nios2_stub_frame_cache(), and trad_frame_get_id().

static CORE_ADDR nios2_unwind_pc ( struct gdbarch gdbarch,
struct frame_info next_frame 
)
static

Definition at line 1356 of file nios2-tdep.c.

References extract_typed_address(), frame_unwind_register(), and NIOS2_PC_REGNUM.

Referenced by nios2_gdbarch_init().

static CORE_ADDR nios2_unwind_sp ( struct gdbarch gdbarch,
struct frame_info this_frame 
)
static

Definition at line 1367 of file nios2-tdep.c.

References frame_unwind_register_unsigned(), and NIOS2_SP_REGNUM.

Referenced by nios2_gdbarch_init().

Variable Documentation

initialize_file_ftype _initialize_nios2_tdep
int nios2_debug = 0
static

Definition at line 58 of file nios2-tdep.c.

Referenced by _initialize_nios2_tdep(), and nios2_analyze_prologue().

int nios2_dwarf2gdb_regno_map[]
static

Definition at line 110 of file nios2-tdep.c.

Referenced by nios2_dwarf_reg_to_regnum().

const struct frame_base nios2_frame_base
static
Initial value:
=
{
nios2_frame_base_address
}
static const struct frame_unwind nios2_frame_unwind
Definition: nios2-tdep.c:1462
static CORE_ADDR nios2_frame_base_address(struct frame_info *this_frame, void **this_cache)
Definition: nios2-tdep.c:1451

Definition at line 1472 of file nios2-tdep.c.

const struct frame_unwind nios2_frame_unwind
static
Initial value:
=
{
NULL,
}
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:170
static void nios2_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: nios2-tdep.c:1405
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180
static struct value * nios2_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: nios2-tdep.c:1421

Definition at line 1462 of file nios2-tdep.c.

const char* const nios2_reg_names[NIOS2_NUM_REGS]
static
Initial value:
=
{
"zero", "at", "r2", "r3", "r4", "r5", "r6", "r7",
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
"r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
"et", "bt", "gp", "sp", "fp", "ea", "sstatus", "ra",
"pc",
"status", "estatus", "bstatus", "ienable",
"ipending", "cpuid", "ctl6", "exception",
"pteaddr", "tlbacc", "tlbmisc", "eccinj",
"badaddr", "config", "mpubase", "mpuacc"
}

Definition at line 161 of file nios2-tdep.c.

Referenced by nios2_gdbarch_init(), and nios2_register_name().

const struct frame_unwind nios2_stub_frame_unwind
static
Initial value:
=
{
NULL,
}
static int nios2_stub_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **cache)
Definition: nios2-tdep.c:1545
static void nios2_stub_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: nios2-tdep.c:1518
static struct value * nios2_stub_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: nios2-tdep.c:1530
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180

Definition at line 1564 of file nios2-tdep.c.