47 #include "gdb/sim-sh.h" 145 static const char *register_names[] =
149 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
150 "r8",
"r9",
"r10",
"r11",
"r12",
"r13",
"r14",
"r15",
151 "r16",
"r17",
"r18",
"r19",
"r20",
"r21",
"r22",
"r23",
152 "r24",
"r25",
"r26",
"r27",
"r28",
"r29",
"r30",
"r31",
153 "r32",
"r33",
"r34",
"r35",
"r36",
"r37",
"r38",
"r39",
154 "r40",
"r41",
"r42",
"r43",
"r44",
"r45",
"r46",
"r47",
155 "r48",
"r49",
"r50",
"r51",
"r52",
"r53",
"r54",
"r55",
156 "r56",
"r57",
"r58",
"r59",
"r60",
"r61",
"r62",
"r63",
165 "tr0",
"tr1",
"tr2",
"tr3",
"tr4",
"tr5",
"tr6",
"tr7",
171 "fr0",
"fr1",
"fr2",
"fr3",
"fr4",
"fr5",
"fr6",
"fr7",
172 "fr8",
"fr9",
"fr10",
"fr11",
"fr12",
"fr13",
"fr14",
"fr15",
173 "fr16",
"fr17",
"fr18",
"fr19",
"fr20",
"fr21",
"fr22",
"fr23",
174 "fr24",
"fr25",
"fr26",
"fr27",
"fr28",
"fr29",
"fr30",
"fr31",
175 "fr32",
"fr33",
"fr34",
"fr35",
"fr36",
"fr37",
"fr38",
"fr39",
176 "fr40",
"fr41",
"fr42",
"fr43",
"fr44",
"fr45",
"fr46",
"fr47",
177 "fr48",
"fr49",
"fr50",
"fr51",
"fr52",
"fr53",
"fr54",
"fr55",
178 "fr56",
"fr57",
"fr58",
"fr59",
"fr60",
"fr61",
"fr62",
"fr63",
181 "dr0",
"dr2",
"dr4",
"dr6",
"dr8",
"dr10",
"dr12",
"dr14",
182 "dr16",
"dr18",
"dr20",
"dr22",
"dr24",
"dr26",
"dr28",
"dr30",
183 "dr32",
"dr34",
"dr36",
"dr38",
"dr40",
"dr42",
"dr44",
"dr46",
184 "dr48",
"dr50",
"dr52",
"dr54",
"dr56",
"dr58",
"dr60",
"dr62",
187 "fp0",
"fp2",
"fp4",
"fp6",
"fp8",
"fp10",
"fp12",
"fp14",
188 "fp16",
"fp18",
"fp20",
"fp22",
"fp24",
"fp26",
"fp28",
"fp30",
189 "fp32",
"fp34",
"fp36",
"fp38",
"fp40",
"fp42",
"fp44",
"fp46",
190 "fp48",
"fp50",
"fp52",
"fp54",
"fp56",
"fp58",
"fp60",
"fp62",
193 "fv0",
"fv4",
"fv8",
"fv12",
"fv16",
"fv20",
"fv24",
"fv28",
194 "fv32",
"fv36",
"fv40",
"fv44",
"fv48",
"fv52",
"fv56",
"fv60",
197 "r0_c",
"r1_c",
"r2_c",
"r3_c",
"r4_c",
"r5_c",
"r6_c",
"r7_c",
198 "r8_c",
"r9_c",
"r10_c",
"r11_c",
"r12_c",
"r13_c",
"r14_c",
"r15_c",
200 "gbr_c",
"mach_c",
"macl_c",
"pr_c",
"t_c",
202 "fr0_c",
"fr1_c",
"fr2_c",
"fr3_c",
203 "fr4_c",
"fr5_c",
"fr6_c",
"fr7_c",
204 "fr8_c",
"fr9_c",
"fr10_c",
"fr11_c",
205 "fr12_c",
"fr13_c",
"fr14_c",
"fr15_c",
206 "dr0_c",
"dr2_c",
"dr4_c",
"dr6_c",
207 "dr8_c",
"dr10_c",
"dr12_c",
"dr14_c",
208 "fv0_c",
"fv4_c",
"fv8_c",
"fv12_c",
214 if (reg_nr >= (
sizeof (register_names) /
sizeof (*register_names)))
216 return register_names[reg_nr];
219 #define NUM_PSEUDO_REGS_SH_MEDIA 80 220 #define NUM_PSEUDO_REGS_SH_COMPACT 51 231 #define MSYMBOL_IS_SPECIAL(msym) \ 232 MSYMBOL_TARGET_FLAG_1 (msym) 240 if (((elf_symbol_type *)(sym))->internal_elf_sym.st_other == STO_SH5_ISA32)
249 #define IS_ISA32_ADDR(addr) ((addr) & 1) 250 #define MAKE_ISA32_ADDR(addr) ((addr) | 1) 251 #define UNMAKE_ISA32_ADDR(addr) ((addr) & ~1) 302 static unsigned char big_breakpoint_media[] = {
303 0x6f, 0xf5, 0xff, 0xf0
305 static unsigned char little_breakpoint_media[] = {
306 0xf0, 0xff, 0xf5, 0x6f
310 return big_breakpoint_media;
312 return little_breakpoint_media;
316 static unsigned char big_breakpoint_compact[] = {0x0, 0x3b};
317 static unsigned char little_breakpoint_compact[] = {0x3b, 0x0};
320 return big_breakpoint_compact;
322 return little_breakpoint_compact;
352 #define IS_PTABSL_R18(x) (((x) & 0xffffff8f) == 0x6bf14a00) 356 #define IS_STS_R0(x) ((x) == 0x4022) 360 #define IS_STS_PR(x) (((x) & 0xf0ff) == 0x2a) 364 #define IS_MOV_TO_R15(x) (((x) & 0xff00) == 0x1f00) 368 #define IS_MOV_R14(x) (((x) & 0xfff0) == 0x1fe0) 372 #define IS_STQ_R18_R14(x) (((x) & 0xfff003ff) == 0xace00120) 376 #define IS_STQ_R18_R15(x) (((x) & 0xfff003ff) == 0xacf00120) 380 #define IS_STL_R18_R15(x) (((x) & 0xfff003ff) == 0xa8f00120) 384 #define IS_STQ_R14_R15(x) (((x) & 0xfff003ff) == 0xacf000e0) 388 #define IS_STL_R14_R15(x) (((x) & 0xfff003ff) == 0xa8f000e0) 392 #define IS_ADDIL_SP_MEDIA(x) (((x) & 0xfff003ff) == 0xd4f000f0) 396 #define IS_ADDI_SP_MEDIA(x) (((x) & 0xfff003ff) == 0xd0f000f0) 400 #define IS_ADDL_SP_FP_MEDIA(x) ((x) == 0x00f8fce0) 404 #define IS_ADD_SP_FP_MEDIA(x) ((x) == 0x00f9fce0) 406 #define IS_MOV_SP_FP_MEDIA(x) \ 407 (IS_ADDL_SP_FP_MEDIA(x) || IS_ADD_SP_FP_MEDIA(x)) 411 #define IS_MOV_R0(x) (((x) & 0xff00) == 0xe000) 414 #define IS_MOVL_R0(x) (((x) & 0xff00) == 0xd000) 418 #define IS_ADD_SP_R0(x) ((x) == 0x30fc) 422 #define IS_MOV_R14_R0(x) ((x) == 0x20e6) 427 #define IS_MEDIA_IND_ARG_MOV(x) \ 428 ((((x) & 0xfc0ffc0f) == 0x0009fc00) \ 429 && (((x) & 0x03f00000) >= 0x00200000 \ 430 && ((x) & 0x03f00000) <= 0x00900000)) 435 #define IS_MEDIA_ARG_MOV(x) \ 436 (((((x) & 0xfc0ffc0f) == 0xac000000) || (((x) & 0xfc0ffc0f) == 0xa8000000)) \ 437 && (((x) & 0x000003f0) >= 0x00000020 && ((x) & 0x000003f0) <= 0x00000090)) 444 #define IS_MEDIA_MOV_TO_R14(x) \ 445 ((((x) & 0xfffffc0f) == 0xa0e00000) \ 446 || (((x) & 0xfffffc0f) == 0xa4e00000) \ 447 || (((x) & 0xfffffc0f) == 0xa8e00000) \ 448 || (((x) & 0xfffffc0f) == 0xb4e00000) \ 449 || (((x) & 0xfffffc0f) == 0xbce00000)) 453 #define IS_COMPACT_IND_ARG_MOV(x) \ 454 ((((x) & 0xf00f) == 0x6003) && (((x) & 0x00f0) >= 0x0020) \ 455 && (((x) & 0x00f0) <= 0x0090)) 459 #define IS_COMPACT_ARG_MOV(x) \ 460 (((((x) & 0xff0f) == 0x2e02) && (((x) & 0x00f0) >= 0x0020) \ 461 && ((x) & 0x00f0) <= 0x0090)) 465 #define IS_COMPACT_MOV_TO_R14(x) \ 466 ((((x) & 0xff0f) == 0x2e00) || (((x) & 0xff0f) == 0x2e01)) 468 #define IS_JSR_R0(x) ((x) == 0x400b) 469 #define IS_NOP(x) ((x) == 0x0009) 474 #define IS_MOV_SP_FP(x) ((x) == 0x6ef3) 478 #define IS_ADD_SP(x) (((x) & 0xff00) == 0x7f00) 505 if (sal.
end < func_end)
518 int insn_size = (media_mode ? 4 : 2);
520 for (here = start_pc,
end = start_pc + (insn_size * 28); here <
end;)
525 insn_size, byte_order);
534 insn_size, byte_order);
631 for (here = start_pc,
end = start_pc + (insn_size * 28); here <
end;)
637 insn_size, byte_order);
658 here - insn_size, media_mode);
685 here - insn_size, media_mode);
706 if (post_prologue_pc != 0)
707 return std::max (
pc, post_prologue_pc);
814 int base_regnum = reg_nr;
898 opc =
pc + (insn_size * 28);
899 if (opc > current_pc)
901 for ( ;
pc <= opc;
pc += insn_size)
905 insn_size, byte_order);
912 insn_size, byte_order);
916 = cache->
sp_offset - ((((next_insn & 0xf) ^ 0x8)
925 cache->
sp_offset - ((((insn & 0xf) ^ 0x8) - 0x8) << 2);
935 r0_val = ((insn & 0xff) ^ 0x80) - 0x80;
961 cache->
sp_offset -= ((insn & 0xff) ^ 0x80) - 0x80;
970 sign_extend ((((insn & 0xffc00) ^ 0x80000) - 0x80000) >> 10, 9);
1074 struct value *
function,
1077 int nargs,
struct value **args,
1082 int stack_offset, stack_alloc;
1084 int float_arg_index = 0;
1085 int double_arg_index = 0;
1095 memset (fp_args, 0,
sizeof (fp_args));
1108 for (argnum = 0, stack_alloc = 0; argnum < nargs; argnum++)
1118 for (argnum = 0, stack_offset = 0; argnum < nargs; argnum++)
1122 memset (valbuf, 0,
sizeof (valbuf));
1128 if (len < argreg_size)
1132 memcpy (valbuf + argreg_size - len,
1159 int_argreg, regval);
1176 while (fp_args[float_arg_index])
1189 fp_args[float_arg_index] = 1;
1202 while (fp_args[double_arg_index])
1203 double_arg_index += 2;
1212 int double_register_offset = double_arg_index / 2;
1215 fp_args[double_arg_index] = 1;
1216 fp_args[double_arg_index + 1] = 1;
1282 memcpy (valbuf, buf +
offset, len);
1285 error (
_(
"bad size for return value"));
1307 for (i = 0; i < len; i += 4)
1310 valbuf + len - 4 - i);
1329 memcpy (buf +
offset, valbuf, len);
1419 static struct type *
1428 static struct type *
1476 error (
_(
"sh64_register_convert_to_virtual " 1477 "called with non DR register number"));
1498 error (
_(
"sh64_register_convert_to_raw called " 1499 "with non DR register number"));
1513 for (portion = 0; portion < portions; portion++)
1546 2, base_regnum, temp_buffer);
1596 temp_buffer +
offset, 4);
1620 2, base_regnum, temp_buffer);
1645 int fpscr_base_regnum;
1649 unsigned int fpscr_c_value;
1650 unsigned int fpscr_c_part1_value;
1651 unsigned int fpscr_c_part2_value;
1679 fpscr_c_part1_value = fpscr_value & 0x3fffd;
1680 fpscr_c_part2_value = (sr_value & 0x7000) << 6;
1681 fpscr_c_value = fpscr_c_part1_value | fpscr_c_part2_value;
1706 int base_regnum, portion;
1720 for (portion = 0; portion < 2; portion++)
1724 base_regnum) * portion));
1733 for (portion = 0; portion < 2; portion++)
1736 base_regnum) * portion));
1745 for (portion = 0; portion < 4; portion++)
1748 base_regnum) * portion));
1786 for (portion = 0; portion < 2; portion++)
1797 base_regnum) * portion));
1806 for (portion = 0; portion < 4; portion++)
1811 base_regnum) * portion));
1817 int fpscr_base_regnum;
1823 unsigned int fpscr_c_value;
1824 unsigned int fpscr_mask;
1825 unsigned int sr_mask;
1847 fpscr_mask = 0x0003fffd;
1848 sr_mask = 0x001c0000;
1850 fpscr_value = fpscr_c_value & fpscr_mask;
1851 sr_value = (fpscr_value & sr_mask) >> 6;
1854 old_fpscr_value &= 0xfffc0002;
1855 fpscr_value |= old_fpscr_value;
1859 old_sr_value &= 0xffff8fff;
1860 sr_value |= old_sr_value;
1878 switch (cr_c_regnum)
1919 unsigned char *raw_buffer;
1922 raw_buffer = (
unsigned char *)
1927 error (
_(
"can't read register %d (%s)"),
1960 _(
"Invalid pseudo register number %d\n"),
regnum);
2061 _(
"Invalid register number %d\n"),
regnum);
2084 error (
_(
"Not a valid register for the current processor type"));
2142 error (
_(
"Not a valid register for the current processor type"));
2145 error (
_(
"Not a valid register for the current processor mode."));
2191 for (i = 0; i < SIM_SH64_NR_REGS; i++)
2212 *this_cache = cache;
2223 if (cache->
base == 0)
2249 for (i = 0; i < SIM_SH64_NR_REGS; i++)
2256 static struct value *
2258 void **this_cache,
int regnum)
2275 if (regnum < SIM_SH64_NR_REGS && cache->saved_regs[
regnum] != -1)
2300 if (cache->
base == 0)
2370 if (info.
abfd && bfd_get_arch_size (info.
abfd) == 64)
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)
static CORE_ADDR sh64_skip_prologue_hard_way(struct gdbarch *gdbarch, CORE_ADDR start_pc)
static enum register_status sh64_pseudo_register_read(struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, gdb_byte *buffer)
#define IS_MEDIA_IND_ARG_MOV(x)
static void sh64_do_cr_c_register_info(struct ui_file *file, struct frame_info *frame, int cr_c_regnum)
struct type * lookup_array_range_type(struct type *element_type, LONGEST low_bound, LONGEST high_bound)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
std::string target_float_to_string(const gdb_byte *addr, const struct type *type, const char *format)
enum register_status raw_read(int regnum, gdb_byte *buf)
static CORE_ADDR sh64_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 sign_extend(int value, int bits)
static const struct frame_base sh64_frame_base
static void sh64_elf_make_msymbol_special(asymbol *sym, struct minimal_symbol *msym)
void set_gdbarch_float_bit(struct gdbarch *gdbarch, int float_bit)
CORE_ADDR get_frame_pc(struct frame_info *frame)
void set_gdbarch_fp0_regnum(struct gdbarch *gdbarch, int fp0_regnum)
void gdbarch_init_osabi(struct gdbarch_info info, struct gdbarch *gdbarch)
static void sh64_pseudo_register_write(struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, const gdb_byte *buffer)
#define IS_MEDIA_MOV_TO_R14(x)
static const struct frame_unwind sh64_frame_unwind
struct value * frame_unwind_got_memory(struct frame_info *frame, int regnum, CORE_ADDR addr)
#define IS_ADDI_SP_MEDIA(x)
#define SET_MSYMBOL_VALUE_ADDRESS(symbol, new_value)
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
void set_gdbarch_short_bit(struct gdbarch *gdbarch, int short_bit)
void get_formatted_print_options(struct value_print_options *opts, char format)
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
#define IS_STQ_R18_R14(x)
void raw_write(int regnum, const gdb_byte *buf)
void * memset(T *s, int c, size_t n)=delete
void internal_error(const char *file, int line, const char *fmt,...)
static const char * sh64_register_name(struct gdbarch *gdbarch, int reg_nr)
static enum register_status pseudo_register_read_portions(struct gdbarch *gdbarch, struct regcache *regcache, int portions, int base_regnum, gdb_byte *buffer)
void target_float_convert(const gdb_byte *from, const struct type *from_type, gdb_byte *to, const struct type *to_type)
struct gdbarch_list * gdbarch_list_lookup_by_info(struct gdbarch_list *arches, const struct gdbarch_info *info)
int gdbarch_num_regs(struct gdbarch *gdbarch)
#define MSYMBOL_TARGET_FLAG_1(msymbol)
#define bits(obj, st, fn)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
struct type * sh_littlebyte_bigword_type
static int sh64_use_struct_convention(struct type *type)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
void set_gdbarch_print_registers_info(struct gdbarch *gdbarch, gdbarch_print_registers_info_ftype print_registers_info)
static struct type * sh64_build_float_register_type(struct gdbarch *gdbarch, int high)
void set_gdbarch_elf_make_msymbol_special(struct gdbarch *gdbarch, gdbarch_elf_make_msymbol_special_ftype elf_make_msymbol_special)
#define NUM_PSEUDO_REGS_SH_MEDIA
static void sh64_media_print_registers_info(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int fpregs)
#define FRAME_OBSTACK_ZALLOC(TYPE)
struct value * frame_unwind_got_constant(struct frame_info *frame, int regnum, ULONGEST val)
int gdbarch_num_pseudo_regs(struct gdbarch *gdbarch)
#define IS_COMPACT_MOV_TO_R14(x)
#define MSYMBOL_VALUE_RAW_ADDRESS(symbol)
void frame_base_set_default(struct gdbarch *gdbarch, const struct frame_base *default_base)
struct value * get_frame_register_value(struct frame_info *frame, int regnum)
void set_gdbarch_pseudo_register_write(struct gdbarch *gdbarch, gdbarch_pseudo_register_write_ftype pseudo_register_write)
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)
const gdb_byte * value_contents(struct value *value)
static CORE_ADDR sh64_skip_prologue(struct gdbarch *gdbarch, CORE_ADDR pc)
#define UNMAKE_ISA32_ADDR(addr)
static void sh64_analyze_prologue(struct gdbarch *gdbarch, struct sh64_frame_cache *cache, CORE_ADDR func_pc, CORE_ADDR current_pc)
static void sh64_register_convert_to_virtual(struct gdbarch *gdbarch, int regnum, struct type *type, gdb_byte *from, gdb_byte *to)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
void fprintf_filtered(struct ui_file *stream, const char *format,...)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
struct type * arch_float_type(struct gdbarch *gdbarch, int bit, const char *name, const struct floatformat **floatformats)
void set_gdbarch_sp_regnum(struct gdbarch *gdbarch, int sp_regnum)
void print_hex_chars(struct ui_file *stream, const gdb_byte *valaddr, unsigned len, enum bfd_endian byte_order, bool zero_pad)
struct type * register_type(struct gdbarch *gdbarch, int regnum)
void set_gdbarch_dummy_id(struct gdbarch *gdbarch, gdbarch_dummy_id_ftype dummy_id)
int legacy_register_sim_regno(struct gdbarch *gdbarch, int regnum)
void set_gdbarch_believe_pcc_promotion(struct gdbarch *gdbarch, int believe_pcc_promotion)
void fputs_filtered(const char *linebuffer, struct ui_file *stream)
static int sh64_breakpoint_kind_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pcptr)
const struct floatformat * floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN]
#define gdb_assert_not_reached(message)
static struct frame_id sh64_dummy_id(struct gdbarch *gdbarch, struct frame_info *this_frame)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
void set_gdbarch_register_sim_regno(struct gdbarch *gdbarch, gdbarch_register_sim_regno_ftype register_sim_regno)
static struct type * sh64_register_type(struct gdbarch *gdbarch, int reg_nr)
static const gdb_byte * sh64_sw_breakpoint_from_kind(struct gdbarch *gdbarch, int kind, int *size)
int find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr)
#define IS_MEDIA_ARG_MOV(x)
void set_gdbarch_unwind_pc(struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype unwind_pc)
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
const char * gdbarch_register_name(struct gdbarch *gdbarch, int regnr)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
static enum return_value_convention sh64_return_value(struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
void set_gdbarch_unwind_sp(struct gdbarch *gdbarch, gdbarch_unwind_sp_ftype unwind_sp)
static void sh64_print_registers_info(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int fpregs)
static void sh64_print_register(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum)
static CORE_ADDR after_prologue(CORE_ADDR pc)
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
static int sh64_compact_reg_base_num(struct gdbarch *gdbarch, int reg_nr)
struct gdbarch * sh64_gdbarch_init(struct gdbarch_info info, struct gdbarch_list *arches)
CORE_ADDR saved_regs[SIM_SH64_NR_REGS]
void set_gdbarch_breakpoint_kind_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_kind_from_pc_ftype breakpoint_kind_from_pc)
void set_gdbarch_long_long_bit(struct gdbarch *gdbarch, int long_long_bit)
static CORE_ADDR sh64_frame_base_address(struct frame_info *this_frame, void **this_cache)
static CORE_ADDR look_for_args_moves(struct gdbarch *gdbarch, CORE_ADDR start_pc, int media_mode)
#define MSYMBOL_IS_SPECIAL(msym)
static int sh64_dr_reg_base_num(struct gdbarch *gdbarch, int dr_regnum)
void print_spaces_filtered(int n, struct ui_file *stream)
int core_addr_lessthan(CORE_ADDR lhs, CORE_ADDR rhs)
int value_entirely_available(struct value *value)
#define IS_STQ_R14_R15(x)
void set_gdbarch_pseudo_register_read(struct gdbarch *gdbarch, gdbarch_pseudo_register_read_ftype pseudo_register_read)
const struct language_defn * current_language
int value_optimized_out(struct value *value)
#define IS_STQ_R18_R15(x)
struct type * builtin_double
struct bound_minimal_symbol lookup_minimal_symbol_by_pc(CORE_ADDR pc)
#define IS_STL_R18_R15(x)
#define IS_MOV_SP_FP_MEDIA(x)
int deprecated_frame_register_read(struct frame_info *frame, int regnum, gdb_byte *myaddr)
int gdbarch_fp0_regnum(struct gdbarch *gdbarch)
static CORE_ADDR sh64_frame_align(struct gdbarch *ignore, CORE_ADDR sp)
#define TYPE_CODE(thistype)
enum register_status regcache_raw_read(struct regcache *regcache, int regnum, gdb_byte *buf)
struct value * frame_unwind_got_register(struct frame_info *frame, int regnum, int new_regnum)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
static void sh64_register_convert_to_raw(struct gdbarch *gdbarch, struct type *type, int regnum, const gdb_byte *from, gdb_byte *to)
#define IS_ISA32_ADDR(addr)
void set_gdbarch_int_bit(struct gdbarch *gdbarch, int int_bit)
struct minimal_symbol * minsym
static int sh64_fv_reg_base_num(struct gdbarch *gdbarch, int fv_regnum)
static struct sh64_frame_cache * sh64_frame_cache(struct frame_info *this_frame, void **this_cache)
void set_gdbarch_num_pseudo_regs(struct gdbarch *gdbarch, int num_pseudo_regs)
static void sh64_do_pseudo_register(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum)
void dwarf2_append_unwinders(struct gdbarch *gdbarch)
enum register_status regcache_cooked_read(struct regcache *regcache, int regnum, gdb_byte *buf)
static void sh64_do_register(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum)
static void sh64_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static int pc_is_isa32(bfd_vma memaddr)
static CORE_ADDR sh64_unwind_pc(struct gdbarch *gdbarch, struct frame_info *next_frame)
static struct value * sh64_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
void val_print(struct type *type, LONGEST embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, struct value *val, const struct value_print_options *options, const struct language_defn *language)
struct type * sh64_littlebyte_bigword_type(struct gdbarch *gdbarch)
unsigned long long ULONGEST
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
static CORE_ADDR sh64_unwind_sp(struct gdbarch *gdbarch, struct frame_info *next_frame)
struct type * builtin_long_long
static int ignore(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
int register_size(struct gdbarch *gdbarch, int regnum)
void set_gdbarch_long_double_bit(struct gdbarch *gdbarch, int long_double_bit)
struct type * value_type(const struct value *value)
void set_gdbarch_long_bit(struct gdbarch *gdbarch, int long_bit)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype return_value)
#define IS_ADDIL_SP_MEDIA(x)
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
static void sh64_do_fp_register(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum)
static void sh64_compact_print_registers_info(struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int fpregs)
static void sh64_extract_return_value(struct type *type, struct regcache *regcache, gdb_byte *valbuf)
#define TYPE_LENGTH(thistype)
void set_gdbarch_ptr_bit(struct gdbarch *gdbarch, int ptr_bit)
void set_gdbarch_push_dummy_call(struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype push_dummy_call)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
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 sh64_store_return_value(struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
#define IS_COMPACT_IND_ARG_MOV(x)
#define IS_COMPACT_ARG_MOV(x)
enum bfd_endian byte_order
void set_gdbarch_pc_regnum(struct gdbarch *gdbarch, int pc_regnum)
void set_gdbarch_register_name(struct gdbarch *gdbarch, gdbarch_register_name_ftype register_name)
CORE_ADDR get_frame_func(struct frame_info *this_frame)
void error(const char *fmt,...)
struct gdbarch * gdbarch_alloc(const struct gdbarch_info *info, struct gdbarch_tdep *tdep)
#define NUM_PSEUDO_REGS_SH_COMPACT
void set_gdbarch_inner_than(struct gdbarch *gdbarch, gdbarch_inner_than_ftype inner_than)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
static struct sh64_frame_cache * sh64_alloc_frame_cache(void)
static int sh64_fpp_reg_base_num(struct gdbarch *gdbarch, int fpp_regnum)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
struct type * builtin_float
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
struct type * builtin_int
void regcache_raw_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
#define IS_STL_R14_R15(x)