GDB (xrefs)
|
Go to the source code of this file.
Classes | |
struct | ppc_reg_offsets |
struct | gdbarch_tdep |
struct | ppc_insn_pattern |
Macros | |
#define | PPC_INSN_SIZE 4 |
#define | PPC_MAX_EPILOGUE_INSTRUCTIONS 52 |
Enumerations | |
enum | powerpc_elf_abi { POWERPC_ELF_AUTO, POWERPC_ELF_V1, POWERPC_ELF_V2, POWERPC_ELF_LAST } |
enum | powerpc_vector_abi { POWERPC_VEC_AUTO, POWERPC_VEC_GENERIC, POWERPC_VEC_ALTIVEC, POWERPC_VEC_SPE, POWERPC_VEC_LAST } |
enum | { ppc_num_gprs = 32, ppc_num_fprs = 32, ppc_num_srs = 16, ppc_num_vrs = 32, ppc_num_vshrs = 32, ppc_num_vsrs = 64, ppc_num_efprs = 32 } |
enum | { PPC_R0_REGNUM = 0, PPC_F0_REGNUM = 32, PPC_PC_REGNUM = 64, PPC_MSR_REGNUM = 65, PPC_CR_REGNUM = 66, PPC_LR_REGNUM = 67, PPC_CTR_REGNUM = 68, PPC_XER_REGNUM = 69, PPC_FPSCR_REGNUM = 70, PPC_MQ_REGNUM = 71, PPC_SPE_UPPER_GP0_REGNUM = 72, PPC_SPE_ACC_REGNUM = 104, PPC_SPE_FSCR_REGNUM = 105, PPC_VR0_REGNUM = 106, PPC_VSCR_REGNUM = 138, PPC_VRSAVE_REGNUM = 139, PPC_VSR0_UPPER_REGNUM = 140, PPC_VSR31_UPPER_REGNUM = 171, PPC_NUM_REGS } |
#define PPC_INSN_SIZE 4 |
Definition at line 327 of file ppc-tdep.h.
Referenced by ppc_deal_with_atomic_sequence(), ppc_displaced_step_fixup(), ppcfbsd_sigtramp_frame_cache(), ppcfbsd_sigtramp_frame_sniffer(), ppcobsd_sigtramp_frame_cache(), ppcobsd_sigtramp_frame_sniffer(), rs6000_gdbarch_init(), rs6000_in_function_epilogue_frame_p(), and rs6000_software_single_step().
#define PPC_MAX_EPILOGUE_INSTRUCTIONS 52 |
Definition at line 330 of file ppc-tdep.h.
Referenced by rs6000_in_function_epilogue_frame_p().
anonymous enum |
Enumerator | |
---|---|
ppc_num_gprs | |
ppc_num_fprs | |
ppc_num_srs | |
ppc_num_vrs | |
ppc_num_vshrs | |
ppc_num_vsrs | |
ppc_num_efprs |
Definition at line 268 of file ppc-tdep.h.
anonymous enum |
Definition at line 285 of file ppc-tdep.h.
enum powerpc_elf_abi |
Enumerator | |
---|---|
POWERPC_ELF_AUTO | |
POWERPC_ELF_V1 | |
POWERPC_ELF_V2 | |
POWERPC_ELF_LAST |
Definition at line 186 of file ppc-tdep.h.
enum powerpc_vector_abi |
Enumerator | |
---|---|
POWERPC_VEC_AUTO | |
POWERPC_VEC_GENERIC | |
POWERPC_VEC_ALTIVEC | |
POWERPC_VEC_SPE | |
POWERPC_VEC_LAST |
Definition at line 195 of file ppc-tdep.h.
Definition at line 168 of file rs6000-tdep.c.
References gdbarch_tdep(), gdbarch_tdep::ppc_vr0_regnum, and gdbarch_tdep::ppc_vrsave_regnum.
Referenced by fetch_register(), and store_register().
CORE_ADDR ppc64_sysv_abi_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 | ||
) |
Definition at line 1578 of file ppc-sysv-tdep.c.
References align_down(), check_typedef(), convert_code_addr_to_desc_addr(), gdbarch_tdep::elf_abi, find_function_addr(), ppc64_sysv_argpos::freg, gdb_assert, gdbarch_byte_order(), gdbarch_sp_regnum(), gdbarch_tdep(), ppc64_sysv_argpos::gparam, ppc64_sysv_argpos::greg, POWERPC_ELF_V1, POWERPC_ELF_V2, ppc64_sysv_abi_push_integer(), ppc64_sysv_abi_push_param(), ppc_floating_point_unit_p(), gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_lr_regnum, ppc_sysv_use_opencl_abi(), gdbarch_tdep::ppc_vr0_regnum, read_memory_unsigned_integer(), ppc64_sysv_argpos::refparam, ppc64_sysv_argpos::regcache, regcache_cooked_read_unsigned(), regcache_cooked_write_signed(), regcache_cooked_write_unsigned(), register_type(), TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_COMPLEX, TYPE_CODE_PTR, TYPE_LENGTH, TYPE_TARGET_TYPE, TYPE_VECTOR, value_as_address(), value_contents(), value_type(), ppc64_sysv_argpos::vreg, gdbarch_tdep::wordsize, and write_memory_signed_integer().
Referenced by rs6000_gdbarch_init().
enum return_value_convention ppc64_sysv_abi_return_value | ( | struct gdbarch * | gdbarch, |
struct value * | function, | ||
struct type * | valtype, | ||
struct regcache * | regcache, | ||
gdb_byte * | readbuf, | ||
const gdb_byte * | writebuf | ||
) |
Definition at line 1941 of file ppc-sysv-tdep.c.
References check_typedef(), gdbarch_tdep::elf_abi, gdb_assert, gdbarch_byte_order(), gdbarch_tdep(), len, MAX_REGISTER_SIZE, offset, POWERPC_ELF_V2, POWERPC_VEC_ALTIVEC, ppc64_elfv2_abi_homogeneous_aggregate(), ppc64_sysv_abi_return_value_base(), ppc_floating_point_unit_p(), gdbarch_tdep::ppc_gp0_regnum, ppc_sysv_use_opencl_abi(), gdbarch_tdep::ppc_vr0_regnum, regcache_cooked_read(), regcache_cooked_read_part(), regcache_cooked_write(), regcache_cooked_write_part(), register_size(), register_type(), regnum, RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_COMPLEX, TYPE_CODE_DECFLOAT, TYPE_CODE_FLT, TYPE_CODE_INT, TYPE_CODE_PTR, TYPE_CODE_REF, TYPE_CODE_STRUCT, TYPE_CODE_UNION, TYPE_LENGTH, TYPE_TARGET_TYPE, TYPE_VECTOR, value_type(), gdbarch_tdep::vector_abi, and gdbarch_tdep::wordsize.
Referenced by rs6000_gdbarch_init().
Definition at line 233 of file rs6000-tdep.c.
References gdbarch_tdep(), gdbarch_tdep::ppc_vr0_regnum, and gdbarch_tdep::ppc_vrsave_regnum.
Referenced by ppc_collect_vrregset(), and ppc_supply_vrregset().
void ppc_collect_fpregset | ( | const struct regset * | regset, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | fpregs, | ||
size_t | len | ||
) |
Definition at line 710 of file rs6000-tdep.c.
References ppc_reg_offsets::f0_offset, ppc_reg_offsets::fpscr_offset, ppc_reg_offsets::fpscr_size, gdbarch_tdep(), get_regcache_arch(), offset, ppc_collect_reg(), ppc_floating_point_unit_p(), gdbarch_tdep::ppc_fp0_regnum, ppc_fpreg_offset(), gdbarch_tdep::ppc_fpscr_regnum, ppc_num_fprs, and regset::regmap.
Referenced by fill_fpregset(), ppcnbsd_store_inferior_registers(), ppcobsd_collect_gregset(), ppcobsd_store_registers(), and rs6000_aix_collect_regset().
void ppc_collect_gregset | ( | const struct regset * | regset, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | gregs, | ||
size_t | len | ||
) |
Definition at line 663 of file rs6000-tdep.c.
References ppc_reg_offsets::cr_offset, ppc_reg_offsets::ctr_offset, gdbarch_pc_regnum(), gdbarch_tdep(), get_regcache_arch(), ppc_reg_offsets::gpr_size, ppc_reg_offsets::lr_offset, ppc_reg_offsets::mq_offset, offset, ppc_reg_offsets::pc_offset, ppc_collect_reg(), gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ctr_regnum, gdbarch_tdep::ppc_gp0_regnum, ppc_greg_offset(), gdbarch_tdep::ppc_lr_regnum, gdbarch_tdep::ppc_mq_regnum, ppc_num_gprs, gdbarch_tdep::ppc_ps_regnum, gdbarch_tdep::ppc_xer_regnum, ppc_reg_offsets::ps_offset, ppc_reg_offsets::r0_offset, regset::regmap, ppc_reg_offsets::xer_offset, and ppc_reg_offsets::xr_size.
Referenced by fill_gregset(), ppc_linux_collect_gregset(), ppcnbsd_store_inferior_registers(), ppcobsd_collect_gregset(), ppcobsd_store_registers(), and rs6000_aix_collect_regset().
void ppc_collect_reg | ( | const struct regcache * | regcache, |
int | regnum, | ||
gdb_byte * | regs, | ||
size_t | offset, | ||
int | regsize | ||
) |
Definition at line 404 of file rs6000-tdep.c.
References gdbarch_byte_order(), get_regcache_arch(), regcache_raw_collect(), and register_size().
Referenced by ppc_collect_fpregset(), ppc_collect_gregset(), ppc_collect_vrregset(), ppc_collect_vsxregset(), and ppc_linux_collect_gregset().
void ppc_collect_vrregset | ( | const struct regset * | regset, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | vrregs, | ||
size_t | len | ||
) |
Definition at line 783 of file rs6000-tdep.c.
References gdbarch_tdep(), get_regcache_arch(), offset, ppc_altivec_support_p(), ppc_collect_reg(), ppc_num_vrs, gdbarch_tdep::ppc_vr0_regnum, ppc_vrreg_offset(), gdbarch_tdep::ppc_vrsave_regnum, regset::regmap, ppc_reg_offsets::vr0_offset, ppc_reg_offsets::vrsave_offset, and ppc_reg_offsets::vscr_offset.
void ppc_collect_vsxregset | ( | const struct regset * | regset, |
const struct regcache * | regcache, | ||
int | regnum, | ||
void * | vsxregs, | ||
size_t | len | ||
) |
Definition at line 749 of file rs6000-tdep.c.
References gdbarch_tdep(), get_regcache_arch(), ppc_collect_reg(), gdbarch_tdep::ppc_vsr0_upper_regnum, and ppc_vsx_support_p().
int ppc_deal_with_atomic_sequence | ( | struct frame_info * | frame | ) |
Definition at line 1094 of file rs6000-tdep.c.
References BC_INSN, BRANCH_MASK, gdbarch_byte_order(), get_frame_address_space(), get_frame_arch(), get_frame_pc(), insert_single_step_breakpoint(), LDARX_INSTRUCTION, LWARX_INSTRUCTION, LWARX_MASK, PPC_INSN_SIZE, read_memory_integer(), STDCX_INSTRUCTION, STWCX_INSTRUCTION, and STWCX_MASK.
Referenced by rs6000_gdbarch_init(), and rs6000_software_single_step().
Definition at line 212 of file rs6000-tdep.c.
References gdbarch_tdep(), gdbarch_tdep::ppc_fp0_regnum, and gdbarch_tdep::ppc_fpscr_regnum.
Referenced by fetch_regs_kernel_thread(), fetch_regs_user_thread(), fill_fprs(), getfpregs_supplies(), ppc64_sysv_abi_push_dummy_call(), ppc64_sysv_abi_return_value(), ppc_collect_fpregset(), ppc_linux_sigtramp_cache(), ppc_supply_fpregset(), rs6000_frame_cache(), rs6000_lynx178_push_dummy_call(), rs6000_lynx178_return_value(), rs6000_push_dummy_call(), rs6000_return_value(), store_regs_kernel_thread(), store_regs_user_thread(), and supply_fprs().
Definition at line 6141 of file rs6000-tdep.c.
Referenced by ppc64_standard_linkage1_target(), ppc64_standard_linkage2_target(), ppc64_standard_linkage4_target(), and ppc_skip_trampoline_code().
Definition at line 6151 of file rs6000-tdep.c.
Referenced by ppc64_standard_linkage1_target(), ppc64_standard_linkage2_target(), ppc64_standard_linkage3_target(), and ppc64_standard_linkage4_target().
int ppc_insns_match_pattern | ( | struct frame_info * | frame, |
CORE_ADDR | pc, | ||
struct ppc_insn_pattern * | pattern, | ||
unsigned int * | insns | ||
) |
Definition at line 6112 of file rs6000-tdep.c.
References gdbarch::data, ppc_insn_pattern::mask, and read_insn().
Referenced by ppc64_skip_trampoline_code(), and ppc_skip_trampoline_code().
Definition at line 5056 of file rs6000-tdep.c.
References _, fprintf_unfiltered(), gdb_assert, gdb_stdlog, gdbarch_byte_order(), gdbarch_tdep(), paddress(), PPC_BIT, PPC_BO, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ctr_regnum, PPC_D, PPC_DS, PPC_FIELD, gdbarch_tdep::ppc_fp0_regnum, PPC_FRT, gdbarch_tdep::ppc_gp0_regnum, PPC_LEV, PPC_LK, gdbarch_tdep::ppc_lr_regnum, PPC_OP6, PPC_PC_REGNUM, ppc_process_record_op19(), ppc_process_record_op31(), ppc_process_record_op4(), ppc_process_record_op59(), ppc_process_record_op60(), ppc_process_record_op63(), PPC_RA, PPC_RC, PPC_RS, PPC_RT, gdbarch_tdep::ppc_syscall_record, gdbarch_tdep::ppc_xer_regnum, printf_unfiltered(), read_memory_unsigned_integer(), record_full_arch_list_add_end(), record_full_arch_list_add_mem(), record_full_arch_list_add_reg(), regcache_raw_read_unsigned(), and size.
void ppc_supply_fpregset | ( | const struct regset * | regset, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | fpregs, | ||
size_t | len | ||
) |
Definition at line 550 of file rs6000-tdep.c.
References ppc_reg_offsets::f0_offset, ppc_reg_offsets::fpscr_offset, ppc_reg_offsets::fpscr_size, gdbarch_tdep(), get_regcache_arch(), offset, ppc_floating_point_unit_p(), gdbarch_tdep::ppc_fp0_regnum, ppc_fpreg_offset(), gdbarch_tdep::ppc_fpscr_regnum, ppc_num_fprs, ppc_supply_reg(), and regset::regmap.
Referenced by ppcfbsd_fetch_inferior_registers(), ppcnbsd_fetch_inferior_registers(), ppcobsd_fetch_registers(), ppcobsd_supply_gregset(), rs6000_aix_supply_regset(), and supply_fpregset().
void ppc_supply_gregset | ( | const struct regset * | regset, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | gregs, | ||
size_t | len | ||
) |
Definition at line 505 of file rs6000-tdep.c.
References ppc_reg_offsets::cr_offset, ppc_reg_offsets::ctr_offset, gdbarch_pc_regnum(), gdbarch_tdep(), get_regcache_arch(), ppc_reg_offsets::gpr_size, ppc_reg_offsets::lr_offset, ppc_reg_offsets::mq_offset, offset, ppc_reg_offsets::pc_offset, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ctr_regnum, gdbarch_tdep::ppc_gp0_regnum, ppc_greg_offset(), gdbarch_tdep::ppc_lr_regnum, gdbarch_tdep::ppc_mq_regnum, ppc_num_gprs, gdbarch_tdep::ppc_ps_regnum, ppc_supply_reg(), gdbarch_tdep::ppc_xer_regnum, ppc_reg_offsets::ps_offset, ppc_reg_offsets::r0_offset, regset::regmap, ppc_reg_offsets::xer_offset, and ppc_reg_offsets::xr_size.
Referenced by ppc_linux_supply_gregset(), ppcnbsd_fetch_inferior_registers(), ppcobsd_fetch_registers(), ppcobsd_supply_gregset(), rs6000_aix_supply_regset(), and supply_gregset().
void ppc_supply_reg | ( | struct regcache * | regcache, |
int | regnum, | ||
const gdb_byte * | regs, | ||
size_t | offset, | ||
int | regsize | ||
) |
Definition at line 383 of file rs6000-tdep.c.
References gdbarch_byte_order(), get_regcache_arch(), regcache_raw_supply(), and register_size().
Referenced by ppc_linux_supply_gregset(), ppc_supply_fpregset(), ppc_supply_gregset(), ppc_supply_vrregset(), and ppc_supply_vsxregset().
void ppc_supply_vrregset | ( | const struct regset * | regset, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | vrregs, | ||
size_t | len | ||
) |
Definition at line 618 of file rs6000-tdep.c.
References gdbarch_tdep(), get_regcache_arch(), offset, ppc_altivec_support_p(), ppc_num_vrs, ppc_supply_reg(), gdbarch_tdep::ppc_vr0_regnum, ppc_vrreg_offset(), gdbarch_tdep::ppc_vrsave_regnum, regset::regmap, ppc_reg_offsets::vr0_offset, ppc_reg_offsets::vrsave_offset, and ppc_reg_offsets::vscr_offset.
void ppc_supply_vsxregset | ( | const struct regset * | regset, |
struct regcache * | regcache, | ||
int | regnum, | ||
const void * | vsxregs, | ||
size_t | len | ||
) |
Definition at line 587 of file rs6000-tdep.c.
References gdbarch_tdep(), get_regcache_arch(), ppc_supply_reg(), gdbarch_tdep::ppc_vsr0_upper_regnum, and ppc_vsx_support_p().
enum return_value_convention ppc_sysv_abi_broken_return_value | ( | struct gdbarch * | gdbarch, |
struct value * | function, | ||
struct type * | valtype, | ||
struct regcache * | regcache, | ||
gdb_byte * | readbuf, | ||
const gdb_byte * | writebuf | ||
) |
Definition at line 1050 of file ppc-sysv-tdep.c.
References do_ppc_sysv_return_value(), and value_type().
Referenced by ppcfbsd_return_value(), ppcnbsd_return_value(), and ppcobsd_init_abi().
CORE_ADDR ppc_sysv_abi_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 | ||
) |
Definition at line 60 of file ppc-sysv-tdep.c.
References align_down(), align_up(), check_typedef(), convert_typed_floating(), floatformats_ibm_long_double, gdb_assert, gdbarch_byte_order(), gdbarch_long_double_format(), gdbarch_sp_regnum(), gdbarch_tdep(), len, MAX_REGISTER_SIZE, POWERPC_VEC_ALTIVEC, POWERPC_VEC_SPE, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ev0_regnum, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_lr_regnum, ppc_sysv_use_opencl_abi(), gdbarch_tdep::ppc_vr0_regnum, regcache_cooked_read_unsigned(), regcache_cooked_write(), regcache_cooked_write_signed(), regcache_cooked_write_unsigned(), register_type(), regnum, gdbarch_tdep::soft_float, store_unsigned_integer(), TYPE_CODE, TYPE_CODE_ARRAY, TYPE_CODE_DECFLOAT, TYPE_CODE_FLT, TYPE_CODE_INT, TYPE_CODE_STRUCT, TYPE_CODE_UNION, TYPE_LENGTH, TYPE_TARGET_TYPE, TYPE_VECTOR, unpack_long(), value_contents(), value_type(), gdbarch_tdep::vector_abi, word, gdbarch_tdep::wordsize, write_memory(), and write_memory_signed_integer().
Referenced by rs6000_gdbarch_init().
enum return_value_convention ppc_sysv_abi_return_value | ( | struct gdbarch * | gdbarch, |
struct value * | function, | ||
struct type * | valtype, | ||
struct regcache * | regcache, | ||
gdb_byte * | readbuf, | ||
const gdb_byte * | writebuf | ||
) |
Definition at line 1040 of file ppc-sysv-tdep.c.
References do_ppc_sysv_return_value(), and value_type().
Referenced by ppc_linux_return_value(), and rs6000_gdbarch_init().
Definition at line 180 of file rs6000-tdep.c.
References gdbarch_tdep(), IS_SPE_PSEUDOREG, gdbarch_tdep::ppc_acc_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, ppc_num_gprs, and gdbarch_tdep::ppc_spefscr_regnum.
Referenced by fetch_register(), and store_register().
Definition at line 156 of file rs6000-tdep.c.
References gdbarch_tdep(), gdbarch_tdep::ppc_vsr0_regnum, and gdbarch_tdep::ppc_vsr0_upper_regnum.
Referenced by fetch_register(), and store_register().