GDB (xrefs)
|
#include "defs.h"
#include "arch-utils.h"
#include "prologue-value.h"
#include "target.h"
#include "regcache.h"
#include "opcode/rl78.h"
#include "dis-asm.h"
#include "gdbtypes.h"
#include "frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "value.h"
#include "gdbcore.h"
#include "dwarf2-frame.h"
#include "reggroups.h"
#include "elf/rl78.h"
#include "elf-bfd.h"
Go to the source code of this file.
anonymous enum |
Definition at line 43 of file rl78-tdep.c.
anonymous enum |
Definition at line 55 of file rl78-tdep.c.
void _initialize_rl78_tdep | ( | void | ) |
Definition at line 1206 of file rl78-tdep.c.
References _initialize_rl78_tdep, register_gdbarch_init(), and rl78_gdbarch_init().
static void check_for_saved | ( | void * | result_untyped, |
pv_t | addr, | ||
CORE_ADDR | size, | ||
pv_t | value | ||
) | [static] |
Definition at line 636 of file rl78-tdep.c.
References prologue_value::k, prologue_value::kind, pv_is_register(), prologue_value::reg, rl78_prologue::reg_offset, register_size(), RL78_SP_REGNUM, and target_gdbarch().
Referenced by rl78_analyze_prologue().
static CORE_ADDR rl78_addr_bits_remove | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | addr | ||
) | [static] |
Definition at line 743 of file rl78-tdep.c.
Referenced by rl78_gdbarch_init(), and rl78_unwind_pc().
static void rl78_address_to_pointer | ( | struct gdbarch * | gdbarch, |
struct type * | type, | ||
gdb_byte * | buf, | ||
CORE_ADDR | addr | ||
) | [static] |
Definition at line 751 of file rl78-tdep.c.
References gdbarch_byte_order(), store_unsigned_integer(), and TYPE_LENGTH.
Referenced by rl78_gdbarch_init().
static struct rl78_prologue* rl78_analyze_frame_prologue | ( | struct frame_info * | this_frame, |
void ** | this_prologue_cache | ||
) | [static, read] |
Definition at line 821 of file rl78-tdep.c.
References FRAME_OBSTACK_ZALLOC, get_frame_func(), get_frame_pc(), and rl78_analyze_prologue().
Referenced by rl78_frame_base(), and rl78_prev_register().
static void rl78_analyze_prologue | ( | CORE_ADDR | start_pc, |
CORE_ADDR | limit_pc, | ||
struct rl78_prologue * | result | ||
) | [static] |
Definition at line 652 of file rl78-tdep.c.
References check_for_saved(), do_cleanups(), rl78_prologue::frame_size, gdbarch_addr_bit(), prologue_value::k, make_cleanup_free_pv_area(), make_pv_area(), memset(), rl78_get_opcode_byte_handle::pc, pv_add_constant(), pv_area_scan(), pv_area_store(), pv_is_register(), pv_register(), rl78_prologue::reg_offset, rl78_get_opcode_byte(), RL78_NUM_TOTAL_REGS, RL78_PC_REGNUM, RL78_REGS_PER_BANK, RL78_SP_REGNUM, and target_gdbarch().
Referenced by rl78_analyze_frame_prologue(), and rl78_skip_prologue().
static const gdb_byte* rl78_breakpoint_from_pc | ( | struct gdbarch * | gdbarch, |
CORE_ADDR * | pcptr, | ||
int * | lenptr | ||
) | [static] |
Definition at line 585 of file rl78-tdep.c.
References gdbarch_tdep::breakpoint.
Referenced by rl78_gdbarch_init().
static struct frame_id rl78_dummy_id | ( | struct gdbarch * | gdbarch, |
struct frame_info * | this_frame | ||
) | [static, read] |
Definition at line 1029 of file rl78-tdep.c.
References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), rl78_make_data_address(), and RL78_SP_REGNUM.
Referenced by rl78_gdbarch_init().
static int rl78_dwarf_reg_to_regnum | ( | struct gdbarch * | gdbarch, |
int | reg | ||
) | [static] |
Definition at line 924 of file rl78-tdep.c.
References _, internal_error(), RL78_BANK0_RP0_REGNUM, RL78_CS_REGNUM, RL78_ES_REGNUM, RL78_PC_REGNUM, RL78_PSW_REGNUM, and RL78_SP_REGNUM.
Referenced by rl78_gdbarch_init().
static CORE_ADDR rl78_frame_align | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | sp | ||
) | [static] |
Definition at line 1020 of file rl78-tdep.c.
References align_down(), and rl78_make_data_address().
Referenced by rl78_gdbarch_init().
static CORE_ADDR rl78_frame_base | ( | struct frame_info * | this_frame, |
void ** | this_prologue_cache | ||
) | [static] |
Definition at line 847 of file rl78-tdep.c.
References rl78_prologue::frame_size, get_frame_register_unsigned(), p, rl78_analyze_frame_prologue(), rl78_make_data_address(), RL78_SP_REGNUM, and sp.
Referenced by rl78_prev_register(), and rl78_this_id().
static struct gdbarch* rl78_gdbarch_init | ( | struct gdbarch_info | info, |
struct gdbarch_list * | arches | ||
) | [static, read] |
Definition at line 1087 of file rl78-tdep.c.
References gdbarch_info::abfd, arch_integer_type(), arch_type(), core_addr_lessthan(), dwarf2_append_unwinders(), gdbarch_tdep::elf_flags, floatformats_ieee_double, floatformats_ieee_single, frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_list_lookup_by_info(), gdbarch_list::next, rl78_addr_bits_remove(), rl78_address_to_pointer(), rl78_breakpoint_from_pc(), gdbarch_tdep::rl78_code_pointer, gdbarch_tdep::rl78_data_pointer, rl78_dummy_id(), rl78_dwarf_reg_to_regnum(), rl78_frame_align(), gdbarch_tdep::rl78_int16, gdbarch_tdep::rl78_int32, gdbarch_tdep::rl78_int8, RL78_NUM_PSEUDO_REGS, RL78_NUM_REGS, RL78_PC_REGNUM, rl78_pointer_to_address(), rl78_pseudo_register_read(), rl78_pseudo_register_write(), rl78_push_dummy_call(), rl78_register_name(), rl78_register_reggroup_p(), rl78_register_sim_regno(), rl78_register_type(), rl78_return_value(), rl78_skip_prologue(), RL78_SP_REGNUM, gdbarch_tdep::rl78_uint16, gdbarch_tdep::rl78_uint32, gdbarch_tdep::rl78_uint8, rl78_unwind_pc(), rl78_unwind_sp(), gdbarch_tdep::rl78_void, set_gdbarch_addr_bit(), set_gdbarch_addr_bits_remove(), set_gdbarch_address_to_pointer(), set_gdbarch_breakpoint_from_pc(), set_gdbarch_char_signed(), set_gdbarch_decr_pc_after_break(), set_gdbarch_double_bit(), set_gdbarch_double_format(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_addr_size(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_float_bit(), set_gdbarch_float_format(), set_gdbarch_frame_align(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_long_long_bit(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_pointer_to_address(), set_gdbarch_print_insn(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_register_name(), set_gdbarch_register_reggroup_p(), set_gdbarch_register_sim_regno(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), set_gdbarch_vbit_in_delta(), TYPE_CODE_PTR, TYPE_CODE_VOID, TYPE_TARGET_TYPE, TYPE_UNSIGNED, and xmalloc().
Referenced by _initialize_rl78_tdep().
static int rl78_get_opcode_byte | ( | void * | handle | ) | [static] |
Definition at line 612 of file rl78-tdep.c.
References rl78_get_opcode_byte_handle::pc, exsummary::status, and target_read_memory().
Referenced by rl78_analyze_prologue().
static CORE_ADDR rl78_make_data_address | ( | CORE_ADDR | addr | ) | [static] |
Definition at line 438 of file rl78-tdep.c.
Referenced by rl78_dummy_id(), rl78_frame_align(), rl78_frame_base(), rl78_pointer_to_address(), and rl78_push_dummy_call().
static CORE_ADDR rl78_make_instruction_address | ( | CORE_ADDR | addr | ) | [static] |
Definition at line 430 of file rl78-tdep.c.
Referenced by rl78_pointer_to_address(), and rl78_prev_register().
static CORE_ADDR rl78_pointer_to_address | ( | struct gdbarch * | gdbarch, |
struct type * | type, | ||
const gdb_byte * | buf | ||
) | [static] |
Definition at line 763 of file rl78-tdep.c.
References extract_unsigned_integer(), gdbarch_byte_order(), rl78_make_data_address(), rl78_make_instruction_address(), TYPE_CODE, TYPE_CODE_FUNC, TYPE_CODE_METHOD, TYPE_CODE_SPACE, TYPE_LENGTH, and TYPE_TARGET_TYPE.
Referenced by rl78_gdbarch_init().
static struct value* rl78_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_prologue_cache, | ||
int | regnum | ||
) | [static, read] |
Definition at line 870 of file rl78-tdep.c.
References frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), p, rl78_prologue::reg_offset, rl78_analyze_frame_prologue(), rl78_frame_base(), rl78_make_instruction_address(), RL78_PC_REGNUM, RL78_SP_REGNUM, RL78_SPH_REGNUM, RL78_SPL_REGNUM, ULONGEST, and value_as_long().
static enum register_status rl78_pseudo_register_read | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
int | reg, | ||
gdb_byte * | buffer | ||
) | [static] |
Definition at line 446 of file rl78-tdep.c.
References gdb_assert_not_reached, memcpy(), REG_VALID, regcache_raw_read(), regcache_raw_read_unsigned(), RL78_AX_REGNUM, RL78_BANK0_R0_REGNUM, RL78_BANK0_RP0_REGNUM, RL78_BANK3_R7_REGNUM, RL78_BANK3_RP3_REGNUM, RL78_H_REGNUM, RL78_HL_REGNUM, RL78_PC_REGNUM, RL78_PSW_REGNUM, RL78_RAW_BANK0_R0_REGNUM, RL78_RAW_PC_REGNUM, RL78_REGS_PER_BANK, RL78_SP_REGNUM, RL78_SPH_REGNUM, RL78_SPL_REGNUM, RL78_X_REGNUM, exsummary::status, and ULONGEST.
Referenced by rl78_gdbarch_init().
static void rl78_pseudo_register_write | ( | struct gdbarch * | gdbarch, |
struct regcache * | regcache, | ||
int | reg, | ||
const gdb_byte * | buffer | ||
) | [static] |
Definition at line 520 of file rl78-tdep.c.
References gdb_assert_not_reached, memcpy(), regcache_raw_read_unsigned(), regcache_raw_write(), RL78_AX_REGNUM, RL78_BANK0_R0_REGNUM, RL78_BANK0_RP0_REGNUM, RL78_BANK3_R7_REGNUM, RL78_BANK3_RP3_REGNUM, RL78_H_REGNUM, RL78_HL_REGNUM, RL78_PC_REGNUM, RL78_PSW_REGNUM, RL78_RAW_BANK0_R0_REGNUM, RL78_RAW_PC_REGNUM, RL78_REGS_PER_BANK, RL78_SP_REGNUM, RL78_SPH_REGNUM, RL78_SPL_REGNUM, RL78_X_REGNUM, and ULONGEST.
Referenced by rl78_gdbarch_init().
static CORE_ADDR rl78_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] |
Definition at line 1042 of file rl78-tdep.c.
References gdbarch_byte_order(), len, regcache_cooked_write_unsigned(), rl78_make_data_address(), RL78_SP_REGNUM, store_unsigned_integer(), TYPE_LENGTH, value_contents_all(), value_enclosing_type(), value_type(), and write_memory().
Referenced by rl78_gdbarch_init().
static const char* rl78_register_name | ( | struct gdbarch * | gdbarch, |
int | regnr | ||
) | [static] |
Definition at line 261 of file rl78-tdep.c.
Referenced by rl78_gdbarch_init().
static int rl78_register_reggroup_p | ( | struct gdbarch * | gdbarch, |
int | regnum, | ||
struct reggroup * | group | ||
) | [static] |
Definition at line 391 of file rl78-tdep.c.
References all_reggroup, general_reggroup, restore_reggroup, RL78_BANK0_R0_REGNUM, RL78_BANK0_RP0_REGNUM, RL78_BANK3_R7_REGNUM, RL78_BANK3_RP3_REGNUM, RL78_CS_REGNUM, RL78_ES_REGNUM, RL78_MEM_REGNUM, RL78_NUM_REGS, RL78_PC_REGNUM, RL78_PMC_REGNUM, RL78_RAW_PC_REGNUM, RL78_SP_REGNUM, RL78_SPH_REGNUM, RL78_SPL_REGNUM, save_reggroup, and system_reggroup.
Referenced by rl78_gdbarch_init().
static int rl78_register_sim_regno | ( | struct gdbarch * | gdbarch, |
int | regnum | ||
) | [static] |
Definition at line 956 of file rl78-tdep.c.
References gdb_assert, regnum, and RL78_NUM_REGS.
Referenced by rl78_gdbarch_init().
static struct type* rl78_register_type | ( | struct gdbarch * | gdbarch, |
int | reg_nr | ||
) | [static, read] |
Definition at line 241 of file rl78-tdep.c.
References gdbarch_tdep(), RL78_BANK0_R0_REGNUM, RL78_BANK3_R7_REGNUM, gdbarch_tdep::rl78_code_pointer, gdbarch_tdep::rl78_data_pointer, RL78_H_REGNUM, gdbarch_tdep::rl78_int8, RL78_MEM_REGNUM, RL78_PC_REGNUM, RL78_RAW_PC_REGNUM, gdbarch_tdep::rl78_uint32, and RL78_X_REGNUM.
Referenced by rl78_gdbarch_init().
static enum return_value_convention rl78_return_value | ( | struct gdbarch * | gdbarch, |
struct value * | function, | ||
struct type * | valtype, | ||
struct regcache * | regcache, | ||
gdb_byte * | readbuf, | ||
const gdb_byte * | writebuf | ||
) | [static] |
Definition at line 969 of file rl78-tdep.c.
References extract_unsigned_integer(), gdbarch_byte_order(), offset, regcache_cooked_read_unsigned(), regcache_cooked_write_unsigned(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, RL78_RAW_BANK1_R0_REGNUM, store_unsigned_integer(), TYPE_LENGTH, and ULONGEST.
Referenced by rl78_gdbarch_init().
static CORE_ADDR rl78_skip_prologue | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | pc | ||
) | [static] |
Definition at line 783 of file rl78-tdep.c.
References find_pc_partial_function(), name, rl78_prologue::prologue_end, and rl78_analyze_prologue().
Referenced by rl78_gdbarch_init().
static void rl78_this_id | ( | struct frame_info * | this_frame, |
void ** | this_prologue_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 859 of file rl78-tdep.c.
References frame_id_build(), get_frame_func(), and rl78_frame_base().
static CORE_ADDR rl78_unwind_pc | ( | struct gdbarch * | arch, |
struct frame_info * | next_frame | ||
) | [static] |
Definition at line 800 of file rl78-tdep.c.
References frame_unwind_register_unsigned(), rl78_addr_bits_remove(), and RL78_PC_REGNUM.
Referenced by rl78_gdbarch_init().
static CORE_ADDR rl78_unwind_sp | ( | struct gdbarch * | arch, |
struct frame_info * | next_frame | ||
) | [static] |
Definition at line 810 of file rl78-tdep.c.
References frame_unwind_register_unsigned(), and RL78_SP_REGNUM.
Referenced by rl78_gdbarch_init().
Referenced by _initialize_rl78_tdep(), and initialize_all_files().
struct frame_unwind rl78_unwind [static] |
{ NORMAL_FRAME, default_frame_unwind_stop_reason, rl78_this_id, rl78_prev_register, NULL, default_frame_sniffer }
Definition at line 911 of file rl78-tdep.c.