GDB (xrefs)
|
#include "defs.h"
#include "arch-utils.h"
#include "dwarf2-frame.h"
#include "floatformat.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "gdbcore.h"
#include "gdbtypes.h"
#include "inferior.h"
#include "symtab.h"
#include "objfiles.h"
#include "osabi.h"
#include "regcache.h"
#include "target.h"
#include "value.h"
#include "sparc64-tdep.h"
Go to the source code of this file.
Macros | |
#define | SPARC64_NUM_REGS ARRAY_SIZE (sparc64_register_names) |
#define | SPARC64_NUM_PSEUDO_REGS ARRAY_SIZE (sparc64_pseudo_register_names) |
#define | TSTATE_CWP 0x000000000000001fULL |
#define | TSTATE_ICC 0x0000000f00000000ULL |
#define | TSTATE_XCC 0x000000f000000000ULL |
#define | PSR_S 0x00000080 |
#define | PSR_ICC 0x00f00000 |
#define | PSR_VERS 0x0f000000 |
#define | PSR_IMPL 0xf0000000 |
#define | PSR_V8PLUS 0xff000000 |
#define | PSR_XCC 0x000f0000 |
Variables | |
static const char * | sparc64_register_names [] |
static const char * | sparc64_pseudo_register_names [] |
static const struct frame_unwind | sparc64_frame_unwind |
static const struct frame_base | sparc64_frame_base |
const struct sparc_fpregmap | sparc64_bsd_fpregmap |
#define PSR_ICC 0x00f00000 |
Definition at line 1233 of file sparc64-tdep.c.
Referenced by sparc64_collect_gregset().
#define PSR_IMPL 0xf0000000 |
Definition at line 1235 of file sparc64-tdep.c.
Referenced by sparc64_collect_gregset().
#define PSR_S 0x00000080 |
Definition at line 1232 of file sparc64-tdep.c.
Referenced by sparc64_supply_gregset().
#define PSR_V8PLUS 0xff000000 |
Definition at line 1236 of file sparc64-tdep.c.
Referenced by sparc64_collect_gregset(), and sparc64_supply_gregset().
#define PSR_VERS 0x0f000000 |
Definition at line 1234 of file sparc64-tdep.c.
Referenced by sparc64_collect_gregset().
#define PSR_XCC 0x000f0000 |
Definition at line 1237 of file sparc64-tdep.c.
Referenced by sparc64_collect_gregset().
#define SPARC64_NUM_PSEUDO_REGS ARRAY_SIZE (sparc64_pseudo_register_names) |
Definition at line 273 of file sparc64-tdep.c.
Referenced by sparc64_init_abi(), and sparc64_register_name().
#define SPARC64_NUM_REGS ARRAY_SIZE (sparc64_register_names) |
Definition at line 254 of file sparc64-tdep.c.
Referenced by sparc64_init_abi(), sparc64_pseudo_register_read(), sparc64_pseudo_register_write(), and sparc64_register_name().
#define TSTATE_CWP 0x000000000000001fULL |
Definition at line 1228 of file sparc64-tdep.c.
Referenced by sparc64_supply_gregset().
#define TSTATE_ICC 0x0000000f00000000ULL |
Definition at line 1229 of file sparc64-tdep.c.
Referenced by sparc64_supply_gregset().
#define TSTATE_XCC 0x000000f000000000ULL |
Definition at line 1230 of file sparc64-tdep.c.
Referenced by sparc64_supply_gregset().
Definition at line 610 of file sparc64-tdep.c.
References check_typedef(), sparc64_floating_p(), sparc64_structure_or_union_p(), TYPE_FIELD_TYPE, TYPE_LENGTH, and TYPE_NFIELDS.
Referenced by sparc64_store_arguments().
void sparc64_collect_fpregset | ( | const struct sparc_fpregmap * | fpregmap, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | fpregs | ||
) |
Definition at line 1505 of file sparc64-tdep.c.
References gdbarch_ptr_bit(), get_regcache_arch(), sparc_fpregmap::r_f0_offset, sparc_fpregmap::r_fsr_offset, regcache_raw_collect(), SPARC32_FSR_REGNUM, SPARC64_F32_REGNUM, SPARC64_FSR_REGNUM, and SPARC_F0_REGNUM.
Referenced by _initialize_sparc64_nat(), _initialize_sparc64obsd_nat(), fill_fpregset(), sparc64_linux_collect_core_fpregset(), sparc64_sol2_collect_core_fpregset(), sparc64fbsd_collect_fpregset(), and sparc64nbsd_collect_fpregset().
void sparc64_collect_gregset | ( | const struct sparc_gregmap * | gregmap, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | gregs | ||
) |
Definition at line 1357 of file sparc64-tdep.c.
References gdbarch::byte_order, extract_unsigned_integer(), gdbarch_byte_order(), gdbarch_ptr_bit(), get_regcache_arch(), offset, PSR_ICC, PSR_IMPL, PSR_V8PLUS, PSR_VERS, PSR_XCC, sparc_gregmap::r_g1_offset, sparc_gregmap::r_l0_offset, sparc_gregmap::r_npc_offset, sparc_gregmap::r_pc_offset, sparc_gregmap::r_y_offset, sparc_gregmap::r_y_size, regcache_raw_collect(), SPARC32_NPC_REGNUM, SPARC32_PC_REGNUM, SPARC32_PSR_REGNUM, SPARC32_Y_REGNUM, SPARC64_FPRS_REGNUM, SPARC64_NPC_REGNUM, SPARC64_PC_REGNUM, SPARC64_STATE_REGNUM, SPARC64_Y_REGNUM, SPARC_G1_REGNUM, SPARC_I7_REGNUM, SPARC_L0_REGNUM, SPARC_O7_REGNUM, and store_unsigned_integer().
Referenced by _initialize_sparc64_nat(), _initialize_sparc64obsd_nat(), fill_gregset(), sparc64_linux_collect_core_gregset(), sparc64_sol2_collect_core_gregset(), sparc64fbsd_collect_gregset(), and sparc64nbsd_collect_gregset().
Definition at line 105 of file sparc64-tdep.c.
References gdb_assert, len, TYPE_CODE, TYPE_CODE_COMPLEX, and TYPE_LENGTH.
Referenced by sparc64_extract_return_value(), sparc64_store_arguments(), sparc64_store_floating_fields(), and sparc64_store_return_value().
|
static |
Definition at line 1154 of file sparc64-tdep.c.
References DWARF2_FRAME_REG_CFA, DWARF2_FRAME_REG_RA_OFFSET, DWARF2_FRAME_REG_SAME_VALUE, dwarf2_frame_state_reg::how, dwarf2_frame_state_reg::loc, dwarf2_frame_state_reg::offset, SPARC64_NPC_REGNUM, SPARC64_PC_REGNUM, SPARC_G0_REGNUM, and SPARC_SP_REGNUM.
Referenced by sparc64_init_abi().
|
static |
Definition at line 712 of file sparc64-tdep.c.
References check_typedef(), gdb_assert, len, regcache_cooked_read(), regnum, SPARC64_D0_REGNUM, sparc64_floating_p(), SPARC64_Q0_REGNUM, sparc64_structure_or_union_p(), SPARC_F0_REGNUM, TYPE_FIELD_BITPOS, TYPE_FIELD_TYPE, TYPE_LENGTH, and TYPE_NFIELDS.
Referenced by sparc64_extract_return_value().
|
static |
Definition at line 1035 of file sparc64-tdep.c.
References gdb_assert, len, regcache_cooked_read(), sparc64_complex_floating_p(), sparc64_extract_floating_fields(), sparc64_floating_p(), sparc64_integral_or_pointer_p(), sparc64_structure_or_union_p(), SPARC_F0_REGNUM, SPARC_O0_REGNUM, TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_UNION, and TYPE_LENGTH.
Referenced by sparc64_return_value().
Definition at line 85 of file sparc64-tdep.c.
References gdb_assert, len, TYPE_CODE, TYPE_CODE_FLT, and TYPE_LENGTH.
Referenced by sparc64_16_byte_align_p(), sparc64_extract_floating_fields(), sparc64_extract_return_value(), sparc64_store_arguments(), sparc64_store_floating_fields(), and sparc64_store_return_value().
Definition at line 208 of file sparc64-tdep.c.
References append_flags_type_flag(), arch_flags_type(), gdbarch_tdep(), gdbarch_tdep::sparc64_fprs_type, and type.
Referenced by sparc64_register_type().
Definition at line 999 of file sparc64-tdep.c.
Referenced by sparc64_init_abi().
|
static |
Definition at line 591 of file sparc64-tdep.c.
References sparc_frame_cache::base, and sparc64_frame_cache().
|
static |
Definition at line 508 of file sparc64-tdep.c.
References sparc_frame_cache().
Referenced by sparc64_frame_base_address(), sparc64_frame_prev_register(), and sparc64_frame_this_id().
|
static |
Definition at line 528 of file sparc64-tdep.c.
References sparc_frame_cache::base, sparc_frame_cache::copied_regs_mask, frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), sparc_frame_cache::frameless_p, get_frame_arch(), get_frame_memory_unsigned(), get_frame_register_unsigned(), sparc_frame_cache::pc, sparc_frame_cache::saved_regs_mask, sparc64_frame_cache(), SPARC64_NPC_REGNUM, SPARC64_PC_REGNUM, sparc_fetch_wcookie(), SPARC_I0_REGNUM, SPARC_I7_REGNUM, SPARC_L0_REGNUM, SPARC_O0_REGNUM, and SPARC_O7_REGNUM.
|
static |
Definition at line 514 of file sparc64-tdep.c.
References sparc_frame_cache::base, frame_id_build(), sparc_frame_cache::pc, and sparc64_frame_cache().
Definition at line 175 of file sparc64-tdep.c.
References append_flags_type_flag(), arch_flags_type(), gdbarch_tdep(), gdbarch_tdep::sparc64_fsr_type, and type.
Referenced by sparc64_register_type().
void sparc64_init_abi | ( | struct gdbarch_info | info, |
struct gdbarch * | gdbarch | ||
) |
Definition at line 1181 of file sparc64-tdep.c.
References AT_ENTRY_POINT, default_stabs_argument_has_addr(), dwarf2_frame_set_init_reg(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_tdep(), gdbarch_tdep::npc_regnum, gdbarch_tdep::pc_regnum, set_gdbarch_call_dummy_location(), set_gdbarch_frame_align(), set_gdbarch_long_bit(), set_gdbarch_long_long_bit(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_pseudo_register_read(), set_gdbarch_pseudo_register_write(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_push_dummy_code(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_stabs_argument_has_addr(), set_gdbarch_stack_frame_destroyed_p(), sparc64_dwarf2_frame_init_reg(), sparc64_frame_align(), SPARC64_NPC_REGNUM, SPARC64_NUM_PSEUDO_REGS, SPARC64_NUM_REGS, SPARC64_PC_REGNUM, sparc64_pseudo_register_read(), sparc64_pseudo_register_write(), sparc64_push_dummy_call(), sparc64_register_name(), sparc64_register_type(), sparc64_return_value(), sparc64_skip_prologue(), and sparc_stack_frame_destroyed_p().
Referenced by sparc64_linux_init_abi(), sparc64_sol2_init_abi(), sparc64fbsd_init_abi(), sparc64nbsd_init_abi(), and sparc64obsd_init_abi().
Definition at line 54 of file sparc64-tdep.c.
References gdb_assert, len, TYPE_CODE, TYPE_CODE_BOOL, TYPE_CODE_CHAR, TYPE_CODE_ENUM, TYPE_CODE_INT, TYPE_CODE_PTR, TYPE_CODE_RANGE, TYPE_CODE_REF, and TYPE_LENGTH.
Referenced by sparc64_extract_return_value(), sparc64_store_arguments(), and sparc64_store_return_value().
|
static |
Definition at line 340 of file sparc64-tdep.c.
References gdb_assert, gdbarch_byte_order(), REG_VALID, regcache_raw_read(), regcache_raw_read_unsigned(), SPARC64_ASI_REGNUM, SPARC64_CCR_REGNUM, SPARC64_CWP_REGNUM, SPARC64_D0_REGNUM, SPARC64_D30_REGNUM, SPARC64_D32_REGNUM, SPARC64_D62_REGNUM, SPARC64_F32_REGNUM, SPARC64_NUM_REGS, SPARC64_PSTATE_REGNUM, SPARC64_Q0_REGNUM, SPARC64_Q28_REGNUM, SPARC64_Q32_REGNUM, SPARC64_Q60_REGNUM, SPARC64_STATE_REGNUM, SPARC_F0_REGNUM, status, and store_unsigned_integer().
Referenced by sparc64_init_abi().
|
static |
Definition at line 419 of file sparc64-tdep.c.
References bits, extract_unsigned_integer(), gdb_assert, gdbarch_byte_order(), regcache_raw_read_unsigned(), regcache_raw_write(), regcache_raw_write_unsigned(), SPARC64_ASI_REGNUM, SPARC64_CCR_REGNUM, SPARC64_CWP_REGNUM, SPARC64_D0_REGNUM, SPARC64_D30_REGNUM, SPARC64_D32_REGNUM, SPARC64_D62_REGNUM, SPARC64_F32_REGNUM, SPARC64_NUM_REGS, SPARC64_PSTATE_REGNUM, SPARC64_Q0_REGNUM, SPARC64_Q28_REGNUM, SPARC64_Q32_REGNUM, SPARC64_Q60_REGNUM, SPARC64_STATE_REGNUM, and SPARC_F0_REGNUM.
Referenced by sparc64_init_abi().
Definition at line 148 of file sparc64-tdep.c.
References append_flags_type_flag(), arch_flags_type(), gdbarch_tdep(), gdbarch_tdep::sparc64_pstate_type, and type.
Referenced by sparc64_register_type().
|
static |
Definition at line 1006 of file sparc64-tdep.c.
References BIAS, gdb_assert, regcache_cooked_write_unsigned(), sparc64_store_arguments(), SPARC_O7_REGNUM, and SPARC_SP_REGNUM.
Referenced by sparc64_init_abi().
Definition at line 278 of file sparc64-tdep.c.
References regnum, SPARC64_NUM_PSEUDO_REGS, SPARC64_NUM_REGS, sparc64_pseudo_register_names, and sparc64_register_names.
Referenced by sparc64_init_abi().
Definition at line 294 of file sparc64-tdep.c.
References _, builtin_type::builtin_data_ptr, builtin_type::builtin_double, builtin_type::builtin_float, builtin_type::builtin_func_ptr, builtin_type::builtin_int64, builtin_type::builtin_long_double, builtin_type(), internal_error(), SPARC64_ASI_REGNUM, SPARC64_CCR_REGNUM, SPARC64_CWP_REGNUM, SPARC64_D0_REGNUM, SPARC64_D62_REGNUM, SPARC64_F32_REGNUM, SPARC64_F62_REGNUM, SPARC64_FPRS_REGNUM, sparc64_fprs_type(), SPARC64_FSR_REGNUM, sparc64_fsr_type(), SPARC64_NPC_REGNUM, SPARC64_PC_REGNUM, SPARC64_PSTATE_REGNUM, sparc64_pstate_type(), SPARC64_Q0_REGNUM, SPARC64_Q60_REGNUM, SPARC64_STATE_REGNUM, SPARC64_Y_REGNUM, SPARC_F0_REGNUM, SPARC_F31_REGNUM, SPARC_FP_REGNUM, SPARC_G0_REGNUM, SPARC_I7_REGNUM, and SPARC_SP_REGNUM.
Referenced by sparc64_init_abi().
|
static |
Definition at line 1137 of file sparc64-tdep.c.
References RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, sparc64_extract_return_value(), sparc64_store_return_value(), and TYPE_LENGTH.
Referenced by sparc64_init_abi().
Definition at line 484 of file sparc64-tdep.c.
References symtab_and_line::end, find_pc_line(), find_pc_partial_function(), and sparc_analyze_prologue().
Referenced by sparc64_init_abi().
|
static |
Definition at line 761 of file sparc64-tdep.c.
References BIAS, gdb_assert, get_regcache_arch(), len, lookup_pointer_type(), regcache_cooked_write(), regcache_cooked_write_unsigned(), regnum, sparc64_16_byte_align_p(), sparc64_complex_floating_p(), SPARC64_D0_REGNUM, SPARC64_D10_REGNUM, SPARC64_D30_REGNUM, sparc64_floating_p(), sparc64_integral_or_pointer_p(), SPARC64_Q0_REGNUM, SPARC64_Q8_REGNUM, sparc64_store_floating_fields(), sparc64_structure_or_union_p(), SPARC_O0_REGNUM, TYPE_LENGTH, value_cast(), value_contents(), value_from_pointer(), value_type(), and write_memory().
Referenced by sparc64_push_dummy_call().
|
static |
Definition at line 638 of file sparc64-tdep.c.
References check_typedef(), gdb_assert, len, regcache_cooked_write(), regnum, sparc64_complex_floating_p(), SPARC64_D0_REGNUM, sparc64_floating_p(), SPARC64_Q0_REGNUM, sparc64_structure_or_union_p(), SPARC_F0_REGNUM, SPARC_F1_REGNUM, TYPE_FIELD_BITPOS, TYPE_FIELD_TYPE, TYPE_LENGTH, and TYPE_NFIELDS.
Referenced by sparc64_store_arguments(), and sparc64_store_return_value().
|
static |
Definition at line 1085 of file sparc64-tdep.c.
References gdb_assert, len, regcache_cooked_write(), sparc64_complex_floating_p(), sparc64_floating_p(), sparc64_integral_or_pointer_p(), sparc64_store_floating_fields(), sparc64_structure_or_union_p(), SPARC_F0_REGNUM, SPARC_O0_REGNUM, TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_UNION, and TYPE_LENGTH.
Referenced by sparc64_return_value().
Definition at line 129 of file sparc64-tdep.c.
References TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_STRUCT, and TYPE_CODE_UNION.
Referenced by sparc64_16_byte_align_p(), sparc64_extract_floating_fields(), sparc64_extract_return_value(), sparc64_store_arguments(), sparc64_store_floating_fields(), and sparc64_store_return_value().
void sparc64_supply_fpregset | ( | const struct sparc_fpregmap * | fpregmap, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | fpregs | ||
) |
Definition at line 1467 of file sparc64-tdep.c.
References gdbarch_ptr_bit(), get_regcache_arch(), sparc_fpregmap::r_f0_offset, sparc_fpregmap::r_fsr_offset, regcache_raw_supply(), SPARC32_FSR_REGNUM, SPARC64_F32_REGNUM, SPARC64_FSR_REGNUM, and SPARC_F0_REGNUM.
Referenced by _initialize_sparc64_nat(), _initialize_sparc64obsd_nat(), sparc64_linux_supply_core_fpregset(), sparc64_sol2_supply_core_fpregset(), sparc64fbsd_supply_fpregset(), sparc64nbsd_supply_fpregset(), sparc64obsd_supply_fpregset(), sparc64obsd_supply_gregset(), and supply_fpregset().
void sparc64_supply_gregset | ( | const struct sparc_gregmap * | gregmap, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | gregs | ||
) |
Definition at line 1240 of file sparc64-tdep.c.
References gdbarch::byte_order, extract_unsigned_integer(), gdbarch_byte_order(), gdbarch_ptr_bit(), get_regcache_arch(), offset, PSR_S, PSR_V8PLUS, sparc_gregmap::r_g1_offset, sparc_gregmap::r_l0_offset, sparc_gregmap::r_npc_offset, sparc_gregmap::r_pc_offset, sparc_gregmap::r_y_offset, sparc_gregmap::r_y_size, regcache_cooked_read_unsigned(), regcache_raw_supply(), SPARC32_NPC_REGNUM, SPARC32_PC_REGNUM, SPARC32_PSR_REGNUM, SPARC32_Y_REGNUM, SPARC64_FPRS_REGNUM, SPARC64_NPC_REGNUM, SPARC64_PC_REGNUM, SPARC64_STATE_REGNUM, SPARC64_Y_REGNUM, SPARC_G0_REGNUM, SPARC_G1_REGNUM, SPARC_I7_REGNUM, SPARC_L0_REGNUM, SPARC_O7_REGNUM, SPARC_SP_REGNUM, sparc_supply_rwindow(), store_unsigned_integer(), TSTATE_CWP, TSTATE_ICC, and TSTATE_XCC.
Referenced by _initialize_sparc64_nat(), _initialize_sparc64obsd_nat(), sparc64_linux_supply_core_gregset(), sparc64_sol2_supply_core_gregset(), sparc64fbsd_supply_gregset(), sparc64nbsd_supply_gregset(), sparc64obsd_supply_gregset(), and supply_gregset().
const struct sparc_fpregmap sparc64_bsd_fpregmap |
Definition at line 1542 of file sparc64-tdep.c.
Referenced by _initialize_sparc64_linux_nat(), _initialize_sparc64obsd_nat(), fill_fpregset(), sparc64_linux_collect_core_fpregset(), sparc64_linux_supply_core_fpregset(), sparc64fbsd_collect_fpregset(), sparc64fbsd_supply_fpregset(), sparc64nbsd_collect_fpregset(), sparc64nbsd_supply_fpregset(), sparc64obsd_supply_fpregset(), sparc64obsd_supply_gregset(), and supply_fpregset().
|
static |
Definition at line 599 of file sparc64-tdep.c.
|
static |
Definition at line 579 of file sparc64-tdep.c.
|
static |
Definition at line 259 of file sparc64-tdep.c.
Referenced by sparc64_register_name().
|
static |
Definition at line 230 of file sparc64-tdep.c.
Referenced by sparc64_register_name().