GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Enumerations | Functions | Variables
v850-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "frame-base.h"
#include "trad-frame.h"
#include "frame-unwind.h"
#include "dwarf2/frame.h"
#include "gdbtypes.h"
#include "inferior.h"
#include "gdbcore.h"
#include "arch-utils.h"
#include "regcache.h"
#include "dis-asm.h"
#include "osabi.h"
#include "elf-bfd.h"
#include "elf/v850.h"
#include "gdbarch.h"

Go to the source code of this file.

Classes

struct  v850_gdbarch_tdep
 
struct  v850_frame_cache
 
struct  pifsr
 
struct  reg_list
 

Enumerations

enum  {
  E_R0_REGNUM , E_R1_REGNUM , E_R2_REGNUM , E_R3_REGNUM ,
  E_SP_REGNUM = E_R3_REGNUM , E_R4_REGNUM , E_R5_REGNUM , E_R6_REGNUM ,
  E_ARG0_REGNUM = E_R6_REGNUM , E_R7_REGNUM , E_R8_REGNUM , E_R9_REGNUM ,
  E_ARGLAST_REGNUM = E_R9_REGNUM , E_R10_REGNUM , E_V0_REGNUM = E_R10_REGNUM , E_R11_REGNUM ,
  E_V1_REGNUM = E_R11_REGNUM , E_R12_REGNUM , E_R13_REGNUM , E_R14_REGNUM ,
  E_R15_REGNUM , E_R16_REGNUM , E_R17_REGNUM , E_R18_REGNUM ,
  E_R19_REGNUM , E_R20_REGNUM , E_R21_REGNUM , E_R22_REGNUM ,
  E_R23_REGNUM , E_R24_REGNUM , E_R25_REGNUM , E_R26_REGNUM ,
  E_R27_REGNUM , E_R28_REGNUM , E_R29_REGNUM , E_FP_REGNUM = E_R29_REGNUM ,
  E_R30_REGNUM , E_EP_REGNUM = E_R30_REGNUM , E_R31_REGNUM , E_LP_REGNUM = E_R31_REGNUM ,
  E_R32_REGNUM , E_SR0_REGNUM = E_R32_REGNUM , E_R33_REGNUM , E_R34_REGNUM ,
  E_R35_REGNUM , E_R36_REGNUM , E_R37_REGNUM , E_PS_REGNUM = E_R37_REGNUM ,
  E_R38_REGNUM , E_R39_REGNUM , E_R40_REGNUM , E_R41_REGNUM ,
  E_R42_REGNUM , E_R43_REGNUM , E_R44_REGNUM , E_R45_REGNUM ,
  E_R46_REGNUM , E_R47_REGNUM , E_R48_REGNUM , E_R49_REGNUM ,
  E_R50_REGNUM , E_R51_REGNUM , E_R52_REGNUM , E_CTBP_REGNUM = E_R52_REGNUM ,
  E_R53_REGNUM , E_R54_REGNUM , E_R55_REGNUM , E_R56_REGNUM ,
  E_R57_REGNUM , E_R58_REGNUM , E_R59_REGNUM , E_R60_REGNUM ,
  E_R61_REGNUM , E_R62_REGNUM , E_R63_REGNUM , E_R64_REGNUM ,
  E_PC_REGNUM = E_R64_REGNUM , E_R65_REGNUM , E_NUM_OF_V850_REGS , E_NUM_OF_V850E_REGS = E_NUM_OF_V850_REGS ,
  E_R66_REGNUM = E_NUM_OF_V850_REGS , E_R67_REGNUM , E_R68_REGNUM , E_R69_REGNUM ,
  E_R70_REGNUM , E_R71_REGNUM , E_R72_REGNUM , E_R73_REGNUM ,
  E_R74_REGNUM , E_R75_REGNUM , E_R76_REGNUM , E_R77_REGNUM ,
  E_R78_REGNUM , E_R79_REGNUM , E_R80_REGNUM , E_R81_REGNUM ,
  E_R82_REGNUM , E_R83_REGNUM , E_R84_REGNUM , E_R85_REGNUM ,
  E_R86_REGNUM , E_R87_REGNUM , E_R88_REGNUM , E_R89_REGNUM ,
  E_R90_REGNUM , E_R91_REGNUM , E_R92_REGNUM , E_R93_REGNUM ,
  E_R94_REGNUM , E_R95_REGNUM , E_R96_REGNUM , E_R97_REGNUM ,
  E_R98_REGNUM , E_R99_REGNUM , E_R100_REGNUM , E_R101_REGNUM ,
  E_R102_REGNUM , E_R103_REGNUM , E_R104_REGNUM , E_R105_REGNUM ,
  E_R106_REGNUM , E_R107_REGNUM , E_R108_REGNUM , E_R109_REGNUM ,
  E_R110_REGNUM , E_R111_REGNUM , E_R112_REGNUM , E_R113_REGNUM ,
  E_R114_REGNUM , E_R115_REGNUM , E_R116_REGNUM , E_R117_REGNUM ,
  E_R118_REGNUM , E_R119_REGNUM , E_R120_REGNUM , E_R121_REGNUM ,
  E_R122_REGNUM , E_R123_REGNUM , E_R124_REGNUM , E_R125_REGNUM ,
  E_R126_REGNUM , E_R127_REGNUM , E_R128_REGNUM , E_FPSR_REGNUM = E_R128_REGNUM ,
  E_R129_REGNUM , E_FPEPC_REGNUM = E_R129_REGNUM , E_R130_REGNUM , E_FPST_REGNUM = E_R130_REGNUM ,
  E_R131_REGNUM , E_FPCC_REGNUM = E_R131_REGNUM , E_R132_REGNUM , E_FPCFG_REGNUM = E_R132_REGNUM ,
  E_R133_REGNUM , E_R134_REGNUM , E_R135_REGNUM , E_R136_REGNUM ,
  E_R137_REGNUM , E_R138_REGNUM , E_R139_REGNUM , E_R140_REGNUM ,
  E_R141_REGNUM , E_R142_REGNUM , E_R143_REGNUM , E_R144_REGNUM ,
  E_R145_REGNUM , E_R146_REGNUM , E_R147_REGNUM , E_R148_REGNUM ,
  E_R149_REGNUM , E_NUM_OF_V850E2_REGS , E_SELID_1_R0_REGNUM = E_NUM_OF_V850E2_REGS , E_SELID_1_R31_REGNUM = E_SELID_1_R0_REGNUM + 31 ,
  E_SELID_2_R0_REGNUM , E_SELID_2_R31_REGNUM = E_SELID_2_R0_REGNUM + 31 , E_SELID_3_R0_REGNUM , E_SELID_3_R31_REGNUM = E_SELID_3_R0_REGNUM + 31 ,
  E_SELID_4_R0_REGNUM , E_SELID_4_R31_REGNUM = E_SELID_4_R0_REGNUM + 31 , E_SELID_5_R0_REGNUM , E_SELID_5_R31_REGNUM = E_SELID_5_R0_REGNUM + 31 ,
  E_SELID_6_R0_REGNUM , E_SELID_6_R31_REGNUM = E_SELID_6_R0_REGNUM + 31 , E_SELID_7_R0_REGNUM , E_SELID_7_R31_REGNUM = E_SELID_7_R0_REGNUM + 31 ,
  E_VR0_REGNUM , E_VR31_REGNUM = E_VR0_REGNUM + 31 , E_NUM_OF_V850E3V5_REGS , E_NUM_REGS = E_NUM_OF_V850E3V5_REGS
}
 
enum  { v850_reg_size = 4 }
 
enum  { E_MAX_RETTYPE_SIZE_IN_REGS = 2 * v850_reg_size }
 
enum  v850_abi { V850_ABI_GCC , V850_ABI_RH850 }
 

Functions

static const char * v850_register_name (struct gdbarch *gdbarch, int regnum)
 
static const char * v850e_register_name (struct gdbarch *gdbarch, int regnum)
 
static const char * v850e2_register_name (struct gdbarch *gdbarch, int regnum)
 
static const char * v850e3v5_register_name (struct gdbarch *gdbarch, int regnum)
 
static struct typev850_register_type (struct gdbarch *gdbarch, int regnum)
 
static int v850_type_is_scalar (struct type *t)
 
static int v850_use_struct_convention (struct gdbarch *gdbarch, struct type *type)
 
static void v850_handle_prepare (int insn, int insn2, CORE_ADDR *current_pc_ptr, struct v850_frame_cache *pi, struct pifsr **pifsr_ptr)
 
static void v850_handle_pushm (int insn, int insn2, struct v850_frame_cache *pi, struct pifsr **pifsr_ptr)
 
static int v850_is_save_register (int reg)
 
static CORE_ADDR v850_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR func_addr, CORE_ADDR pc, struct v850_frame_cache *pi, ULONGEST ctbp)
 
static CORE_ADDR v850_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static int v850_eight_byte_align_p (struct type *type)
 
static CORE_ADDR v850_frame_align (struct gdbarch *ignore, CORE_ADDR sp)
 
static CORE_ADDR v850_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 void v850_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *valbuf)
 
static void v850_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
 
static enum return_value_convention v850_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static int v850_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr)
 
static const gdb_byte * v850_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 
static struct v850_frame_cachev850_alloc_frame_cache (frame_info_ptr this_frame)
 
static struct v850_frame_cache * v850_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static struct valuev850_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static void v850_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static CORE_ADDR v850_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 
static struct gdbarchv850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
void _initialize_v850_tdep ()
 

Variables

static const struct frame_unwind v850_frame_unwind
 
static const struct frame_base v850_frame_base
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
E_R0_REGNUM 
E_R1_REGNUM 
E_R2_REGNUM 
E_R3_REGNUM 
E_SP_REGNUM 
E_R4_REGNUM 
E_R5_REGNUM 
E_R6_REGNUM 
E_ARG0_REGNUM 
E_R7_REGNUM 
E_R8_REGNUM 
E_R9_REGNUM 
E_ARGLAST_REGNUM 
E_R10_REGNUM 
E_V0_REGNUM 
E_R11_REGNUM 
E_V1_REGNUM 
E_R12_REGNUM 
E_R13_REGNUM 
E_R14_REGNUM 
E_R15_REGNUM 
E_R16_REGNUM 
E_R17_REGNUM 
E_R18_REGNUM 
E_R19_REGNUM 
E_R20_REGNUM 
E_R21_REGNUM 
E_R22_REGNUM 
E_R23_REGNUM 
E_R24_REGNUM 
E_R25_REGNUM 
E_R26_REGNUM 
E_R27_REGNUM 
E_R28_REGNUM 
E_R29_REGNUM 
E_FP_REGNUM 
E_R30_REGNUM 
E_EP_REGNUM 
E_R31_REGNUM 
E_LP_REGNUM 
E_R32_REGNUM 
E_SR0_REGNUM 
E_R33_REGNUM 
E_R34_REGNUM 
E_R35_REGNUM 
E_R36_REGNUM 
E_R37_REGNUM 
E_PS_REGNUM 
E_R38_REGNUM 
E_R39_REGNUM 
E_R40_REGNUM 
E_R41_REGNUM 
E_R42_REGNUM 
E_R43_REGNUM 
E_R44_REGNUM 
E_R45_REGNUM 
E_R46_REGNUM 
E_R47_REGNUM 
E_R48_REGNUM 
E_R49_REGNUM 
E_R50_REGNUM 
E_R51_REGNUM 
E_R52_REGNUM 
E_CTBP_REGNUM 
E_R53_REGNUM 
E_R54_REGNUM 
E_R55_REGNUM 
E_R56_REGNUM 
E_R57_REGNUM 
E_R58_REGNUM 
E_R59_REGNUM 
E_R60_REGNUM 
E_R61_REGNUM 
E_R62_REGNUM 
E_R63_REGNUM 
E_R64_REGNUM 
E_PC_REGNUM 
E_R65_REGNUM 
E_NUM_OF_V850_REGS 
E_NUM_OF_V850E_REGS 
E_R66_REGNUM 
E_R67_REGNUM 
E_R68_REGNUM 
E_R69_REGNUM 
E_R70_REGNUM 
E_R71_REGNUM 
E_R72_REGNUM 
E_R73_REGNUM 
E_R74_REGNUM 
E_R75_REGNUM 
E_R76_REGNUM 
E_R77_REGNUM 
E_R78_REGNUM 
E_R79_REGNUM 
E_R80_REGNUM 
E_R81_REGNUM 
E_R82_REGNUM 
E_R83_REGNUM 
E_R84_REGNUM 
E_R85_REGNUM 
E_R86_REGNUM 
E_R87_REGNUM 
E_R88_REGNUM 
E_R89_REGNUM 
E_R90_REGNUM 
E_R91_REGNUM 
E_R92_REGNUM 
E_R93_REGNUM 
E_R94_REGNUM 
E_R95_REGNUM 
E_R96_REGNUM 
E_R97_REGNUM 
E_R98_REGNUM 
E_R99_REGNUM 
E_R100_REGNUM 
E_R101_REGNUM 
E_R102_REGNUM 
E_R103_REGNUM 
E_R104_REGNUM 
E_R105_REGNUM 
E_R106_REGNUM 
E_R107_REGNUM 
E_R108_REGNUM 
E_R109_REGNUM 
E_R110_REGNUM 
E_R111_REGNUM 
E_R112_REGNUM 
E_R113_REGNUM 
E_R114_REGNUM 
E_R115_REGNUM 
E_R116_REGNUM 
E_R117_REGNUM 
E_R118_REGNUM 
E_R119_REGNUM 
E_R120_REGNUM 
E_R121_REGNUM 
E_R122_REGNUM 
E_R123_REGNUM 
E_R124_REGNUM 
E_R125_REGNUM 
E_R126_REGNUM 
E_R127_REGNUM 
E_R128_REGNUM 
E_FPSR_REGNUM 
E_R129_REGNUM 
E_FPEPC_REGNUM 
E_R130_REGNUM 
E_FPST_REGNUM 
E_R131_REGNUM 
E_FPCC_REGNUM 
E_R132_REGNUM 
E_FPCFG_REGNUM 
E_R133_REGNUM 
E_R134_REGNUM 
E_R135_REGNUM 
E_R136_REGNUM 
E_R137_REGNUM 
E_R138_REGNUM 
E_R139_REGNUM 
E_R140_REGNUM 
E_R141_REGNUM 
E_R142_REGNUM 
E_R143_REGNUM 
E_R144_REGNUM 
E_R145_REGNUM 
E_R146_REGNUM 
E_R147_REGNUM 
E_R148_REGNUM 
E_R149_REGNUM 
E_NUM_OF_V850E2_REGS 
E_SELID_1_R0_REGNUM 
E_SELID_1_R31_REGNUM 
E_SELID_2_R0_REGNUM 
E_SELID_2_R31_REGNUM 
E_SELID_3_R0_REGNUM 
E_SELID_3_R31_REGNUM 
E_SELID_4_R0_REGNUM 
E_SELID_4_R31_REGNUM 
E_SELID_5_R0_REGNUM 
E_SELID_5_R31_REGNUM 
E_SELID_6_R0_REGNUM 
E_SELID_6_R31_REGNUM 
E_SELID_7_R0_REGNUM 
E_SELID_7_R31_REGNUM 
E_VR0_REGNUM 
E_VR31_REGNUM 
E_NUM_OF_V850E3V5_REGS 
E_NUM_REGS 

Definition at line 37 of file v850-tdep.c.

◆ anonymous enum

anonymous enum
Enumerator
v850_reg_size 

Definition at line 236 of file v850-tdep.c.

◆ anonymous enum

anonymous enum
Enumerator
E_MAX_RETTYPE_SIZE_IN_REGS 

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

◆ v850_abi

enum v850_abi
Enumerator
V850_ABI_GCC 
V850_ABI_RH850 

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

Function Documentation

◆ _initialize_v850_tdep()

void _initialize_v850_tdep ( )

Definition at line 1465 of file v850-tdep.c.

References gdbarch_register(), and v850_gdbarch_init().

◆ v850_alloc_frame_cache()

static struct v850_frame_cache * v850_alloc_frame_cache ( frame_info_ptr this_frame)
static

◆ v850_analyze_prologue()

static CORE_ADDR v850_analyze_prologue ( struct gdbarch * gdbarch,
CORE_ADDR func_addr,
CORE_ADDR pc,
struct v850_frame_cache * pi,
ULONGEST ctbp )
static

◆ v850_breakpoint_kind_from_pc()

static int v850_breakpoint_kind_from_pc ( struct gdbarch * gdbarch,
CORE_ADDR * pcptr )
static

Definition at line 1177 of file v850-tdep.c.

Referenced by v850_gdbarch_init().

◆ v850_eight_byte_align_p()

static int v850_eight_byte_align_p ( struct type * type)
static

◆ v850_extract_return_value()

static void v850_extract_return_value ( struct type * type,
struct regcache * regcache,
gdb_byte * valbuf )
static

◆ v850_frame_align()

static CORE_ADDR v850_frame_align ( struct gdbarch * ignore,
CORE_ADDR sp )
static

Definition at line 994 of file v850-tdep.c.

Referenced by v850_gdbarch_init().

◆ v850_frame_base_address()

static CORE_ADDR v850_frame_base_address ( frame_info_ptr this_frame,
void ** this_cache )
static

Definition at line 1334 of file v850-tdep.c.

References v850_frame_cache::base, and v850_frame_cache().

◆ v850_frame_cache()

static struct v850_frame_cache * v850_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ v850_frame_prev_register()

static struct value * v850_frame_prev_register ( frame_info_ptr this_frame,
void ** this_cache,
int regnum )
static

◆ v850_frame_this_id()

static void v850_frame_this_id ( frame_info_ptr this_frame,
void ** this_cache,
struct frame_id * this_id )
static

◆ v850_gdbarch_init()

static struct gdbarch * v850_gdbarch_init ( struct gdbarch_info info,
struct gdbarch_list * arches )
static

◆ v850_handle_prepare()

static void v850_handle_prepare ( int insn,
int insn2,
CORE_ADDR * current_pc_ptr,
struct v850_frame_cache * pi,
struct pifsr ** pifsr_ptr )
static

◆ v850_handle_pushm()

static void v850_handle_pushm ( int insn,
int insn2,
struct v850_frame_cache * pi,
struct pifsr ** pifsr_ptr )
static

◆ v850_is_save_register()

static int v850_is_save_register ( int reg)
static

Definition at line 756 of file v850-tdep.c.

References E_R20_REGNUM, E_R29_REGNUM, E_R2_REGNUM, and E_R31_REGNUM.

Referenced by v850_analyze_prologue().

◆ v850_push_dummy_call()

static CORE_ADDR v850_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

◆ v850_register_name()

static const char * v850_register_name ( struct gdbarch * gdbarch,
int regnum )
static

Definition at line 302 of file v850-tdep.c.

References E_NUM_OF_V850_REGS, gdb_static_assert(), and regnum.

Referenced by v850_gdbarch_init().

◆ v850_register_type()

static struct type * v850_register_type ( struct gdbarch * gdbarch,
int regnum )
static

◆ v850_return_value()

static enum return_value_convention v850_return_value ( struct gdbarch * gdbarch,
struct value * function,
struct type * type,
struct regcache * regcache,
gdb_byte * readbuf,
const gdb_byte * writebuf )
static

◆ v850_skip_prologue()

static CORE_ADDR v850_skip_prologue ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

◆ v850_store_return_value()

static void v850_store_return_value ( struct type * type,
struct regcache * regcache,
const gdb_byte * valbuf )
static

◆ v850_sw_breakpoint_from_kind()

static const gdb_byte * v850_sw_breakpoint_from_kind ( struct gdbarch * gdbarch,
int kind,
int * size )
static

Definition at line 1185 of file v850-tdep.c.

References gdbarch_bfd_arch_info(), and size.

Referenced by v850_gdbarch_init().

◆ v850_type_is_scalar()

static int v850_type_is_scalar ( struct type * t)
static

Definition at line 498 of file v850-tdep.c.

References type::code().

Referenced by v850_eight_byte_align_p(), v850_push_dummy_call(), and v850_use_struct_convention().

◆ v850_use_struct_convention()

static int v850_use_struct_convention ( struct gdbarch * gdbarch,
struct type * type )
static

◆ v850e2_register_name()

static const char * v850e2_register_name ( struct gdbarch * gdbarch,
int regnum )
static

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

References E_NUM_OF_V850E2_REGS, and regnum.

Referenced by v850_gdbarch_init().

◆ v850e3v5_register_name()

static const char * v850e3v5_register_name ( struct gdbarch * gdbarch,
int regnum )
static

Definition at line 385 of file v850-tdep.c.

References E_NUM_OF_V850E3V5_REGS, gdb_static_assert(), and regnum.

Referenced by v850_gdbarch_init().

◆ v850e_register_name()

static const char * v850e_register_name ( struct gdbarch * gdbarch,
int regnum )
static

Definition at line 320 of file v850-tdep.c.

References E_NUM_OF_V850E_REGS, gdb_static_assert(), and regnum.

Referenced by v850_gdbarch_init().

Variable Documentation

◆ v850_frame_base

const struct frame_base v850_frame_base
static
Initial value:
= {
}
static CORE_ADDR v850_frame_base_address(frame_info_ptr this_frame, void **this_cache)
Definition v850-tdep.c:1334
static const struct frame_unwind v850_frame_unwind
Definition v850-tdep.c:1323

Definition at line 1341 of file v850-tdep.c.

Referenced by v850_gdbarch_init().

◆ v850_frame_unwind

const struct frame_unwind v850_frame_unwind
static
Initial value:
= {
"v850 prologue",
NULL,
}
int default_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
@ NORMAL_FRAME
Definition frame.h:187
static struct value * v850_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
Definition v850-tdep.c:1300
static void v850_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
Definition v850-tdep.c:1311

Definition at line 1323 of file v850-tdep.c.

Referenced by v850_gdbarch_init().