36 #include "opcode/cris.h" 170 #define SIGTRAMP_INSN0 0x9c5f 171 #define SIGTRAMP_OFFSET0 0 172 #define SIGTRAMP_INSN1 0xe93d 173 #define SIGTRAMP_OFFSET1 4 181 #define SIGTRAMP_LEN (sizeof sigtramp_code) 283 error (
_(
"Couldn't recognize signal trampoline."));
326 (*this_cache) = info;
355 for (i = 0; i <= 13; i++)
374 for (i = 0; i <= 13; i++)
416 void **this_cache,
int regnum);
417 static struct value *
419 void **this_cache,
int regnum)
543 return ((insn & 0xF000) >> 12);
549 return ((insn & 0x0C00) >> 10);
555 return ((insn & 0x03C0) >> 6);
561 return ((insn & 0x0030) >> 4);
567 return (insn & 0x000F);
575 return (insn & 0x003F);
581 return (insn & 0x00FF);
587 return (insn & 0x00FF);
593 return (
value & 0x3F);
599 return ((insn) & 0xC000);
605 return (((insn) & 0x20) == 0x20);
611 return (((insn) & 0x1000) == 0x1000);
624 return ((
signed char) (insn & 0x00FF));
640 static void set_cris_mode (
const char *ignore_args,
int from_tty,
678 memcpy (si->
data, contents,
len);
700 void **this_prologue_cache)
706 if ((*this_prologue_cache))
710 (*this_prologue_cache) = info;
737 void **this_prologue_cache,
761 static struct value *
763 void **this_prologue_cache,
int regnum)
793 struct value **args,
int nargs,
834 for (argnum = 0; argnum < nargs; argnum++)
845 reg_demand = (
len / 4) + (
len % 4 != 0 ? 1 : 0);
850 for (i = 0; i < reg_demand; i++)
861 for (i = 0; i < reg_demand; i++)
878 else if (
len > (2 * 4))
882 sp = (sp -
len) & ~3;
909 sp = (sp - si->
len) & ~3;
1030 unsigned short insn;
1033 unsigned short insn_next;
1043 short source_register;
1062 limit = this_frame ?
get_frame_pc (this_frame) : pc + 64;
1065 while (pc > 0 && pc < limit)
1081 if (insn_next == 0xBE7E)
1088 else if (insn_next == 0x8FEE)
1097 else if (insn == 0x866E)
1125 && ((insn & 0x0F00) >> 8) == 0x0001
1167 if (source_register < ARG1_REGNUM || source_register >
ARG4_REGNUM)
1176 && ((insn & 0x0F00) >> 8) == 0x0001
1200 && ((insn & 0x0F00) >> 8) == 0x0001
1233 if (this_frame == NULL && info == NULL)
1249 info->
base = this_base;
1263 info->
base = this_base;
1273 for (regno = regsave; regno >= 0; regno--)
1327 if (this_frame == NULL && info == NULL)
1335 info->
base = this_base;
1364 if (sal.
end > 0 && sal.
end < func_end)
1373 return pc_after_prologue;
1408 static unsigned char break8_insn[] = {0x38, 0xe9};
1409 static unsigned char break15_insn[] = {0x3f, 0xe9};
1414 return break15_insn;
1424 struct cris_spec_reg spec_reg)
1429 switch (spec_reg.applicable_version)
1431 case cris_ver_version_all:
1433 case cris_ver_warning:
1444 case cris_ver_v0_10:
1446 case cris_ver_v3_10:
1448 case cris_ver_v8_10:
1589 static struct type *
1610 static struct type *
1632 warning (
_(
"crisv32_register_type: unknown regno %d"), regno);
1666 error (
_(
"cris_store_return_value: type length too large."));
1698 static const char *cris_genreg_names[] =
1699 {
"r0",
"r1",
"r2",
"r3", \
1700 "r4",
"r5",
"r6",
"r7", \
1701 "r8",
"r9",
"r10",
"r11", \
1702 "r12",
"r13",
"sp",
"pc" };
1707 return cris_genreg_names[regno];
1723 static const char *crisv32_genreg_names[] =
1724 {
"r0",
"r1",
"r2",
"r3", \
1725 "r4",
"r5",
"r6",
"r7", \
1726 "r8",
"r9",
"r10",
"r11", \
1727 "r12",
"r13",
"sp",
"acr" 1730 static const char *crisv32_sreg_names[] =
1731 {
"s0",
"s1",
"s2",
"s3", \
1732 "s4",
"s5",
"s6",
"s7", \
1733 "s8",
"s9",
"s10",
"s11", \
1734 "s12",
"s13",
"s14",
"s15" 1740 return crisv32_genreg_names[regno];
1752 return crisv32_sreg_names[regno -
S0_REGNUM];
1770 static int cris_dwarf_regmap[] = {
1782 if (
reg >= 0 &&
reg < ARRAY_SIZE (cris_dwarf_regmap))
1834 error (
_(
"cris_extract_return_value: type length too large"));
1875 if ((insn & 0x30) == 0x30)
1895 retval = (((insn >> 0xC) & 0xF) == (insn & 0xF));
1903 tmp = (insn >> 0xC) & 0xF;
1956 int max_level_of_match = -1;
1957 int max_matched = -1;
1960 for (i = 0; cris_opcodes[i].name != NULL; i++)
1962 if (((cris_opcodes[i].match & insn) == cris_opcodes[i].match)
1963 && ((cris_opcodes[i].lose & insn) == 0)
1965 && (cris_opcodes[i].applicable_version != cris_ver_v32p))
1967 level_of_match =
constraint (insn, cris_opcodes[i].args, inst_env);
1968 if (level_of_match >= 0)
1972 if (level_of_match > max_level_of_match)
1975 max_level_of_match = level_of_match;
1976 if (level_of_match == 16)
1996 unsigned short insn;
2063 static std::vector<CORE_ADDR>
2068 std::vector<CORE_ADDR> next_pcs;
2077 warning (
_(
"CRIS software single step could not find a step target."));
2086 next_pcs.push_back (next_pc);
2093 next_pcs.push_back (branch_target_address);
2137 inst_env->
reg[REG_PC] += 1;
2322 inst_env->
reg[REG_PC] += 2;
2401 unsigned long value;
2402 unsigned long signed_extend_mask = 0;
2430 signed_extend_mask = 0xFF;
2431 signed_extend_mask = signed_extend_mask >> shift_steps;
2432 signed_extend_mask = ~signed_extend_mask;
2435 value |= signed_extend_mask;
2437 inst_env->
reg[REG_PC] &= 0xFFFFFF00;
2444 signed_extend_mask = 0xFFFF;
2445 signed_extend_mask = signed_extend_mask >> shift_steps;
2446 signed_extend_mask = ~signed_extend_mask;
2449 value |= signed_extend_mask;
2451 inst_env->
reg[REG_PC] &= 0xFFFF0000;
2458 signed_extend_mask = 0xFFFFFFFF;
2459 signed_extend_mask = signed_extend_mask >> shift_steps;
2460 signed_extend_mask = ~signed_extend_mask;
2463 value |= signed_extend_mask;
2480 unsigned long value;
2481 unsigned long signed_extend_mask = 0;
2506 signed_extend_mask = 0xFFFFFFFF;
2507 signed_extend_mask = signed_extend_mask >> shift_steps;
2508 signed_extend_mask = ~signed_extend_mask;
2511 value |= signed_extend_mask;
2810 unsigned long newpc;
2843 inst_env->
reg[REG_PC] = newpc;
3009 inst_env->
reg[REG_PC] =
3033 inst_env->
reg[REG_PC] =
3187 unsigned long source1,
unsigned long source2)
3189 unsigned long pc_mask;
3190 unsigned long operation_mask;
3195 pc_mask = 0xFFFFFF00;
3196 operation_mask = 0xFF;
3200 pc_mask = 0xFFFF0000;
3201 operation_mask = 0xFFFF;
3206 operation_mask = 0xFFFFFFFF;
3216 source2 &= operation_mask;
3217 source1 &= operation_mask;
3255 source2 &= operation_mask;
3258 inst_env->
reg[REG_PC] &= pc_mask;
3259 inst_env->
reg[REG_PC] |= source1;
3267 static unsigned long 3309 unsigned long operand1;
3310 unsigned long operand2;
3329 operand2 = inst_env->
reg[REG_PC];
3350 static unsigned long 3355 unsigned long value;
3383 unsigned long operand2;
3384 unsigned long operand3;
3389 operand2 = inst_env->
reg[REG_PC];
3413 unsigned long operand2;
3414 unsigned long operand3;
3470 unsigned long operand1;
3471 unsigned long operand2;
3472 unsigned long operand3;
3482 operand2 = inst_env->
reg[REG_PC];
3549 unsigned long operand1;
3550 unsigned long operand2;
3569 operand2 = inst_env->
reg[REG_PC];
3589 unsigned long operand1;
3590 unsigned long operand2;
3609 operand2 = inst_env->
reg[REG_PC];
3638 case cris_not_implemented_op:
3658 case cris_ax_ei_setf_op:
3662 case cris_bdap_prefix:
3666 case cris_biap_prefix:
3674 case cris_btst_nop_op:
3678 case cris_clearf_di_op:
3682 case cris_dip_prefix:
3686 case cris_dstep_logshift_mstep_neg_not_op:
3690 case cris_eight_bit_offset_branch_op:
3694 case cris_move_mem_to_reg_movem_op:
3698 case cris_move_reg_to_mem_movem_op:
3702 case cris_move_to_preg_op:
3714 case cris_none_reg_mode_add_sub_cmp_and_or_move_op:
3718 case cris_none_reg_mode_clear_test_op:
3722 case cris_none_reg_mode_jump_op:
3726 case cris_none_reg_mode_move_from_preg_op:
3730 case cris_quick_mode_add_sub_op:
3734 case cris_quick_mode_and_cmp_move_or_op:
3738 case cris_quick_mode_bdap_prefix:
3742 case cris_reg_mode_add_sub_cmp_and_or_move_op:
3746 case cris_reg_mode_clear_op:
3750 case cris_reg_mode_jump_op:
3754 case cris_reg_mode_move_from_preg_op:
3758 case cris_reg_mode_test_op:
3766 case cris_sixteen_bit_offset_branch_op:
3770 case cris_three_operand_add_sub_cmp_and_or_op:
3774 case cris_three_operand_bound_op:
3778 case cris_two_operand_bound_op:
3792 #define CRISV10_ELF_NGREG 35 3795 #define CRISV32_ELF_NGREG 32 3833 char *core_reg_sect,
unsigned core_reg_size,
3844 warning (
_(
"wrong size gregset struct in core file"));
3862 bfd_target_elf_flavour,
3877 _(
"Set the current CRIS version."),
3878 _(
"Show the current CRIS version."),
3880 Set to 10 for CRISv10 or 32 for CRISv32 if autodetection fails.\n\ 3889 _(
"Set the current CRIS mode."),
3890 _(
"Show the current CRIS mode."),
3892 Set to CRIS_MODE_GURU when debugging in guru mode.\n\ 3893 Makes GDB use the NRP register instead of the ERP register in certain cases."),
3900 _(
"Set the usage of Dwarf-2 CFI for CRIS."),
3901 _(
"Show the usage of Dwarf-2 CFI for CRIS."),
3902 _(
"Set this to \"off\" if using gcc-cris < R59."),
3940 _(
"cris_gdbarch_update: failed to update architecture."));
3953 "cris_gdbarch_update: failed to update architecture.");
3966 _(
"cris_gdbarch_update: failed to update architecture."));
3981 else if (info.
abfd && bfd_get_mach (info.
abfd) == bfd_mach_cris_v32)
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
void set_gdbarch_double_bit(struct gdbarch *gdbarch, int double_bit)
void set_gdbarch_frame_align(struct gdbarch *gdbarch, gdbarch_frame_align_ftype frame_align)
void set_gdbarch_have_nonsteppable_watchpoint(struct gdbarch *gdbarch, int have_nonsteppable_watchpoint)
void set_gdbarch_cannot_fetch_register(struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype cannot_fetch_register)
static int cris_spec_reg_applicable(struct gdbarch *gdbarch, struct cris_spec_reg spec_reg)
cris_elf_greg_t crisv32_elf_gregset_t[CRISV32_ELF_NGREG]
struct instruction_environment inst_env_type
static void cris_extract_return_value(struct type *type, struct regcache *regcache, gdb_byte *valbuf)
ULONGEST regcache_raw_get_unsigned(struct regcache *regcache, int regnum)
static void cris_set_size_to_dword(unsigned short *insn)
static void addi_op(unsigned short inst, inst_env_type *inst_env)
int default_check_format(bfd *abfd)
static void set_cris_mode(const char *ignore_args, int from_tty, struct cmd_list_element *c)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
enum breakpoint_here breakpoint_here_p(const address_space *aspace, CORE_ADDR pc)
static unsigned long get_data_from_address(unsigned short *inst, CORE_ADDR address, enum bfd_endian byte_order)
struct type * builtin_func_ptr
CORE_ADDR get_frame_pc(struct frame_info *frame)
static void dip_prefix(unsigned short inst, inst_env_type *inst_env)
static int usr_cmd_cris_dwarf2_cfi
void gdbarch_init_osabi(struct gdbarch_info info, struct gdbarch *gdbarch)
struct value * trad_frame_get_prev_register(struct frame_info *this_frame, struct trad_frame_saved_reg this_saved_regs[], int regnum)
static void fetch_core_registers(struct regcache *regcache, char *core_reg_sect, unsigned core_reg_size, int which, CORE_ADDR reg_addr)
void warning(const char *fmt,...)
void trad_frame_set_value(struct trad_frame_saved_reg this_saved_regs[], int regnum, LONGEST val)
static struct type * crisv32_register_type(struct gdbarch *gdbarch, int regno)
const struct regset * gregset
static void cris_gdb_func(struct gdbarch *, enum cris_op_type, unsigned short, inst_env_type *)
static int cris_breakpoint_kind_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pcptr)
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
static int cris_get_operand1(unsigned short insn)
static void quick_mode_add_sub_op(unsigned short inst, inst_env_type *inst_env)
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
static void move_reg_to_mem_movem_op(unsigned short inst, inst_env_type *inst_env)
static void eight_bit_offset_branch_op(unsigned short inst, inst_env_type *inst_env)
void internal_error(const char *file, int line, const char *fmt,...)
static const gdb_byte * cris_sw_breakpoint_from_kind(struct gdbarch *gdbarch, int kind, int *size)
static void cris_store_return_value(struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
int gdbarch_update_p(struct gdbarch_info info)
static void biap_prefix(unsigned short inst, inst_env_type *inst_env)
struct type * builtin_uint8
void add_setshow_enum_cmd(const char *name, enum command_class theclass, const char *const *enumlist, const char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
static unsigned int usr_cmd_cris_version
struct type * builtin_uint16
cris_elf_greg_t cris_elf_gregset_t[CRISV10_ELF_NGREG]
static const char * crisv32_register_name(struct gdbarch *gdbarch, int regno)
static void move_to_preg_op(struct gdbarch *gdbarch, unsigned short inst, inst_env_type *inst_env)
static void sixteen_bit_offset_branch_op(unsigned short inst, inst_env_type *inst_env)
static CORE_ADDR cris_sigtramp_start(struct frame_info *this_frame)
struct gdbarch_list * gdbarch_list_lookup_by_info(struct gdbarch_list *arches, const struct gdbarch_info *info)
static void handle_prefix_assign_mode_for_aritm_op(unsigned short inst, inst_env_type *inst_env)
static void set_cris_version(const char *ignore_args, int from_tty, struct cmd_list_element *c)
static void ax_ei_setf_op(unsigned short inst, inst_env_type *inst_env)
struct gdbarch_list * next
int gdbarch_num_regs(struct gdbarch *gdbarch)
static void reg_mode_add_sub_cmp_and_or_move_op(unsigned short inst, inst_env_type *inst_env)
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 void break_op(unsigned short inst, inst_env_type *inst_env)
void set_gdbarch_dwarf2_reg_to_regnum(struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype dwarf2_reg_to_regnum)
void set_gdbarch_single_step_through_delay(struct gdbarch *gdbarch, gdbarch_single_step_through_delay_ftype single_step_through_delay)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
static struct value * cris_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
static const unsigned short sigtramp_code[]
static int cris_register_size(struct gdbarch *gdbarch, int regno)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
unsigned char cris_elf_greg_t[4]
static int cris_get_clear_size(unsigned short insn)
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)
#define FRAME_OBSTACK_ZALLOC(TYPE)
static int cris_get_branch_short_offset(unsigned short insn)
unsigned long prefix_value
const address_space * get_frame_address_space(struct frame_info *frame)
static unsigned long do_sign_or_zero_extend(unsigned long value, unsigned short *inst)
static int cris_get_bdap_quick_offset(unsigned short insn)
static void reg_mode_clear_op(unsigned short inst, inst_env_type *inst_env)
static void check_assign(unsigned short inst, inst_env_type *inst_env)
void gdbarch_register(enum bfd_architecture bfd_architecture, gdbarch_init_ftype *init, gdbarch_dump_tdep_ftype *dump_tdep)
void add_setshow_zuinteger_cmd(const char *name, enum command_class theclass, unsigned int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
static struct frame_id cris_dummy_id(struct gdbarch *gdbarch, struct frame_info *this_frame)
void frame_base_set_default(struct gdbarch *gdbarch, const struct frame_base *default_base)
struct cmd_list_element * setlist
static CORE_ADDR cris_rt_sigtramp_start(struct frame_info *this_frame)
enum bfd_endian byte_order
void set_gdbarch_register_type(struct gdbarch *gdbarch, gdbarch_register_type_ftype register_type)
LONGEST read_memory_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
static int cris_get_asr_shift_steps(unsigned long value)
static CORE_ADDR cris_frame_base_address(struct frame_info *this_frame, void **this_cache)
const gdb_byte * value_contents(struct value *value)
static int find_cris_op(unsigned short insn, inst_env_type *inst_env)
static const char *const cris_modes[]
static int cris_get_opcode(unsigned short insn)
static struct stack_item * pop_stack_item(struct stack_item *si)
static CORE_ADDR cris_frame_align(struct gdbarch *gdbarch, CORE_ADDR sp)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
static const char * usr_cmd_cris_mode
static const char * cris_register_name(struct gdbarch *gdbarch, int regno)
static void none_reg_mode_add_sub_cmp_and_or_move_op(unsigned short inst, inst_env_type *inst_env)
unsigned long delay_slot_pc
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
static const char cris_mode_normal[]
enum register_status regcache_cooked_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
int safe_frame_unwind_memory(struct frame_info *this_frame, CORE_ADDR addr, gdb_byte *buf, int len)
static void reg_mode_test_op(unsigned short inst, inst_env_type *inst_env)
static const struct frame_unwind cris_frame_unwind
void set_gdbarch_sp_regnum(struct gdbarch *gdbarch, int sp_regnum)
static void cris_dwarf2_frame_init_reg(struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, struct frame_info *this_frame)
void set_gdbarch_dummy_id(struct gdbarch *gdbarch, gdbarch_dummy_id_ftype dummy_id)
static struct stack_item * push_stack_item(struct stack_item *prev, const gdb_byte *contents, int len)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
struct cmd_list_element * showlist
static int cris_get_quick_value(unsigned short insn)
static int cris_cannot_store_register(struct gdbarch *gdbarch, int regno)
static void reg_mode_move_from_preg_op(unsigned short inst, inst_env_type *inst_env)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
static struct gdbarch * cris_gdbarch_init(struct gdbarch_info, struct gdbarch_list *)
static void none_reg_mode_jump_op(unsigned short inst, inst_env_type *inst_env)
void set_gdbarch_cannot_store_register(struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype cannot_store_register)
static void handle_inc_and_index_mode_for_aritm_op(unsigned short inst, inst_env_type *inst_env)
static int cris_is_signed_extend_bit_on(unsigned short insn)
static struct cris_unwind_cache * cris_sigtramp_frame_unwind_cache(struct frame_info *this_frame, void **this_cache)
int find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr)
static struct value * cris_sigtramp_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
static const unsigned short rt_sigtramp_code[]
struct type * builtin_int0
void set_gdbarch_unwind_pc(struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype unwind_pc)
struct trad_frame_saved_reg * saved_regs
struct type * builtin_uint32
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static void bdap_prefix(unsigned short inst, inst_env_type *inst_env)
unsigned long preg[NUM_SPECREGS]
static void none_reg_mode_clear_test_op(unsigned short inst, inst_env_type *inst_env)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
cris_prefix_addressing_modes
static void asrq_op(unsigned short inst, inst_env_type *inst_env)
void set_gdbarch_unwind_sp(struct gdbarch *gdbarch, gdbarch_unwind_sp_ftype unwind_sp)
void deprecated_add_core_fns(struct core_fns *cf)
static void two_operand_bound_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)
#define CRISV10_ELF_NGREG
static void cris_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
static int cris_dwarf2_reg_to_regnum(struct gdbarch *gdbarch, int reg)
unsigned int cris_version
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
static void cris_supply_gregset(struct regcache *regcache, cris_elf_gregset_t *gregsetp)
void set_gdbarch_breakpoint_kind_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_kind_from_pc_ftype breakpoint_kind_from_pc)
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct gdbarch *gdbarch)
static const char * cris_special_register_name(struct gdbarch *gdbarch, int regno)
#define CRISV32_ELF_NGREG
static void scc_op(unsigned short inst, inst_env_type *inst_env)
void set_gdbarch_software_single_step(struct gdbarch *gdbarch, gdbarch_software_single_step_ftype software_single_step)
static void none_reg_mode_move_from_preg_op(struct gdbarch *gdbarch, unsigned short inst, inst_env_type *inst_env)
static int cris_cannot_fetch_register(struct gdbarch *gdbarch, int regno)
void set_gdbarch_push_dummy_code(struct gdbarch *gdbarch, gdbarch_push_dummy_code_ftype push_dummy_code)
static int cris_get_mode(unsigned short insn)
static void quick_mode_and_cmp_move_or_op(unsigned short inst, inst_env_type *inst_env)
int core_addr_lessthan(CORE_ADDR lhs, CORE_ADDR rhs)
static void three_operand_bound_op(unsigned short inst, inst_env_type *inst_env)
static void cris_sigtramp_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static void reg_mode_jump_op(unsigned short inst, inst_env_type *inst_env)
static int constraint(unsigned int insn, const char *inst_args, inst_env_type *inst_env)
static void muls_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 quick_mode_bdap_prefix(unsigned short inst, inst_env_type *inst_env)
const struct cris_spec_reg cris_spec_regs[]
static int cris_get_size(unsigned short insn)
static int crisv32_cannot_store_register(struct gdbarch *gdbarch, int regno)
static int cris_is_xflag_bit_on(unsigned short insn)
#define TYPE_CODE(thistype)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
void gdbarch_info_init(struct gdbarch_info *info)
static CORE_ADDR crisv32_scan_prologue(CORE_ADDR pc, struct frame_info *this_frame, struct cris_unwind_cache *info)
struct type * builtin_data_ptr
static void handle_prefix_index_mode_for_aritm_op(unsigned short inst, inst_env_type *inst_env)
static void abs_op(unsigned short inst, inst_env_type *inst_env)
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void get_frame_register(struct frame_info *frame, int regnum, gdb_byte *buf)
void dwarf2_append_unwinders(struct gdbarch *gdbarch)
static struct core_fns cris_elf_core_fns
static CORE_ADDR cris_unwind_pc(struct gdbarch *gdbarch, struct frame_info *next_frame)
static struct cris_unwind_cache * cris_frame_unwind_cache(struct frame_info *this_frame, void **this_prologue_cache)
static void process_autoincrement(int size, unsigned short inst, inst_env_type *inst_env)
static const struct frame_unwind cris_sigtramp_frame_unwind
static int find_step_target(struct regcache *regcache, inst_env_type *inst_env)
void regcache_raw_supply(struct regcache *regcache, int regnum, const void *buf)
static void btst_nop_op(unsigned short inst, inst_env_type *inst_env)
unsigned long long ULONGEST
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
void _initialize_cris_tdep(void)
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, int struct_return, CORE_ADDR struct_addr)
static int crisv32_cannot_fetch_register(struct gdbarch *gdbarch, int regno)
static int usr_cmd_cris_version_valid
void set_gdbarch_long_double_bit(struct gdbarch *gdbarch, int long_double_bit)
static int cris_get_operand2(unsigned short insn)
struct type * value_type(const struct value *value)
static CORE_ADDR cris_sigcontext_addr(struct frame_info *this_frame)
static void move_mem_to_reg_movem_op(unsigned short inst, inst_env_type *inst_env)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype return_value)
void dwarf2_frame_set_init_reg(struct gdbarch *gdbarch, void(*init_reg)(struct gdbarch *, int, struct dwarf2_frame_state_reg *, struct frame_info *))
static CORE_ADDR cris_scan_prologue(CORE_ADDR pc, struct frame_info *this_frame, struct cris_unwind_cache *info)
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
unsigned long branch_break_address
static void add_sub_cmp_and_or_move_action(unsigned short inst, inst_env_type *inst_env, unsigned long source1, unsigned long source2)
#define TYPE_LENGTH(thistype)
void set_gdbarch_push_dummy_call(struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype push_dummy_call)
static int cris_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
static bool in_inclusive_range(T value, T low, T high)
static void set_cris_dwarf2_cfi(const char *ignore_args, int from_tty, struct cmd_list_element *c)
static std::vector< CORE_ADDR > cris_software_single_step(struct regcache *regcache)
static void clearf_di_op(unsigned short inst, inst_env_type *inst_env)
static void mulu_op(unsigned short inst, inst_env_type *inst_env)
static void cris_dump_tdep(struct gdbarch *, struct ui_file *)
void set_gdbarch_sw_breakpoint_from_kind(struct gdbarch *gdbarch, gdbarch_sw_breakpoint_from_kind_ftype sw_breakpoint_from_kind)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
void set_gdbarch_skip_prologue(struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype skip_prologue)
static void xor_op(unsigned short inst, inst_env_type *inst_env)
static void not_implemented_op(unsigned short inst, inst_env_type *inst_env)
unsigned long reg[NUM_GENREGS]
static void asr_op(unsigned short inst, inst_env_type *inst_env)
enum bfd_endian byte_order
static CORE_ADDR cris_skip_prologue(struct gdbarch *gdbarch, CORE_ADDR pc)
enum bfd_endian byte_order
void set_gdbarch_pc_regnum(struct gdbarch *gdbarch, int pc_regnum)
static CORE_ADDR cris_unwind_sp(struct gdbarch *gdbarch, struct frame_info *next_frame)
void set_gdbarch_register_name(struct gdbarch *gdbarch, gdbarch_register_name_ftype register_name)
static struct type * cris_register_type(struct gdbarch *gdbarch, int regno)
CORE_ADDR get_frame_func(struct frame_info *this_frame)
int default_core_sniffer(struct core_fns *our_fns, bfd *abfd)
static const char cris_mode_guru[]
void error(const char *fmt,...)
struct gdbarch * gdbarch_alloc(const struct gdbarch_info *info, struct gdbarch_tdep *tdep)
void set_gdbarch_inner_than(struct gdbarch *gdbarch, gdbarch_inner_than_ftype inner_than)
static signed char cris_get_signed_offset(unsigned short insn)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
static int crisv32_single_step_through_delay(struct gdbarch *gdbarch, struct frame_info *this_frame)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
static const struct frame_base cris_frame_base
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
static int number_of_bits(unsigned int value)