GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions | Variables
cris-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 "value.h"
#include "opcode/cris.h"
#include "osabi.h"
#include "arch-utils.h"
#include "regcache.h"
#include "regset.h"
#include "objfiles.h"
#include "solib.h"
#include "solib-svr4.h"
#include "dis-asm.h"
#include "cris-tdep.h"

Go to the source code of this file.

Classes

struct  cris_unwind_cache
 
struct  instruction_environment
 
struct  cris_stack_item
 

Macros

#define SIGTRAMP_INSN0   0x9c5f /* movu.w 0xXX, $r9 */
 
#define SIGTRAMP_OFFSET0   0
 
#define SIGTRAMP_INSN1   0xe93d /* break 13 */
 
#define SIGTRAMP_OFFSET1   4
 
#define SIGTRAMP_LEN   (sizeof sigtramp_code)
 
#define CRISV10_ELF_NGREG   35
 
#define CRISV32_ELF_NGREG   32
 

Typedefs

typedef struct instruction_environment inst_env_type
 
typedef unsigned char cris_elf_greg_t[4]
 
typedef cris_elf_greg_t cris_elf_gregset_t[CRISV10_ELF_NGREG]
 
typedef cris_elf_greg_t crisv32_elf_gregset_t[CRISV32_ELF_NGREG]
 

Enumerations

enum  cris_num_regs { NUM_FREGS = 0 , NUM_GENREGS = 16 , NUM_SPECREGS = 16 , NUM_SUPPREGS = 16 }
 
enum  cris_regnums {
  CRIS_FP_REGNUM = 8 , STR_REGNUM = 9 , RET_REGNUM = 10 , ARG1_REGNUM = 10 ,
  ARG2_REGNUM = 11 , ARG3_REGNUM = 12 , ARG4_REGNUM = 13 , VR_REGNUM = 17 ,
  MOF_REGNUM = 23 , SRP_REGNUM = 27 , P0_REGNUM = 16 , P4_REGNUM = 20 ,
  CCR_REGNUM = 21 , P8_REGNUM = 24 , IBR_REGNUM = 25 , IRP_REGNUM = 26 ,
  BAR_REGNUM = 28 , DCCR_REGNUM = 29 , BRP_REGNUM = 30 , USP_REGNUM = 31 ,
  ACR_REGNUM = 15 , BZ_REGNUM = 16 , PID_REGNUM = 18 , SRS_REGNUM = 19 ,
  WZ_REGNUM = 20 , EXS_REGNUM = 21 , EDA_REGNUM = 22 , DZ_REGNUM = 24 ,
  EBP_REGNUM = 25 , ERP_REGNUM = 26 , NRP_REGNUM = 28 , CCS_REGNUM = 29 ,
  CRISV32USP_REGNUM = 30 , SPC_REGNUM = 31 , CRISV32PC_REGNUM = 32 , S0_REGNUM = 33 ,
  S1_REGNUM = 34 , S2_REGNUM = 35 , S3_REGNUM = 36 , S4_REGNUM = 37 ,
  S5_REGNUM = 38 , S6_REGNUM = 39 , S7_REGNUM = 40 , S8_REGNUM = 41 ,
  S9_REGNUM = 42 , S10_REGNUM = 43 , S11_REGNUM = 44 , S12_REGNUM = 45 ,
  S13_REGNUM = 46 , S14_REGNUM = 47 , S15_REGNUM = 48
}
 
enum  cris_instruction_sizes { INST_BYTE_SIZE = 0 , INST_WORD_SIZE = 1 , INST_DWORD_SIZE = 2 }
 
enum  cris_addressing_modes { REGISTER_MODE = 1 , INDIRECT_MODE = 2 , AUTOINC_MODE = 3 }
 
enum  cris_prefix_addressing_modes { PREFIX_INDEX_MODE = 2 , PREFIX_ASSIGN_MODE = 3 , PREFIX_OFFSET_MODE = 2 }
 
enum  cris_opcode_masks {
  BRANCH_SIGNED_SHORT_OFFSET_MASK = 0x1 , SIGNED_EXTEND_BIT_MASK = 0x2 , SIGNED_BYTE_MASK = 0x80 , SIGNED_BYTE_EXTEND_MASK = 0xFFFFFF00 ,
  SIGNED_WORD_MASK = 0x8000 , SIGNED_WORD_EXTEND_MASK = 0xFFFF0000 , SIGNED_DWORD_MASK = 0x80000000 , SIGNED_QUICK_VALUE_MASK = 0x20 ,
  SIGNED_QUICK_VALUE_EXTEND_MASK = 0xFFFFFFC0
}
 

Functions

static CORE_ADDR cris_sigtramp_start (frame_info_ptr this_frame)
 
static CORE_ADDR cris_rt_sigtramp_start (frame_info_ptr this_frame)
 
static CORE_ADDR cris_sigcontext_addr (frame_info_ptr this_frame)
 
static struct cris_unwind_cachecris_sigtramp_frame_unwind_cache (frame_info_ptr this_frame, void **this_cache)
 
static void cris_sigtramp_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuecris_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static struct valuecris_sigtramp_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static int cris_sigtramp_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
 
static int crisv32_single_step_through_delay (struct gdbarch *gdbarch, frame_info_ptr this_frame)
 
static int cris_get_operand2 (unsigned short insn)
 
static int cris_get_mode (unsigned short insn)
 
static int cris_get_opcode (unsigned short insn)
 
static int cris_get_size (unsigned short insn)
 
static int cris_get_operand1 (unsigned short insn)
 
static int cris_get_quick_value (unsigned short insn)
 
static int cris_get_bdap_quick_offset (unsigned short insn)
 
static int cris_get_branch_short_offset (unsigned short insn)
 
static int cris_get_asr_shift_steps (unsigned long value)
 
static int cris_get_clear_size (unsigned short insn)
 
static int cris_is_signed_extend_bit_on (unsigned short insn)
 
static int cris_is_xflag_bit_on (unsigned short insn)
 
static void cris_set_size_to_dword (unsigned short *insn)
 
static signed char cris_get_signed_offset (unsigned short insn)
 
static void cris_gdb_func (struct gdbarch *, enum cris_op_type, unsigned short, inst_env_type *)
 
static struct gdbarchcris_gdbarch_init (struct gdbarch_info, struct gdbarch_list *)
 
static void cris_dump_tdep (struct gdbarch *, struct ui_file *)
 
static void set_cris_version (const char *ignore_args, int from_tty, struct cmd_list_element *c)
 
static void set_cris_mode (const char *ignore_args, int from_tty, struct cmd_list_element *c)
 
static void set_cris_dwarf2_cfi (const char *ignore_args, int from_tty, struct cmd_list_element *c)
 
static CORE_ADDR cris_scan_prologue (CORE_ADDR pc, frame_info_ptr this_frame, struct cris_unwind_cache *info)
 
static CORE_ADDR crisv32_scan_prologue (CORE_ADDR pc, frame_info_ptr this_frame, struct cris_unwind_cache *info)
 
static struct cris_stack_itempush_stack_item (struct cris_stack_item *prev, const gdb_byte *contents, int len)
 
static struct cris_stack_itempop_stack_item (struct cris_stack_item *si)
 
static struct cris_unwind_cachecris_frame_unwind_cache (frame_info_ptr this_frame, void **this_prologue_cache)
 
static void cris_frame_this_id (frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)
 
static CORE_ADDR cris_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
 
static CORE_ADDR cris_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache)
 
static CORE_ADDR cris_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 CORE_ADDR cris_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 
static CORE_ADDR cris_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static int cris_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr)
 
static const gdb_byte * cris_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 
static int cris_spec_reg_applicable (struct gdbarch *gdbarch, struct cris_spec_reg spec_reg)
 
static int cris_register_size (struct gdbarch *gdbarch, int regno)
 
static int cris_cannot_fetch_register (struct gdbarch *gdbarch, int regno)
 
static int cris_cannot_store_register (struct gdbarch *gdbarch, int regno)
 
static int crisv32_cannot_fetch_register (struct gdbarch *gdbarch, int regno)
 
static int crisv32_cannot_store_register (struct gdbarch *gdbarch, int regno)
 
static struct typecris_register_type (struct gdbarch *gdbarch, int regno)
 
static struct typecrisv32_register_type (struct gdbarch *gdbarch, int regno)
 
static void cris_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
 
static const char * cris_special_register_name (struct gdbarch *gdbarch, int regno)
 
static const char * cris_register_name (struct gdbarch *gdbarch, int regno)
 
static const char * crisv32_register_name (struct gdbarch *gdbarch, int regno)
 
static int cris_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 
static void cris_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, frame_info_ptr this_frame)
 
static void cris_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *valbuf)
 
static enum return_value_convention cris_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static int constraint (unsigned int insn, const char *inst_args, inst_env_type *inst_env)
 
static int number_of_bits (unsigned int value)
 
static int find_cris_op (unsigned short insn, inst_env_type *inst_env)
 
static int find_step_target (struct regcache *regcache, inst_env_type *inst_env)
 
static std::vector< CORE_ADDR > cris_software_single_step (struct regcache *regcache)
 
static void quick_mode_bdap_prefix (unsigned short inst, inst_env_type *inst_env)
 
static void process_autoincrement (int size, unsigned short inst, inst_env_type *inst_env)
 
static unsigned long get_data_from_address (unsigned short *inst, CORE_ADDR address, enum bfd_endian byte_order)
 
static void bdap_prefix (unsigned short inst, inst_env_type *inst_env)
 
static void biap_prefix (unsigned short inst, inst_env_type *inst_env)
 
static void dip_prefix (unsigned short inst, inst_env_type *inst_env)
 
static void eight_bit_offset_branch_op (unsigned short inst, inst_env_type *inst_env)
 
static void sixteen_bit_offset_branch_op (unsigned short inst, inst_env_type *inst_env)
 
static void abs_op (unsigned short inst, inst_env_type *inst_env)
 
static void addi_op (unsigned short inst, inst_env_type *inst_env)
 
static void asr_op (unsigned short inst, inst_env_type *inst_env)
 
static void asrq_op (unsigned short inst, inst_env_type *inst_env)
 
static void ax_ei_setf_op (unsigned short inst, inst_env_type *inst_env)
 
static void check_assign (unsigned short inst, inst_env_type *inst_env)
 
static void two_operand_bound_op (unsigned short inst, inst_env_type *inst_env)
 
static void three_operand_bound_op (unsigned short inst, inst_env_type *inst_env)
 
static void btst_nop_op (unsigned short inst, inst_env_type *inst_env)
 
static void clearf_di_op (unsigned short inst, inst_env_type *inst_env)
 
static void reg_mode_clear_op (unsigned short inst, inst_env_type *inst_env)
 
static void reg_mode_test_op (unsigned short inst, inst_env_type *inst_env)
 
static void none_reg_mode_clear_test_op (unsigned short inst, inst_env_type *inst_env)
 
static void dstep_logshift_mstep_neg_not_op (unsigned short inst, inst_env_type *inst_env)
 
static void break_op (unsigned short inst, inst_env_type *inst_env)
 
static void scc_op (unsigned short inst, inst_env_type *inst_env)
 
static void reg_mode_jump_op (unsigned short inst, inst_env_type *inst_env)
 
static void none_reg_mode_jump_op (unsigned short inst, inst_env_type *inst_env)
 
static void move_to_preg_op (struct gdbarch *gdbarch, unsigned short inst, inst_env_type *inst_env)
 
static void none_reg_mode_move_from_preg_op (struct gdbarch *gdbarch, unsigned short inst, inst_env_type *inst_env)
 
static void reg_mode_move_from_preg_op (unsigned short inst, inst_env_type *inst_env)
 
static void move_mem_to_reg_movem_op (unsigned short inst, inst_env_type *inst_env)
 
static void move_reg_to_mem_movem_op (unsigned short inst, inst_env_type *inst_env)
 
static void not_implemented_op (unsigned short inst, inst_env_type *inst_env)
 
static void xor_op (unsigned short inst, inst_env_type *inst_env)
 
static void muls_op (unsigned short inst, inst_env_type *inst_env)
 
static void mulu_op (unsigned short inst, inst_env_type *inst_env)
 
static void add_sub_cmp_and_or_move_action (unsigned short inst, inst_env_type *inst_env, unsigned long source1, unsigned long source2)
 
static unsigned long do_sign_or_zero_extend (unsigned long value, unsigned short *inst)
 
static void reg_mode_add_sub_cmp_and_or_move_op (unsigned short inst, inst_env_type *inst_env)
 
static void handle_prefix_assign_mode_for_aritm_op (unsigned short inst, inst_env_type *inst_env)
 
static void three_operand_add_sub_cmp_and_or_op (unsigned short inst, inst_env_type *inst_env)
 
static void handle_prefix_index_mode_for_aritm_op (unsigned short inst, inst_env_type *inst_env)
 
static void handle_inc_and_index_mode_for_aritm_op (unsigned short inst, inst_env_type *inst_env)
 
static void none_reg_mode_add_sub_cmp_and_or_move_op (unsigned short inst, inst_env_type *inst_env)
 
static void quick_mode_add_sub_op (unsigned short inst, inst_env_type *inst_env)
 
static void quick_mode_and_cmp_move_or_op (unsigned short inst, inst_env_type *inst_env)
 
static void cris_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
 
static void cris_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
 
void _initialize_cris_tdep ()
 

Variables

const struct cris_spec_reg cris_spec_regs []
 
static unsigned int usr_cmd_cris_version
 
static bool usr_cmd_cris_version_valid = false
 
static const char cris_mode_normal [] = "normal"
 
static const char cris_mode_guru [] = "guru"
 
static const char *const cris_modes []
 
static const char * usr_cmd_cris_mode = cris_mode_normal
 
static bool usr_cmd_cris_dwarf2_cfi = true
 
static const unsigned short sigtramp_code []
 
static const unsigned short rt_sigtramp_code []
 
static const struct frame_unwind cris_sigtramp_frame_unwind
 
static const struct frame_unwind cris_frame_unwind
 
static const struct frame_base cris_frame_base
 
static const struct regset cris_regset
 

Macro Definition Documentation

◆ CRISV10_ELF_NGREG

#define CRISV10_ELF_NGREG   35

Definition at line 3758 of file cris-tdep.c.

◆ CRISV32_ELF_NGREG

#define CRISV32_ELF_NGREG   32

Definition at line 3761 of file cris-tdep.c.

◆ SIGTRAMP_INSN0

#define SIGTRAMP_INSN0   0x9c5f /* movu.w 0xXX, $r9 */

Definition at line 171 of file cris-tdep.c.

Referenced by cris_rt_sigtramp_start(), and cris_sigtramp_start().

◆ SIGTRAMP_INSN1

#define SIGTRAMP_INSN1   0xe93d /* break 13 */

Definition at line 173 of file cris-tdep.c.

Referenced by cris_rt_sigtramp_start(), and cris_sigtramp_start().

◆ SIGTRAMP_LEN

#define SIGTRAMP_LEN   (sizeof sigtramp_code)

Definition at line 182 of file cris-tdep.c.

Referenced by cris_rt_sigtramp_start(), and cris_sigtramp_start().

◆ SIGTRAMP_OFFSET0

#define SIGTRAMP_OFFSET0   0

Definition at line 172 of file cris-tdep.c.

◆ SIGTRAMP_OFFSET1

#define SIGTRAMP_OFFSET1   4

Definition at line 174 of file cris-tdep.c.

Referenced by cris_rt_sigtramp_start(), and cris_sigtramp_start().

Typedef Documentation

◆ cris_elf_greg_t

typedef unsigned char cris_elf_greg_t[4]

Definition at line 3755 of file cris-tdep.c.

◆ cris_elf_gregset_t

typedef cris_elf_greg_t cris_elf_gregset_t[CRISV10_ELF_NGREG]

Definition at line 3759 of file cris-tdep.c.

◆ crisv32_elf_gregset_t

typedef cris_elf_greg_t crisv32_elf_gregset_t[CRISV32_ELF_NGREG]

Definition at line 3762 of file cris-tdep.c.

◆ inst_env_type

Enumeration Type Documentation

◆ cris_addressing_modes

Enumerator
REGISTER_MODE 
INDIRECT_MODE 
AUTOINC_MODE 

Definition at line 503 of file cris-tdep.c.

◆ cris_instruction_sizes

Enumerator
INST_BYTE_SIZE 
INST_WORD_SIZE 
INST_DWORD_SIZE 

Definition at line 495 of file cris-tdep.c.

◆ cris_num_regs

Enumerator
NUM_FREGS 
NUM_GENREGS 
NUM_SPECREGS 
NUM_SUPPREGS 

Definition at line 50 of file cris-tdep.c.

◆ cris_opcode_masks

Enumerator
BRANCH_SIGNED_SHORT_OFFSET_MASK 
SIGNED_EXTEND_BIT_MASK 
SIGNED_BYTE_MASK 
SIGNED_BYTE_EXTEND_MASK 
SIGNED_WORD_MASK 
SIGNED_WORD_EXTEND_MASK 
SIGNED_DWORD_MASK 
SIGNED_QUICK_VALUE_MASK 
SIGNED_QUICK_VALUE_EXTEND_MASK 

Definition at line 521 of file cris-tdep.c.

◆ cris_prefix_addressing_modes

Enumerator
PREFIX_INDEX_MODE 
PREFIX_ASSIGN_MODE 
PREFIX_OFFSET_MODE 

Definition at line 511 of file cris-tdep.c.

◆ cris_regnums

Enumerator
CRIS_FP_REGNUM 
STR_REGNUM 
RET_REGNUM 
ARG1_REGNUM 
ARG2_REGNUM 
ARG3_REGNUM 
ARG4_REGNUM 
VR_REGNUM 
MOF_REGNUM 
SRP_REGNUM 
P0_REGNUM 
P4_REGNUM 
CCR_REGNUM 
P8_REGNUM 
IBR_REGNUM 
IRP_REGNUM 
BAR_REGNUM 
DCCR_REGNUM 
BRP_REGNUM 
USP_REGNUM 
ACR_REGNUM 
BZ_REGNUM 
PID_REGNUM 
SRS_REGNUM 
WZ_REGNUM 
EXS_REGNUM 
EDA_REGNUM 
DZ_REGNUM 
EBP_REGNUM 
ERP_REGNUM 
NRP_REGNUM 
CCS_REGNUM 
CRISV32USP_REGNUM 
SPC_REGNUM 
CRISV32PC_REGNUM 
S0_REGNUM 
S1_REGNUM 
S2_REGNUM 
S3_REGNUM 
S4_REGNUM 
S5_REGNUM 
S6_REGNUM 
S7_REGNUM 
S8_REGNUM 
S9_REGNUM 
S10_REGNUM 
S11_REGNUM 
S12_REGNUM 
S13_REGNUM 
S14_REGNUM 
S15_REGNUM 

Definition at line 80 of file cris-tdep.c.

Function Documentation

◆ _initialize_cris_tdep()

void _initialize_cris_tdep ( )

◆ abs_op()

static void abs_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ add_sub_cmp_and_or_move_action()

static void add_sub_cmp_and_or_move_action ( unsigned short inst,
inst_env_type * inst_env,
unsigned long source1,
unsigned long source2 )
static

◆ addi_op()

static void addi_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ asr_op()

static void asr_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ asrq_op()

static void asrq_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ ax_ei_setf_op()

static void ax_ei_setf_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ bdap_prefix()

static void bdap_prefix ( unsigned short inst,
inst_env_type * inst_env )
static

◆ biap_prefix()

static void biap_prefix ( unsigned short inst,
inst_env_type * inst_env )
static

◆ break_op()

static void break_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ btst_nop_op()

static void btst_nop_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ check_assign()

static void check_assign ( unsigned short inst,
inst_env_type * inst_env )
static

◆ clearf_di_op()

static void clearf_di_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ constraint()

static int constraint ( unsigned int insn,
const char * inst_args,
inst_env_type * inst_env )
static

Definition at line 1829 of file cris-tdep.c.

References cris_spec_regs, name, and instruction_environment::prefix_found.

Referenced by find_cris_op().

◆ cris_breakpoint_kind_from_pc()

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

Definition at line 1362 of file cris-tdep.c.

Referenced by cris_gdbarch_init().

◆ cris_cannot_fetch_register()

static int cris_cannot_fetch_register ( struct gdbarch * gdbarch,
int regno )
static

Definition at line 1473 of file cris-tdep.c.

References cris_register_size(), and gdbarch_num_regs().

Referenced by cris_gdbarch_init().

◆ cris_cannot_store_register()

static int cris_cannot_store_register ( struct gdbarch * gdbarch,
int regno )
static

Definition at line 1483 of file cris-tdep.c.

References cris_register_size(), gdbarch_num_regs(), P0_REGNUM, P4_REGNUM, P8_REGNUM, and VR_REGNUM.

Referenced by cris_gdbarch_init().

◆ cris_dump_tdep()

static void cris_dump_tdep ( struct gdbarch * gdbarch,
struct ui_file * file )
static

◆ cris_dwarf2_frame_init_reg()

static void cris_dwarf2_frame_init_reg ( struct gdbarch * gdbarch,
int regnum,
struct dwarf2_frame_state_reg * reg,
frame_info_ptr this_frame )
static

◆ cris_dwarf2_reg_to_regnum()

static int cris_dwarf2_reg_to_regnum ( struct gdbarch * gdbarch,
int reg )
static

Definition at line 1731 of file cris-tdep.c.

References regnum.

Referenced by cris_gdbarch_init().

◆ cris_extract_return_value()

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

◆ cris_frame_align()

static CORE_ADDR cris_frame_align ( struct gdbarch * gdbarch,
CORE_ADDR sp )
static

Definition at line 767 of file cris-tdep.c.

Referenced by cris_gdbarch_init().

◆ cris_frame_base_address()

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

Definition at line 915 of file cris-tdep.c.

References cris_frame_unwind_cache().

◆ cris_frame_prev_register()

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

◆ cris_frame_this_id()

static void cris_frame_this_id ( frame_info_ptr this_frame,
void ** this_prologue_cache,
struct frame_id * this_id )
static

◆ cris_frame_unwind_cache()

static struct cris_unwind_cache * cris_frame_unwind_cache ( frame_info_ptr this_frame,
void ** this_prologue_cache )
static

◆ cris_gdb_func()

static void cris_gdb_func ( struct gdbarch * gdbarch,
enum cris_op_type op_type,
unsigned short inst,
inst_env_type * inst_env )
static

◆ cris_gdbarch_init()

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

Definition at line 3913 of file cris-tdep.c.

References arches, core_addr_lessthan(), cris_breakpoint_kind_from_pc(), cris_cannot_fetch_register(), cris_cannot_store_register(), cris_gdbarch_tdep::cris_dwarf2_cfi, cris_dwarf2_frame_init_reg(), cris_dwarf2_reg_to_regnum(), cris_frame_align(), cris_frame_base, cris_frame_unwind, cris_iterate_over_regset_sections(), cris_gdbarch_tdep::cris_mode, cris_mode_guru, cris_push_dummy_call(), cris_push_dummy_code(), cris_register_name(), cris_register_type(), cris_return_value(), cris_sigtramp_frame_unwind, cris_skip_prologue(), cris_software_single_step(), cris_sw_breakpoint_from_kind(), cris_gdbarch_tdep::cris_version, crisv32_cannot_fetch_register(), crisv32_cannot_store_register(), crisv32_register_name(), crisv32_register_type(), crisv32_single_step_through_delay(), dwarf2_append_unwinders(), dwarf2_frame_set_init_reg(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch::info(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_cannot_fetch_register(), set_gdbarch_cannot_store_register(), set_gdbarch_double_bit(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_frame_align(), set_gdbarch_have_nonsteppable_watchpoint(), set_gdbarch_inner_than(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_long_double_bit(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_push_dummy_call(), set_gdbarch_push_dummy_code(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_single_step_through_delay(), set_gdbarch_skip_prologue(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_sw_breakpoint_from_kind(), usr_cmd_cris_dwarf2_cfi, usr_cmd_cris_mode, usr_cmd_cris_version, and usr_cmd_cris_version_valid.

Referenced by _initialize_cris_tdep().

◆ cris_get_asr_shift_steps()

static int cris_get_asr_shift_steps ( unsigned long value)
static

Definition at line 592 of file cris-tdep.c.

Referenced by asr_op(), and asrq_op().

◆ cris_get_bdap_quick_offset()

static int cris_get_bdap_quick_offset ( unsigned short insn)
static

Definition at line 580 of file cris-tdep.c.

Referenced by quick_mode_bdap_prefix().

◆ cris_get_branch_short_offset()

static int cris_get_branch_short_offset ( unsigned short insn)
static

Definition at line 586 of file cris-tdep.c.

Referenced by eight_bit_offset_branch_op().

◆ cris_get_clear_size()

static int cris_get_clear_size ( unsigned short insn)
static

Definition at line 598 of file cris-tdep.c.

Referenced by reg_mode_clear_op().

◆ cris_get_mode()

static int cris_get_mode ( unsigned short insn)
static

◆ cris_get_opcode()

static int cris_get_opcode ( unsigned short insn)
static

◆ cris_get_operand1()

static int cris_get_operand1 ( unsigned short insn)
static

◆ cris_get_operand2()

static int cris_get_operand2 ( unsigned short insn)
static

◆ cris_get_quick_value()

static int cris_get_quick_value ( unsigned short insn)
static

◆ cris_get_signed_offset()

static signed char cris_get_signed_offset ( unsigned short insn)
static

Definition at line 623 of file cris-tdep.c.

Referenced by cris_scan_prologue().

◆ cris_get_size()

static int cris_get_size ( unsigned short insn)
static

◆ cris_is_signed_extend_bit_on()

static int cris_is_signed_extend_bit_on ( unsigned short insn)
static

Definition at line 604 of file cris-tdep.c.

Referenced by do_sign_or_zero_extend().

◆ cris_is_xflag_bit_on()

static int cris_is_xflag_bit_on ( unsigned short insn)
static

Definition at line 610 of file cris-tdep.c.

Referenced by ax_ei_setf_op().

◆ cris_iterate_over_regset_sections()

static void cris_iterate_over_regset_sections ( struct gdbarch * gdbarch,
iterate_over_regset_sections_cb * cb,
void * cb_data,
const struct regcache * regcache )
static

Definition at line 3810 of file cris-tdep.c.

References cris_regset.

Referenced by cris_gdbarch_init().

◆ cris_push_dummy_call()

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

◆ cris_push_dummy_code()

static CORE_ADDR cris_push_dummy_code ( struct gdbarch * gdbarch,
CORE_ADDR sp,
CORE_ADDR funaddr,
struct value ** args,
int nargs,
struct type * value_type,
CORE_ADDR * real_pc,
CORE_ADDR * bp_addr,
struct regcache * regcache )
static

Definition at line 775 of file cris-tdep.c.

Referenced by cris_gdbarch_init().

◆ cris_register_name()

static const char * cris_register_name ( struct gdbarch * gdbarch,
int regno )
static

◆ cris_register_size()

static int cris_register_size ( struct gdbarch * gdbarch,
int regno )
static

◆ cris_register_type()

static struct type * cris_register_type ( struct gdbarch * gdbarch,
int regno )
static

◆ cris_return_value()

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

◆ cris_rt_sigtramp_start()

static CORE_ADDR cris_rt_sigtramp_start ( frame_info_ptr this_frame)
static

◆ cris_scan_prologue()

static CORE_ADDR cris_scan_prologue ( CORE_ADDR pc,
frame_info_ptr this_frame,
struct cris_unwind_cache * info )
static

◆ cris_set_size_to_dword()

static void cris_set_size_to_dword ( unsigned short * insn)
static

◆ cris_sigcontext_addr()

static CORE_ADDR cris_sigcontext_addr ( frame_info_ptr this_frame)
static

◆ cris_sigtramp_frame_prev_register()

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

◆ cris_sigtramp_frame_sniffer()

static int cris_sigtramp_frame_sniffer ( const struct frame_unwind * self,
frame_info_ptr this_frame,
void ** this_cache )
static

Definition at line 427 of file cris-tdep.c.

References cris_rt_sigtramp_start(), and cris_sigtramp_start().

◆ cris_sigtramp_frame_this_id()

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

◆ cris_sigtramp_frame_unwind_cache()

static struct cris_unwind_cache * cris_sigtramp_frame_unwind_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ cris_sigtramp_start()

static CORE_ADDR cris_sigtramp_start ( frame_info_ptr this_frame)
static

◆ cris_skip_prologue()

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

◆ cris_software_single_step()

static std::vector< CORE_ADDR > cris_software_single_step ( struct regcache * regcache)
static

◆ cris_spec_reg_applicable()

static int cris_spec_reg_applicable ( struct gdbarch * gdbarch,
struct cris_spec_reg spec_reg )
static

Definition at line 1388 of file cris-tdep.c.

References cris_gdbarch_tdep::cris_version, and version.

Referenced by cris_register_size(), and cris_special_register_name().

◆ cris_special_register_name()

static const char * cris_special_register_name ( struct gdbarch * gdbarch,
int regno )
static

Definition at line 1638 of file cris-tdep.c.

References cris_spec_reg_applicable(), cris_spec_regs, and NUM_GENREGS.

Referenced by cris_register_name(), and crisv32_register_name().

◆ cris_store_return_value()

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

◆ cris_supply_gregset()

static void cris_supply_gregset ( const struct regset * regset,
struct regcache * regcache,
int regnum,
const void * gregs,
size_t len )
static

◆ cris_sw_breakpoint_from_kind()

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

Definition at line 1370 of file cris-tdep.c.

References cris_gdbarch_tdep::cris_mode, cris_mode_guru, and size.

Referenced by cris_gdbarch_init().

◆ crisv32_cannot_fetch_register()

static int crisv32_cannot_fetch_register ( struct gdbarch * gdbarch,
int regno )
static

Definition at line 1514 of file cris-tdep.c.

References cris_register_size(), and gdbarch_num_regs().

Referenced by cris_gdbarch_init().

◆ crisv32_cannot_store_register()

static int crisv32_cannot_store_register ( struct gdbarch * gdbarch,
int regno )
static

Definition at line 1524 of file cris-tdep.c.

References BZ_REGNUM, cris_register_size(), DZ_REGNUM, gdbarch_num_regs(), VR_REGNUM, and WZ_REGNUM.

Referenced by cris_gdbarch_init().

◆ crisv32_register_name()

static const char * crisv32_register_name ( struct gdbarch * gdbarch,
int regno )
static

◆ crisv32_register_type()

static struct type * crisv32_register_type ( struct gdbarch * gdbarch,
int regno )
static

◆ crisv32_scan_prologue()

static CORE_ADDR crisv32_scan_prologue ( CORE_ADDR pc,
frame_info_ptr this_frame,
struct cris_unwind_cache * info )
static

◆ crisv32_single_step_through_delay()

static int crisv32_single_step_through_delay ( struct gdbarch * gdbarch,
frame_info_ptr this_frame )
static

◆ dip_prefix()

static void dip_prefix ( unsigned short inst,
inst_env_type * inst_env )
static

◆ do_sign_or_zero_extend()

static unsigned long do_sign_or_zero_extend ( unsigned long value,
unsigned short * inst )
static

◆ dstep_logshift_mstep_neg_not_op()

static void dstep_logshift_mstep_neg_not_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ eight_bit_offset_branch_op()

static void eight_bit_offset_branch_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ find_cris_op()

static int find_cris_op ( unsigned short insn,
inst_env_type * inst_env )
static

Definition at line 1919 of file cris-tdep.c.

References constraint(), and number_of_bits().

Referenced by find_step_target().

◆ find_step_target()

static int find_step_target ( struct regcache * regcache,
inst_env_type * inst_env )
static

◆ get_data_from_address()

static unsigned long get_data_from_address ( unsigned short * inst,
CORE_ADDR address,
enum bfd_endian byte_order )
static

◆ handle_inc_and_index_mode_for_aritm_op()

static void handle_inc_and_index_mode_for_aritm_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ handle_prefix_assign_mode_for_aritm_op()

static void handle_prefix_assign_mode_for_aritm_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ handle_prefix_index_mode_for_aritm_op()

static void handle_prefix_index_mode_for_aritm_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ move_mem_to_reg_movem_op()

static void move_mem_to_reg_movem_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ move_reg_to_mem_movem_op()

static void move_reg_to_mem_movem_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ move_to_preg_op()

static void move_to_preg_op ( struct gdbarch * gdbarch,
unsigned short inst,
inst_env_type * inst_env )
static

◆ muls_op()

static void muls_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ mulu_op()

static void mulu_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ none_reg_mode_add_sub_cmp_and_or_move_op()

static void none_reg_mode_add_sub_cmp_and_or_move_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ none_reg_mode_clear_test_op()

static void none_reg_mode_clear_test_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ none_reg_mode_jump_op()

static void none_reg_mode_jump_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ none_reg_mode_move_from_preg_op()

static void none_reg_mode_move_from_preg_op ( struct gdbarch * gdbarch,
unsigned short inst,
inst_env_type * inst_env )
static

◆ not_implemented_op()

static void not_implemented_op ( unsigned short inst,
inst_env_type * inst_env )
static

Definition at line 3066 of file cris-tdep.c.

References instruction_environment::invalid.

Referenced by cris_gdb_func().

◆ number_of_bits()

static int number_of_bits ( unsigned int value)
static

Definition at line 1903 of file cris-tdep.c.

References number_of_bits().

Referenced by find_cris_op(), and number_of_bits().

◆ pop_stack_item()

static struct cris_stack_item * pop_stack_item ( struct cris_stack_item * si)
static

Definition at line 679 of file cris-tdep.c.

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

Referenced by cris_push_dummy_call().

◆ process_autoincrement()

static void process_autoincrement ( int size,
unsigned short inst,
inst_env_type * inst_env )
static

◆ push_stack_item()

static struct cris_stack_item * push_stack_item ( struct cris_stack_item * prev,
const gdb_byte * contents,
int len )
static

◆ quick_mode_add_sub_op()

static void quick_mode_add_sub_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ quick_mode_and_cmp_move_or_op()

static void quick_mode_and_cmp_move_or_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ quick_mode_bdap_prefix()

static void quick_mode_bdap_prefix ( unsigned short inst,
inst_env_type * inst_env )
static

◆ reg_mode_add_sub_cmp_and_or_move_op()

static void reg_mode_add_sub_cmp_and_or_move_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ reg_mode_clear_op()

static void reg_mode_clear_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ reg_mode_jump_op()

static void reg_mode_jump_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ reg_mode_move_from_preg_op()

static void reg_mode_move_from_preg_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ reg_mode_test_op()

static void reg_mode_test_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ scc_op()

static void scc_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ set_cris_dwarf2_cfi()

static void set_cris_dwarf2_cfi ( const char * ignore_args,
int from_tty,
struct cmd_list_element * c )
static

Definition at line 3902 of file cris-tdep.c.

References gdbarch_update_p().

Referenced by _initialize_cris_tdep().

◆ set_cris_mode()

static void set_cris_mode ( const char * ignore_args,
int from_tty,
struct cmd_list_element * c )
static

Definition at line 3891 of file cris-tdep.c.

References gdbarch_update_p().

Referenced by _initialize_cris_tdep().

◆ set_cris_version()

static void set_cris_version ( const char * ignore_args,
int from_tty,
struct cmd_list_element * c )
static

Definition at line 3878 of file cris-tdep.c.

References gdbarch_update_p(), and usr_cmd_cris_version_valid.

Referenced by _initialize_cris_tdep().

◆ sixteen_bit_offset_branch_op()

static void sixteen_bit_offset_branch_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ three_operand_add_sub_cmp_and_or_op()

static void three_operand_add_sub_cmp_and_or_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ three_operand_bound_op()

static void three_operand_bound_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ two_operand_bound_op()

static void two_operand_bound_op ( unsigned short inst,
inst_env_type * inst_env )
static

◆ xor_op()

static void xor_op ( unsigned short inst,
inst_env_type * inst_env )
static

Variable Documentation

◆ cris_frame_base

const struct frame_base cris_frame_base
static
Initial value:
=
{
}
static const struct frame_unwind cris_frame_unwind
Definition cris-tdep.c:903
static CORE_ADDR cris_frame_base_address(frame_info_ptr this_frame, void **this_cache)
Definition cris-tdep.c:915

Definition at line 922 of file cris-tdep.c.

Referenced by cris_gdbarch_init().

◆ cris_frame_unwind

const struct frame_unwind cris_frame_unwind
static
Initial value:
=
{
"cris prologue",
NULL,
}
static void cris_frame_this_id(frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition cris-tdep.c:732
static struct value * cris_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
Definition cris-tdep.c:758
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

Definition at line 903 of file cris-tdep.c.

Referenced by cris_gdbarch_init().

◆ cris_mode_guru

const char cris_mode_guru[] = "guru"
static

◆ cris_mode_normal

const char cris_mode_normal[] = "normal"
static

Definition at line 154 of file cris-tdep.c.

◆ cris_modes

const char* const cris_modes[]
static
Initial value:
= {
0
}
static const char cris_mode_normal[]
Definition cris-tdep.c:154
static const char cris_mode_guru[]
Definition cris-tdep.c:155

Definition at line 156 of file cris-tdep.c.

Referenced by _initialize_cris_tdep().

◆ cris_regset

const struct regset cris_regset
static
Initial value:
= {
nullptr,
nullptr,
}
static void cris_supply_gregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
Definition cris-tdep.c:3767
#define REGSET_VARIABLE_SIZE
Definition regset.h:52

Definition at line 3801 of file cris-tdep.c.

Referenced by cris_iterate_over_regset_sections().

◆ cris_sigtramp_frame_unwind

const struct frame_unwind cris_sigtramp_frame_unwind
static
Initial value:
=
{
"cris sigtramp",
NULL,
}
static void cris_sigtramp_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
Definition cris-tdep.c:405
static int cris_sigtramp_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
Definition cris-tdep.c:427
static struct value * cris_sigtramp_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
Definition cris-tdep.c:418
@ SIGTRAMP_FRAME
Definition frame.h:198

Definition at line 438 of file cris-tdep.c.

Referenced by cris_gdbarch_init().

◆ cris_spec_regs

const struct cris_spec_reg cris_spec_regs[]
extern

◆ rt_sigtramp_code

const unsigned short rt_sigtramp_code[]
static
Initial value:
=
{
SIGTRAMP_INSN0, 0x00ad,
}
#define SIGTRAMP_INSN1
Definition cris-tdep.c:173
#define SIGTRAMP_INSN0
Definition cris-tdep.c:171

Definition at line 186 of file cris-tdep.c.

Referenced by cris_rt_sigtramp_start().

◆ sigtramp_code

const unsigned short sigtramp_code[]
static
Initial value:

Definition at line 176 of file cris-tdep.c.

Referenced by amd64_linux_sigtramp_start(), and cris_sigtramp_start().

◆ usr_cmd_cris_dwarf2_cfi

bool usr_cmd_cris_dwarf2_cfi = true
static

Definition at line 167 of file cris-tdep.c.

Referenced by _initialize_cris_tdep(), and cris_gdbarch_init().

◆ usr_cmd_cris_mode

const char* usr_cmd_cris_mode = cris_mode_normal
static

Definition at line 164 of file cris-tdep.c.

Referenced by _initialize_cris_tdep(), and cris_gdbarch_init().

◆ usr_cmd_cris_version

unsigned int usr_cmd_cris_version
static

Definition at line 149 of file cris-tdep.c.

Referenced by _initialize_cris_tdep(), and cris_gdbarch_init().

◆ usr_cmd_cris_version_valid

bool usr_cmd_cris_version_valid = false
static

Definition at line 152 of file cris-tdep.c.

Referenced by cris_gdbarch_init(), and set_cris_version().