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."));
323 return (*this_cache);
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));
629 static void cris_gdb_func (
struct gdbarch *,
enum cris_op_type,
unsigned short,
679 memcpy (si->
data, contents, len);
701 void **this_prologue_cache)
707 if ((*this_prologue_cache))
708 return (*this_prologue_cache);
711 (*this_prologue_cache) = info;
738 void **this_prologue_cache,
762 static struct value *
764 void **this_prologue_cache,
int regnum)
794 struct value **args,
int nargs,
843 for (argnum = 0; argnum < nargs; argnum++)
854 reg_demand = (len / 4) + (len % 4 != 0 ? 1 : 0);
856 if (len <= (2 * 4) && (argreg + reg_demand - 1 <=
ARG4_REGNUM))
859 for (i = 0; i < reg_demand; i++)
870 for (i = 0; i < reg_demand; i++)
887 else if (len > (2 * 4))
891 sp = (sp -
len) & ~3;
918 sp = (sp - si->
len) & ~3;
952 cris_frame_base_address
1039 unsigned short insn;
1042 unsigned short insn_next;
1055 short source_register;
1074 limit = this_frame ?
get_frame_pc (this_frame) : pc + 64;
1077 while (pc > 0 && pc < limit)
1093 if (insn_next == 0xBE7E)
1100 else if (insn_next == 0x8FEE)
1109 else if (insn == 0x866E)
1137 && ((insn & 0x0F00) >> 8) == 0x0001
1179 if (source_register < ARG1_REGNUM || source_register >
ARG4_REGNUM)
1188 && ((insn & 0x0F00) >> 8) == 0x0001
1212 && ((insn & 0x0F00) >> 8) == 0x0001
1245 if (this_frame == NULL && info == NULL)
1261 info->
base = this_base;
1275 info->
base = this_base;
1285 for (regno = regsave; regno >= 0; regno--)
1339 if (this_frame == NULL && info == NULL)
1347 info->
base = this_base;
1376 if (sal.
end > 0 && sal.
end < func_end)
1385 return pc_after_prologue;
1412 static const unsigned char *
1417 static unsigned char break8_insn[] = {0x38, 0xe9};
1418 static unsigned char break15_insn[] = {0x3f, 0xe9};
1422 return break15_insn;
1432 struct cris_spec_reg spec_reg)
1437 switch (spec_reg.applicable_version)
1439 case cris_ver_version_all:
1441 case cris_ver_warning:
1445 return (version >= 0 && version <= 3);
1447 return (version >= 3);
1449 return (version == 8 || version == 9);
1451 return (version >= 8);
1452 case cris_ver_v0_10:
1453 return (version >= 0 && version <= 10);
1454 case cris_ver_v3_10:
1455 return (version >= 3 && version <= 10);
1456 case cris_ver_v8_10:
1457 return (version >= 8 && version <= 10);
1459 return (version == 10);
1461 return (version >= 10);
1463 return (version >= 32);
1598 static struct type *
1619 static struct type *
1641 warning (
_(
"crisv32_register_type: unknown regno %d"), regno);
1675 error (
_(
"cris_store_return_value: type length too large."));
1707 static char *cris_genreg_names[] =
1708 {
"r0",
"r1",
"r2",
"r3", \
1709 "r4",
"r5",
"r6",
"r7", \
1710 "r8",
"r9",
"r10",
"r11", \
1711 "r12",
"r13",
"sp",
"pc" };
1716 return cris_genreg_names[regno];
1732 static char *crisv32_genreg_names[] =
1733 {
"r0",
"r1",
"r2",
"r3", \
1734 "r4",
"r5",
"r6",
"r7", \
1735 "r8",
"r9",
"r10",
"r11", \
1736 "r12",
"r13",
"sp",
"acr"
1739 static char *crisv32_sreg_names[] =
1740 {
"s0",
"s1",
"s2",
"s3", \
1741 "s4",
"s5",
"s6",
"s7", \
1742 "s8",
"s9",
"s10",
"s11", \
1743 "s12",
"s13",
"s14",
"s15"
1749 return crisv32_genreg_names[regno];
1761 return crisv32_sreg_names[regno -
S0_REGNUM];
1779 static int cris_dwarf_regmap[] = {
1791 if (reg >= 0 && reg < ARRAY_SIZE (cris_dwarf_regmap))
1792 regnum = cris_dwarf_regmap[reg];
1795 warning (
_(
"Unmapped DWARF Register #%d encountered."), reg);
1846 error (
_(
"cris_extract_return_value: type length too large"));
1887 if ((insn & 0x30) == 0x30)
1907 retval = (((insn >> 0xC) & 0xF) == (insn & 0xF));
1915 tmp = (insn >> 0xC) & 0xF;
1955 number_of_bits += 1;
1956 value &= (value - 1);
1968 int max_level_of_match = -1;
1969 int max_matched = -1;
1972 for (i = 0; cris_opcodes[i].name != NULL; i++)
1974 if (((cris_opcodes[i].match & insn) == cris_opcodes[i].match)
1975 && ((cris_opcodes[i].lose & insn) == 0)
1977 && (cris_opcodes[i].applicable_version != cris_ver_v32p))
1979 level_of_match =
constraint (insn, cris_opcodes[i].args, inst_env);
1980 if (level_of_match >= 0)
1984 if (level_of_match > max_level_of_match)
1987 max_level_of_match = level_of_match;
1988 if (level_of_match == 16)
2008 unsigned short insn;
2063 cris_gdb_func (gdbarch, cris_opcodes[i].op, insn, inst_env);
2089 warning (
_(
"CRIS software single step could not find a step target."));
2104 aspace, branch_target_address);
2148 inst_env->
reg[REG_PC] += 1;
2170 enum bfd_endian byte_order);
2302 offset &= ~BRANCH_SIGNED_SHORT_OFFSET_MASK;
2333 inst_env->
reg[REG_PC] += 2;
2371 value = (
long) inst_env->
reg[REG_PC];
2377 inst_env->
reg[REG_PC] = (
long) value;
2412 unsigned long value;
2413 unsigned long signed_extend_mask = 0;
2434 value = inst_env->
reg[REG_PC];
2441 signed_extend_mask = 0xFF;
2442 signed_extend_mask = signed_extend_mask >> shift_steps;
2443 signed_extend_mask = ~signed_extend_mask;
2445 value = value >> shift_steps;
2446 value |= signed_extend_mask;
2448 inst_env->
reg[REG_PC] &= 0xFFFFFF00;
2449 inst_env->
reg[REG_PC] |= value;
2455 signed_extend_mask = 0xFFFF;
2456 signed_extend_mask = signed_extend_mask >> shift_steps;
2457 signed_extend_mask = ~signed_extend_mask;
2459 value = value >> shift_steps;
2460 value |= signed_extend_mask;
2462 inst_env->
reg[REG_PC] &= 0xFFFF0000;
2463 inst_env->
reg[REG_PC] |= value;
2469 signed_extend_mask = 0xFFFFFFFF;
2470 signed_extend_mask = signed_extend_mask >> shift_steps;
2471 signed_extend_mask = ~signed_extend_mask;
2473 value = value >> shift_steps;
2474 value |= signed_extend_mask;
2475 inst_env->
reg[REG_PC] = value;
2491 unsigned long value;
2492 unsigned long signed_extend_mask = 0;
2514 value = inst_env->
reg[REG_PC];
2517 signed_extend_mask = 0xFFFFFFFF;
2518 signed_extend_mask = signed_extend_mask >> shift_steps;
2519 signed_extend_mask = ~signed_extend_mask;
2521 value = value >> shift_steps;
2522 value |= signed_extend_mask;
2523 inst_env->
reg[REG_PC] = value;
2821 unsigned long newpc;
2854 inst_env->
reg[REG_PC] = newpc;
3020 inst_env->
reg[REG_PC] =
3044 inst_env->
reg[REG_PC] =
3198 unsigned long source1,
unsigned long source2)
3200 unsigned long pc_mask;
3201 unsigned long operation_mask;
3206 pc_mask = 0xFFFFFF00;
3207 operation_mask = 0xFF;
3211 pc_mask = 0xFFFF0000;
3212 operation_mask = 0xFFFF;
3217 operation_mask = 0xFFFFFFFF;
3227 source2 &= operation_mask;
3228 source1 &= operation_mask;
3266 source2 &= operation_mask;
3269 inst_env->
reg[REG_PC] &= pc_mask;
3270 inst_env->
reg[REG_PC] |= source1;
3278 static unsigned long
3320 unsigned long operand1;
3321 unsigned long operand2;
3340 operand2 = inst_env->
reg[REG_PC];
3361 static unsigned long
3363 enum bfd_endian byte_order)
3366 unsigned long value;
3394 unsigned long operand2;
3395 unsigned long operand3;
3400 operand2 = inst_env->
reg[REG_PC];
3424 unsigned long operand2;
3425 unsigned long operand3;
3481 unsigned long operand1;
3482 unsigned long operand2;
3483 unsigned long operand3;
3493 operand2 = inst_env->
reg[REG_PC];
3560 unsigned long operand1;
3561 unsigned long operand2;
3580 operand2 = inst_env->
reg[REG_PC];
3600 unsigned long operand1;
3601 unsigned long operand2;
3620 operand2 = inst_env->
reg[REG_PC];
3649 case cris_not_implemented_op:
3669 case cris_ax_ei_setf_op:
3673 case cris_bdap_prefix:
3677 case cris_biap_prefix:
3685 case cris_btst_nop_op:
3689 case cris_clearf_di_op:
3693 case cris_dip_prefix:
3697 case cris_dstep_logshift_mstep_neg_not_op:
3701 case cris_eight_bit_offset_branch_op:
3705 case cris_move_mem_to_reg_movem_op:
3709 case cris_move_reg_to_mem_movem_op:
3713 case cris_move_to_preg_op:
3725 case cris_none_reg_mode_add_sub_cmp_and_or_move_op:
3729 case cris_none_reg_mode_clear_test_op:
3733 case cris_none_reg_mode_jump_op:
3737 case cris_none_reg_mode_move_from_preg_op:
3741 case cris_quick_mode_add_sub_op:
3745 case cris_quick_mode_and_cmp_move_or_op:
3749 case cris_quick_mode_bdap_prefix:
3753 case cris_reg_mode_add_sub_cmp_and_or_move_op:
3757 case cris_reg_mode_clear_op:
3761 case cris_reg_mode_jump_op:
3765 case cris_reg_mode_move_from_preg_op:
3769 case cris_reg_mode_test_op:
3777 case cris_sixteen_bit_offset_branch_op:
3781 case cris_three_operand_add_sub_cmp_and_or_op:
3785 case cris_three_operand_bound_op:
3789 case cris_two_operand_bound_op:
3805 int (*print_insn) (bfd_vma addr,
struct disassemble_info *info);
3810 print_insn = cris_get_disassembler (
exec_bfd);
3812 return print_insn (addr, info);
3819 #define CRISV10_ELF_NGREG 35
3822 #define CRISV32_ELF_NGREG 32
3850 if (*(
char *)®p[ERP_REGNUM] & 0x1)
3860 char *core_reg_sect,
unsigned core_reg_size,
3871 warning (
_(
"wrong size gregset struct in core file"));
3875 memcpy (&gregset, core_reg_sect,
sizeof (gregset));
3889 bfd_target_elf_flavour,
3908 _(
"Set the current CRIS version."),
3909 _(
"Show the current CRIS version."),
3911 Set to 10 for CRISv10 or 32 for CRISv32 if autodetection fails.\n\
3920 _(
"Set the current CRIS mode."),
3921 _(
"Show the current CRIS mode."),
3923 Set to CRIS_MODE_GURU when debugging in guru mode.\n\
3924 Makes GDB use the NRP register instead of the ERP register in certain cases."),
3931 _(
"Set the usage of Dwarf-2 CFI for CRIS."),
3932 _(
"Show the usage of Dwarf-2 CFI for CRIS."),
3933 _(
"Set this to \"off\" if using gcc-cris < R59."),
3971 _(
"cris_gdbarch_update: failed to update architecture."));
3984 "cris_gdbarch_update: failed to update architecture.");
3997 _(
"cris_gdbarch_update: failed to update architecture."));
4000 static struct gdbarch *
4003 struct gdbarch *gdbarch;
4012 else if (info.
abfd && bfd_get_mach (info.
abfd) == bfd_mach_cris_v32)
4050 case BFD_ENDIAN_LITTLE:
4054 case BFD_ENDIAN_BIG:
4056 _(
"cris_gdbarch_init: big endian byte order in info"));
4061 _(
"cris_gdbarch_init: unknown byte order in info"));
4091 _(
"cris_gdbarch_init: unsupported CRIS version"));
4133 _(
"cris_gdbarch_init: unknown CRIS version"));
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)
ULONGEST extract_unsigned_integer(const gdb_byte *, int, enum bfd_endian)
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)
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)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
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)
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_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
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)
struct gdbarch * get_regcache_arch(const struct regcache *regcache)
static void fetch_core_registers(struct regcache *regcache, char *core_reg_sect, unsigned core_reg_size, int which, CORE_ADDR reg_addr)
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_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
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)
initialize_file_ftype _initialize_cris_tdep
const struct regset * gregset
static void cris_gdb_func(struct gdbarch *, enum cris_op_type, unsigned short, inst_env_type *)
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)
enum breakpoint_here breakpoint_here_p(struct address_space *aspace, CORE_ADDR pc)
void internal_error(const char *file, int line, const char *fmt,...)
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
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 ax_ei_setf_op(unsigned short inst, inst_env_type *inst_env)
struct gdbarch_list * next
struct address_space * get_frame_address_space(struct frame_info *frame)
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)
static int cris_software_single_step(struct frame_info *frame)
static const unsigned char * cris_breakpoint_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
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
void store_unsigned_integer(gdb_byte *, int, enum bfd_endian, ULONGEST)
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)
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)
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[]
void dwarf2_frame_set_init_reg(struct gdbarch *gdbarch, void(*init_reg)(struct gdbarch *, int, struct dwarf2_frame_state_reg *, struct frame_info *))
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)
void initialize_file_ftype(void)
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 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,...)
mach_port_t mach_port_t name mach_port_t mach_port_t name error_t int status
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)
void insert_single_step_breakpoint(struct gdbarch *gdbarch, struct address_space *aspace, CORE_ADDR next_pc)
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)
void set_gdbarch_breakpoint_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype breakpoint_from_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)
static int find_step_target(struct frame_info *frame, inst_env_type *inst_env)
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)
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 set_cris_version(char *ignore_args, int from_tty, struct cmd_list_element *c)
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 void set_cris_dwarf2_cfi(char *ignore_args, int from_tty, struct cmd_list_element *c)
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct frame_info *this_frame)
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)
const char const char int
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)
struct ui_file * gdb_stderr
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 get_frame_register(struct frame_info *frame, int regnum, gdb_byte *buf)
void dwarf2_append_unwinders(struct gdbarch *gdbarch)
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)
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)
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)
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 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 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[]
enum dwarf2_frame_reg_rule how
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)
static int cris_delayed_get_disassembler(bfd_vma addr, struct disassemble_info *info)
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)
static void set_cris_mode(char *ignore_args, int from_tty, struct cmd_list_element *c)
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_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
void set_gdbarch_print_insn(struct gdbarch *gdbarch, gdbarch_print_insn_ftype print_insn)
static int number_of_bits(unsigned int value)
const ULONGEST const LONGEST len