GDB (xrefs)

Classes | Macros | Typedefs | Functions | Variables
/tmp/gdb-8.1/gdb/rs6000-tdep.c File Reference
`#include "defs.h"`
`#include "frame.h"`
`#include "inferior.h"`
`#include "infrun.h"`
`#include "symtab.h"`
`#include "target.h"`
`#include "gdbcore.h"`
`#include "gdbcmd.h"`
`#include "objfiles.h"`
`#include "arch-utils.h"`
`#include "regcache.h"`
`#include "regset.h"`
`#include "target-float.h"`
`#include "value.h"`
`#include "parser-defs.h"`
`#include "osabi.h"`
`#include "infcall.h"`
`#include "sim-regno.h"`
`#include "gdb/sim-ppc.h"`
`#include "reggroups.h"`
`#include "dwarf2-frame.h"`
`#include "target-descriptions.h"`
`#include "user-regs.h"`
`#include "record-full.h"`
`#include "auxv.h"`
`#include "coff/internal.h"`
`#include "libcoff.h"`
`#include "coff/xcoff.h"`
`#include "libxcoff.h"`
`#include "elf-bfd.h"`
`#include "elf/ppc.h"`
`#include "elf/ppc64.h"`
`#include "solib-svr4.h"`
`#include "ppc-tdep.h"`
`#include "ppc-ravenscar-thread.h"`
`#include "dis-asm.h"`
`#include "trad-frame.h"`
`#include "frame-unwind.h"`
`#include "frame-base.h"`
`#include "ax.h"`
`#include "ax-gdb.h"`
`#include <algorithm>`
`#include "features/rs6000/powerpc-32.c"`
`#include "features/rs6000/powerpc-altivec32.c"`
`#include "features/rs6000/powerpc-vsx32.c"`
`#include "features/rs6000/powerpc-403.c"`
`#include "features/rs6000/powerpc-403gc.c"`
`#include "features/rs6000/powerpc-405.c"`
`#include "features/rs6000/powerpc-505.c"`
`#include "features/rs6000/powerpc-601.c"`
`#include "features/rs6000/powerpc-602.c"`
`#include "features/rs6000/powerpc-603.c"`
`#include "features/rs6000/powerpc-604.c"`
`#include "features/rs6000/powerpc-64.c"`
`#include "features/rs6000/powerpc-altivec64.c"`
`#include "features/rs6000/powerpc-vsx64.c"`
`#include "features/rs6000/powerpc-7400.c"`
`#include "features/rs6000/powerpc-750.c"`
`#include "features/rs6000/powerpc-860.c"`
`#include "features/rs6000/powerpc-e500.c"`
`#include "features/rs6000/rs6000.c"`

Go to the source code of this file.

## Classes
struct | rs6000_framedata
struct | variant
struct | rs6000_frame_cache

## Macros
#define | IS_SPE_PSEUDOREG(tdep, regnum)
#define | IS_DFP_PSEUDOREG(tdep, regnum)
#define | IS_VSX_PSEUDOREG(tdep, regnum)
#define | IS_EFP_PSEUDOREG(tdep, regnum)
#define | BRANCH_MASK 0xfc000000
#define | BP_MASK 0xFC0007FE
#define | B_INSN 0x48000000
#define | BC_INSN 0x40000000
#define | BXL_INSN 0x4c000000
#define | BP_INSN 0x7C000008
#define | LOAD_AND_RESERVE_MASK 0xfc0007fe
#define | LWARX_INSTRUCTION 0x7c000028
#define | LDARX_INSTRUCTION 0x7c0000A8
#define | LBARX_INSTRUCTION 0x7c000068
#define | LHARX_INSTRUCTION 0x7c0000e8
#define | LQARX_INSTRUCTION 0x7c000228
#define | STORE_CONDITIONAL_MASK 0xfc0007ff
#define | STWCX_INSTRUCTION 0x7c00012d
#define | STDCX_INSTRUCTION 0x7c0001ad
#define | STBCX_INSTRUCTION 0x7c00056d
#define | STHCX_INSTRUCTION 0x7c0005ad
#define | STQCX_INSTRUCTION 0x7c00016d
#define | IS_LOAD_AND_RESERVE_INSN(insn)
#define | IS_STORE_CONDITIONAL_INSN(insn)
#define | SIGNED_SHORT(x)
#define | GET_SRC_REG(x) (((x) >> 21) & 0x1f)
#define | BL_MASK 0xfc000001
#define | BL_INSTRUCTION 0x48000001
#define | BL_DISPLACEMENT_MASK 0x03fffffc
#define | PPC_FIELD(value, from, len) (((value) >> (32 - (from) - (len))) & ((1 << (len)) - 1))
#define | PPC_SEXT(v, bs)
#define | PPC_OP6(insn) PPC_FIELD (insn, 0, 6)
#define | PPC_EXTOP(insn) PPC_FIELD (insn, 21, 10)
#define | PPC_RT(insn) PPC_FIELD (insn, 6, 5)
#define | PPC_RS(insn) PPC_FIELD (insn, 6, 5)
#define | PPC_RA(insn) PPC_FIELD (insn, 11, 5)
#define | PPC_RB(insn) PPC_FIELD (insn, 16, 5)
#define | PPC_NB(insn) PPC_FIELD (insn, 16, 5)
#define | PPC_VRT(insn) PPC_FIELD (insn, 6, 5)
#define | PPC_FRT(insn) PPC_FIELD (insn, 6, 5)
#define | PPC_SPR(insn)
#define | PPC_BO(insn) PPC_FIELD (insn, 6, 5)
#define | PPC_T(insn) PPC_FIELD (insn, 6, 5)
#define | PPC_D(insn) PPC_SEXT (PPC_FIELD (insn, 16, 16), 16)
#define | PPC_DS(insn) PPC_SEXT (PPC_FIELD (insn, 16, 14), 14)
#define | PPC_DQ(insn) PPC_SEXT (PPC_FIELD (insn, 16, 12), 12)
#define | PPC_BIT(insn, n) ((insn & (1 << (31 - (n)))) ? 1 : 0)
#define | PPC_OE(insn) PPC_BIT (insn, 21)
#define | PPC_RC(insn) PPC_BIT (insn, 31)
#define | PPC_Rc(insn) PPC_BIT (insn, 21)
#define | PPC_LK(insn) PPC_BIT (insn, 31)
#define | PPC_TX(insn) PPC_BIT (insn, 31)
#define | PPC_LEV(insn) PPC_FIELD (insn, 20, 7)
#define | PPC_XT(insn) ((PPC_TX (insn) << 5) | PPC_T (insn))
#define | PPC_XER_NB(xer) (xer & 0x7f)

## Typedefs
typedef enum register_status(* | move_ev_register_func) (struct regcache *, int, void *)

## Functions
int | vsx_register_p (struct gdbarch *gdbarch, int regno)
int | altivec_register_p (struct gdbarch *gdbarch, int regno)
int | spe_register_p (struct gdbarch *gdbarch, int regno)
int | ppc_floating_point_unit_p (struct gdbarch *gdbarch)
static int | ppc_vsx_support_p (struct gdbarch *gdbarch)
int | ppc_altivec_support_p (struct gdbarch *gdbarch)
static void | set_sim_regno (int *table, int gdb_regno, int sim_regno)
static void | init_sim_regno_table (struct gdbarch *arch)
static int | rs6000_register_sim_regno (struct gdbarch *gdbarch, int reg)
void | ppc_supply_reg (struct regcache *regcache, int regnum, const gdb_byte *regs, size_t offset, int regsize)
void | ppc_collect_reg (const struct regcache *regcache, int regnum, gdb_byte *regs, size_t offset, int regsize)
static int | ppc_greg_offset (struct gdbarch *gdbarch, struct gdbarch_tdep *tdep, const struct ppc_reg_offsets *offsets, int regnum, int *regsize)
static int | ppc_fpreg_offset (struct gdbarch_tdep *tdep, const struct ppc_reg_offsets *offsets, int regnum)
static int | ppc_vrreg_offset (struct gdbarch_tdep *tdep, const struct ppc_reg_offsets *offsets, int regnum)
void | ppc_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
void | ppc_supply_fpregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len)
void | ppc_supply_vsxregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *vsxregs, size_t len)
void | ppc_supply_vrregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *vrregs, size_t len)
void | ppc_collect_gregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len)
void | ppc_collect_fpregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len)
void | ppc_collect_vsxregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *vsxregs, size_t len)
void | ppc_collect_vrregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *vrregs, size_t len)
static int | insn_changes_sp_or_jumps (unsigned long insn)
static int | rs6000_in_function_epilogue_frame_p (struct frame_info *curfrm, struct gdbarch *gdbarch, CORE_ADDR pc)
static int | rs6000_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
static CORE_ADDR | rs6000_fetch_pointer_argument (struct frame_info *frame, int argi, struct type *type)
typedef | BP_MANIPULATION_ENDIAN (little_breakpoint, big_breakpoint)
static void | ppc_displaced_step_fixup (struct gdbarch *gdbarch, struct displaced_step_closure *closure_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
static int | ppc_displaced_step_hw_singlestep (struct gdbarch *gdbarch, struct displaced_step_closure *closure)
std::vector< CORE_ADDR > | ppc_deal_with_atomic_sequence (struct regcache *regcache)
static int | store_param_on_stack_p (unsigned long op, int framep, int *r0_contains_arg)
static int | bl_to_blrl_insn_p (CORE_ADDR pc, int insn, enum bfd_endian byte_order)
static unsigned long | rs6000_fetch_instruction (struct gdbarch *gdbarch, const CORE_ADDR pc)
static CORE_ADDR | rs6000_skip_stack_check (struct gdbarch *gdbarch, const CORE_ADDR start_pc)
static CORE_ADDR | skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc, struct rs6000_framedata *fdata)
static CORE_ADDR | rs6000_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
static CORE_ADDR | rs6000_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
static CORE_ADDR | rs6000_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
static int | rs6000_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name)
static CORE_ADDR | rs6000_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
static struct type * | rs6000_builtin_type_vec64 (struct gdbarch *gdbarch)
static struct type * | rs6000_builtin_type_vec128 (struct gdbarch *gdbarch)
static const char * | rs6000_register_name (struct gdbarch *gdbarch, int regno)
static struct type * | rs6000_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
static int | rs6000_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *group)
static int | rs6000_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type)
static int | rs6000_register_to_value (struct frame_info *frame, int regnum, struct type *type, gdb_byte *to, int *optimizedp, int *unavailablep)
static void | rs6000_value_to_register (struct frame_info *frame, int regnum, struct type *type, const gdb_byte *from)
static enum register_status | e500_move_ev_register (move_ev_register_func move, struct regcache *regcache, int ev_reg, void *buffer)
static enum register_status | do_regcache_raw_read (struct regcache *regcache, int regnum, void *buffer)
static enum register_status | do_regcache_raw_write (struct regcache *regcache, int regnum, void *buffer)
static enum register_status | e500_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, gdb_byte *buffer)
static void | e500_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, const gdb_byte *buffer)
static enum register_status | dfp_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, gdb_byte *buffer)
static void | dfp_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, const gdb_byte *buffer)
static enum register_status | vsx_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, gdb_byte *buffer)
static void | vsx_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, const gdb_byte *buffer)
static enum register_status | efpr_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, gdb_byte *buffer)
static void | efpr_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, const gdb_byte *buffer)
static enum register_status | rs6000_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, gdb_byte *buffer)
static void | rs6000_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int reg_nr, const gdb_byte *buffer)
static int | rs6000_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg_nr)
static void | rs6000_gen_return_address (struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value, CORE_ADDR scope)
static int | rs6000_stab_reg_to_regnum (struct gdbarch *gdbarch, int num)
static int | rs6000_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int num)
static int | rs6000_adjust_frame_regnum (struct gdbarch *gdbarch, int num, int eh_frame_p)
static const struct variant * | find_variant_by_arch (enum bfd_architecture arch, unsigned long mach)
static CORE_ADDR | rs6000_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
static struct frame_id | rs6000_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
static struct rs6000_frame_cache * | rs6000_frame_cache (struct frame_info *this_frame, void **this_cache)
static void | rs6000_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct value * | rs6000_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static struct rs6000_frame_cache * | rs6000_epilogue_frame_cache (struct frame_info *this_frame, void **this_cache)
static void | rs6000_epilogue_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct value * | rs6000_epilogue_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static int | rs6000_epilogue_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static CORE_ADDR | rs6000_frame_base_address (struct frame_info *this_frame, void **this_cache)
static const struct frame_base * | rs6000_frame_base_sniffer (struct frame_info *this_frame)
static void | ppc_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, struct frame_info *this_frame)
static int | bfd_uses_spe_extensions (bfd *abfd)
static int | ppc_record_vsr (struct regcache *regcache, struct gdbarch_tdep *tdep, int vsr)
static int | ppc_process_record_op4 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
static int | ppc_process_record_op19 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
static int | ppc_process_record_op31 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
static int | ppc_process_record_op59 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
static int | ppc_process_record_op60 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
static int | ppc_process_record_op61 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
static int | ppc_process_record_op63 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
int | ppc_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
static struct gdbarch * | rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
static void | rs6000_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
static void | set_powerpc_command (const char *args, int from_tty)
static void | show_powerpc_command (const char *args, int from_tty)
static void | powerpc_set_soft_float (const char *args, int from_tty, struct cmd_list_element *c)
static void | powerpc_set_vector_abi (const char *args, int from_tty, struct cmd_list_element *c)
static void | show_powerpc_exact_watchpoints (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
static unsigned int | read_insn (struct frame_info *frame, CORE_ADDR pc)
int | ppc_insns_match_pattern (struct frame_info *frame, CORE_ADDR pc, struct ppc_insn_pattern *pattern, unsigned int *insns)
CORE_ADDR | ppc_insn_d_field (unsigned int insn)
CORE_ADDR | ppc_insn_ds_field (unsigned int insn)
void | _initialize_rs6000_tdep (void)

## Variables
static char * | powerpc_disassembler_options
static struct cmd_list_element * | setpowerpccmdlist = NULL
static struct cmd_list_element * | showpowerpccmdlist = NULL
static enum auto_boolean | powerpc_soft_float_global = AUTO_BOOLEAN_AUTO
static const char *const | powerpc_vector_strings []
static enum powerpc_vector_abi | powerpc_vector_abi_global = POWERPC_VEC_AUTO
static const char * | powerpc_vector_abi_string = "auto"
constexpr gdb_byte | big_breakpoint [] = { 0x7d, 0x82, 0x10, 0x08 }
constexpr gdb_byte | little_breakpoint [] = { 0x08, 0x10, 0x82, 0x7d }
static int | max_skip_non_prologue_insns = 10
static struct variant | variants []
static const struct frame_unwind | rs6000_frame_unwind
static const struct frame_unwind | rs6000_epilogue_frame_unwind
static const struct frame_base | rs6000_frame_base

## Macro Definition Documentation

## ◆ B_INSN

#define B_INSN 0x48000000

Referenced by ppc_displaced_step_fixup().

## ◆ BC_INSN

#define BC_INSN 0x40000000

Referenced by ppc_deal_with_atomic_sequence(), and ppc_displaced_step_fixup().

## ◆ BL_DISPLACEMENT_MASK

#define BL_DISPLACEMENT_MASK 0x03fffffc

Definition at line 1372 of file rs6000-tdep.c.

Referenced by rs6000_skip_main_prologue().

## ◆ BL_INSTRUCTION

#define BL_INSTRUCTION 0x48000001

Definition at line 1371 of file rs6000-tdep.c.

Referenced by rs6000_skip_main_prologue().

## ◆ BL_MASK

#define BL_MASK 0xfc000001

Definition at line 1370 of file rs6000-tdep.c.

Referenced by rs6000_skip_main_prologue().

## ◆ BP_INSN

#define BP_INSN 0x7C000008

Referenced by ppc_displaced_step_fixup().

## ◆ BP_MASK

#define BP_MASK 0xFC0007FE

Referenced by ppc_displaced_step_fixup().

## ◆ BRANCH_MASK

#define BRANCH_MASK 0xfc000000

Referenced by ppc_deal_with_atomic_sequence(), and ppc_displaced_step_fixup().

## ◆ BXL_INSN

#define BXL_INSN 0x4c000000

Referenced by ppc_displaced_step_fixup().

## ◆ GET_SRC_REG

#define GET_SRC_REG | ( |  | x | ) | (((x) >> 21) & 0x1f)

Definition at line 1254 of file rs6000-tdep.c.

Referenced by skip_prologue(), and store_param_on_stack_p().

## ◆ IS_DFP_PSEUDOREG

#define IS_DFP_PSEUDOREG | ( |  | tdep,
|  |  | regnum
| ) |  |

Value:
((tdep)->ppc_dl0_regnum >= 0 \
&& (regnum) >= (tdep)->ppc_dl0_regnum \
&& (regnum) < (tdep)->ppc_dl0_regnum + 16)
regnum
int regnum
Definition: aarch64-tdep.c:77

Definition at line 95 of file rs6000-tdep.c.

Referenced by rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_reggroup_p(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), and rs6000_register_name().

## ◆ IS_EFP_PSEUDOREG

#define IS_EFP_PSEUDOREG | ( |  | tdep,
|  |  | regnum
| ) |  |

Value:
((tdep)->ppc_efpr0_regnum >= 0 \
&& (regnum) >= (tdep)->ppc_efpr0_regnum \
&& (regnum) < (tdep)->ppc_efpr0_regnum + ppc_num_efprs)
regnum
int regnum
Definition: aarch64-tdep.c:77
ppc_num_efprs
Definition: ppc-tdep.h:289

Definition at line 105 of file rs6000-tdep.c.

Referenced by rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_reggroup_p(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), and rs6000_register_name().

## ◆ IS_LOAD_AND_RESERVE_INSN

#define IS_LOAD_AND_RESERVE_INSN | ( |  | insn | ) |

Value:
((insn & LOAD_AND_RESERVE_MASK) == LWARX_INSTRUCTION \
|| (insn & LOAD_AND_RESERVE_MASK) == LDARX_INSTRUCTION \
|| (insn & LOAD_AND_RESERVE_MASK) == LBARX_INSTRUCTION \
|| (insn & LOAD_AND_RESERVE_MASK) == LHARX_INSTRUCTION \
|| (insn & LOAD_AND_RESERVE_MASK) == LQARX_INSTRUCTION)
LQARX_INSTRUCTION
#define LQARX_INSTRUCTION
LHARX_INSTRUCTION
#define LHARX_INSTRUCTION
LDARX_INSTRUCTION
#define LDARX_INSTRUCTION
LOAD_AND_RESERVE_MASK
#define LOAD_AND_RESERVE_MASK
LWARX_INSTRUCTION
#define LWARX_INSTRUCTION
LBARX_INSTRUCTION
#define LBARX_INSTRUCTION

Referenced by BP_MANIPULATION_ENDIAN(), and ppc_deal_with_atomic_sequence().

## ◆ IS_SPE_PSEUDOREG

#define IS_SPE_PSEUDOREG | ( |  | tdep,
|  |  | regnum
| ) |  |

Value:
((tdep)->ppc_ev0_regnum >= 0 \
&& (regnum) >= (tdep)->ppc_ev0_regnum \
&& (regnum) < (tdep)->ppc_ev0_regnum + 32)
regnum
int regnum
Definition: aarch64-tdep.c:77

Definition at line 90 of file rs6000-tdep.c.

Referenced by e500_move_ev_register(), rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_reggroup_p(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), rs6000_register_name(), and spe_register_p().

## ◆ IS_STORE_CONDITIONAL_INSN

#define IS_STORE_CONDITIONAL_INSN | ( |  | insn | ) |

Value:
((insn & STORE_CONDITIONAL_MASK) == STWCX_INSTRUCTION \
|| (insn & STORE_CONDITIONAL_MASK) == STDCX_INSTRUCTION \
|| (insn & STORE_CONDITIONAL_MASK) == STBCX_INSTRUCTION \
|| (insn & STORE_CONDITIONAL_MASK) == STHCX_INSTRUCTION \
|| (insn & STORE_CONDITIONAL_MASK) == STQCX_INSTRUCTION)
STQCX_INSTRUCTION
#define STQCX_INSTRUCTION
STDCX_INSTRUCTION
#define STDCX_INSTRUCTION
STHCX_INSTRUCTION
#define STHCX_INSTRUCTION
STORE_CONDITIONAL_MASK
#define STORE_CONDITIONAL_MASK
STBCX_INSTRUCTION
#define STBCX_INSTRUCTION
STWCX_INSTRUCTION
#define STWCX_INSTRUCTION

Referenced by ppc_deal_with_atomic_sequence().

## ◆ IS_VSX_PSEUDOREG

#define IS_VSX_PSEUDOREG | ( |  | tdep,
|  |  | regnum
| ) |  |

Value:
((tdep)->ppc_vsr0_regnum >= 0 \
&& (regnum) >= (tdep)->ppc_vsr0_regnum \
&& (regnum) < (tdep)->ppc_vsr0_regnum + ppc_num_vsrs)
ppc_num_vsrs
Definition: ppc-tdep.h:288
regnum
int regnum
Definition: aarch64-tdep.c:77

Definition at line 100 of file rs6000-tdep.c.

Referenced by rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_reggroup_p(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), and rs6000_register_name().

## ◆ LBARX_INSTRUCTION

#define LBARX_INSTRUCTION 0x7c000068

## ◆ LDARX_INSTRUCTION

#define LDARX_INSTRUCTION 0x7c0000A8

## ◆ LHARX_INSTRUCTION

#define LHARX_INSTRUCTION 0x7c0000e8

## ◆ LOAD_AND_RESERVE_MASK

#define LOAD_AND_RESERVE_MASK 0xfc0007fe

## ◆ LQARX_INSTRUCTION

#define LQARX_INSTRUCTION 0x7c000228

## ◆ LWARX_INSTRUCTION

#define LWARX_INSTRUCTION 0x7c000028

## ◆ PPC_BIT

#define PPC_BIT | ( |  | insn,
|  |  | n
| ) |  | ((insn & (1 << (31 - (n)))) ? 1 : 0)

Definition at line 3827 of file rs6000-tdep.c.

Referenced by ppc_process_record(), and ppc_process_record_op4().

## ◆ PPC_BO

#define PPC_BO | ( |  | insn | ) | PPC_FIELD (insn, 6, 5)

Definition at line 3822 of file rs6000-tdep.c.

Referenced by ppc_process_record(), and ppc_process_record_op19().

## ◆ PPC_D

#define PPC_D | ( |  | insn | ) | PPC_SEXT (PPC_FIELD (insn, 16, 16), 16)

Definition at line 3824 of file rs6000-tdep.c.

Referenced by ppc_process_record().

## ◆ PPC_DQ

#define PPC_DQ | ( |  | insn | ) | PPC_SEXT (PPC_FIELD (insn, 16, 12), 12)

Definition at line 3826 of file rs6000-tdep.c.

Referenced by ppc_process_record_op61().

## ◆ PPC_DS

#define PPC_DS | ( |  | insn | ) | PPC_SEXT (PPC_FIELD (insn, 16, 14), 14)

Definition at line 3825 of file rs6000-tdep.c.

Referenced by ppc_process_record(), and ppc_process_record_op61().

## ◆ PPC_EXTOP

#define PPC_EXTOP | ( |  | insn | ) | PPC_FIELD (insn, 21, 10)

Definition at line 3812 of file rs6000-tdep.c.

Referenced by ppc_process_record_op19(), ppc_process_record_op31(), ppc_process_record_op59(), ppc_process_record_op60(), and ppc_process_record_op63().

## ◆ PPC_FIELD

#define PPC_FIELD | ( |  | value,
|  |  | from,
|  |  | len
| ) |  | (((value) >> (32 - (from) - (len))) & ((1 << (len)) - 1))

Definition at line 3805 of file rs6000-tdep.c.

Referenced by ppc_process_record(), ppc_process_record_op4(), ppc_process_record_op60(), and ppc_process_record_op63().

## ◆ PPC_FRT

#define PPC_FRT | ( |  | insn | ) | PPC_FIELD (insn, 6, 5)

Definition at line 3819 of file rs6000-tdep.c.

Referenced by ppc_process_record(), ppc_process_record_op31(), ppc_process_record_op59(), and ppc_process_record_op63().

## ◆ PPC_LEV

#define PPC_LEV | ( |  | insn | ) | PPC_FIELD (insn, 20, 7)

Definition at line 3833 of file rs6000-tdep.c.

Referenced by ppc_process_record().

## ◆ PPC_LK

#define PPC_LK | ( |  | insn | ) | PPC_BIT (insn, 31)

Definition at line 3831 of file rs6000-tdep.c.

Referenced by ppc_process_record(), and ppc_process_record_op19().

## ◆ PPC_NB

#define PPC_NB | ( |  | insn | ) | PPC_FIELD (insn, 16, 5)

Definition at line 3817 of file rs6000-tdep.c.

Referenced by ppc_process_record_op31().

## ◆ PPC_OE

#define PPC_OE | ( |  | insn | ) | PPC_BIT (insn, 21)

Definition at line 3828 of file rs6000-tdep.c.

Referenced by ppc_process_record_op31().

## ◆ PPC_OP6

#define PPC_OP6 | ( |  | insn | ) | PPC_FIELD (insn, 0, 6)

Definition at line 3811 of file rs6000-tdep.c.

Referenced by ppc_process_record().

## ◆ PPC_RA

#define PPC_RA | ( |  | insn | ) | PPC_FIELD (insn, 11, 5)

Definition at line 3815 of file rs6000-tdep.c.

Referenced by ppc_process_record(), ppc_process_record_op31(), and ppc_process_record_op61().

## ◆ PPC_RB

#define PPC_RB | ( |  | insn | ) | PPC_FIELD (insn, 16, 5)

Definition at line 3816 of file rs6000-tdep.c.

Referenced by ppc_process_record_op31().

## ◆ PPC_RC

#define PPC_RC | ( |  | insn | ) | PPC_BIT (insn, 31)

Definition at line 3829 of file rs6000-tdep.c.

Referenced by ppc_process_record(), ppc_process_record_op31(), ppc_process_record_op59(), and ppc_process_record_op63().

## ◆ PPC_Rc

#define PPC_Rc | ( |  | insn | ) | PPC_BIT (insn, 21)

Definition at line 3830 of file rs6000-tdep.c.

Referenced by ppc_process_record_op4(), and ppc_process_record_op60().

## ◆ PPC_RS

#define PPC_RS | ( |  | insn | ) | PPC_FIELD (insn, 6, 5)

Definition at line 3814 of file rs6000-tdep.c.

Referenced by ppc_process_record().

## ◆ PPC_RT

#define PPC_RT | ( |  | insn | ) | PPC_FIELD (insn, 6, 5)

Definition at line 3813 of file rs6000-tdep.c.

Referenced by ppc_process_record(), ppc_process_record_op19(), ppc_process_record_op31(), ppc_process_record_op4(), and ppc_process_record_op60().

## ◆ PPC_SEXT

#define PPC_SEXT | ( |  | v,
|  |  | bs
| ) |  |

Value:
((((CORE_ADDR) (v) & (((CORE_ADDR) 1 << (bs)) - 1)) \
^ ((CORE_ADDR) 1 << ((bs) - 1))) \
- ((CORE_ADDR) 1 << ((bs) - 1)))
CORE_ADDR
bfd_vma CORE_ADDR
Definition: common-types.h:41

Definition at line 3807 of file rs6000-tdep.c.

## ◆ PPC_SPR

#define PPC_SPR | ( |  | insn | ) |

Value:
(PPC_FIELD (insn, 11, 5) \
| (PPC_FIELD (insn, 16, 5) << 5))
PPC_FIELD
#define PPC_FIELD(value, from, len)
Definition: rs6000-tdep.c:3805

Definition at line 3820 of file rs6000-tdep.c.

Referenced by ppc_process_record_op31().

## ◆ PPC_T

#define PPC_T | ( |  | insn | ) | PPC_FIELD (insn, 6, 5)

Definition at line 3823 of file rs6000-tdep.c.

## ◆ PPC_TX

#define PPC_TX | ( |  | insn | ) | PPC_BIT (insn, 31)

Definition at line 3832 of file rs6000-tdep.c.

## ◆ PPC_VRT

#define PPC_VRT | ( |  | insn | ) | PPC_FIELD (insn, 6, 5)

Definition at line 3818 of file rs6000-tdep.c.

Referenced by ppc_process_record(), ppc_process_record_op31(), ppc_process_record_op4(), and ppc_process_record_op63().

## ◆ PPC_XER_NB

#define PPC_XER_NB | ( |  | xer | ) | (xer & 0x7f)

Definition at line 3836 of file rs6000-tdep.c.

Referenced by ppc_process_record_op31().

## ◆ PPC_XT

#define PPC_XT | ( |  | insn | ) | ((PPC_TX (insn) << 5) | PPC_T (insn))

Definition at line 3835 of file rs6000-tdep.c.

Referenced by ppc_process_record_op31(), ppc_process_record_op60(), and ppc_process_record_op61().

## ◆ SIGNED_SHORT

#define SIGNED_SHORT | ( |  | x | ) |

Value:
((sizeof (short) == 2) \
? ((int)(short)(x)) \
: ((int)((((x) & 0xffff) ^ 0x8000) - 0x8000)))

Definition at line 1249 of file rs6000-tdep.c.

Referenced by skip_prologue().

## ◆ STBCX_INSTRUCTION

#define STBCX_INSTRUCTION 0x7c00056d

## ◆ STDCX_INSTRUCTION

#define STDCX_INSTRUCTION 0x7c0001ad

## ◆ STHCX_INSTRUCTION

#define STHCX_INSTRUCTION 0x7c0005ad

## ◆ STORE_CONDITIONAL_MASK

#define STORE_CONDITIONAL_MASK 0xfc0007ff

## ◆ STQCX_INSTRUCTION

#define STQCX_INSTRUCTION 0x7c00016d

## ◆ STWCX_INSTRUCTION

#define STWCX_INSTRUCTION 0x7c00012d

## Typedef Documentation

## ◆ move_ev_register_func

typedef enum register_status(* move_ev_register_func) (struct regcache *, int, void *)

Definition at line 2648 of file rs6000-tdep.c.

## Function Documentation

## ◆ _initialize_rs6000_tdep()

void _initialize_rs6000_tdep | ( | void |  | ) |

Definition at line 6776 of file rs6000-tdep.c.

References _, add_prefix_cmd(), add_setshow_auto_boolean_cmd(), add_setshow_boolean_cmd(), add_setshow_enum_cmd(), class_support, gdbarch_register(), initialize_tdesc_powerpc_32(), initialize_tdesc_powerpc_403(), initialize_tdesc_powerpc_403gc(), initialize_tdesc_powerpc_405(), initialize_tdesc_powerpc_505(), initialize_tdesc_powerpc_601(), initialize_tdesc_powerpc_602(), initialize_tdesc_powerpc_603(), initialize_tdesc_powerpc_604(), initialize_tdesc_powerpc_64(), initialize_tdesc_powerpc_7400(), initialize_tdesc_powerpc_750(), initialize_tdesc_powerpc_860(), initialize_tdesc_powerpc_altivec32(), initialize_tdesc_powerpc_altivec64(), initialize_tdesc_powerpc_e500(), initialize_tdesc_powerpc_vsx32(), initialize_tdesc_powerpc_vsx64(), initialize_tdesc_rs6000(), no_class, powerpc_set_soft_float(), powerpc_set_vector_abi(), powerpc_soft_float_global, powerpc_vector_abi_string, powerpc_vector_strings, rs6000_dump_tdep(), rs6000_gdbarch_init(), set_powerpc_command(), setlist, setpowerpccmdlist, show_powerpc_command(), show_powerpc_exact_watchpoints(), showlist, showpowerpccmdlist, and target_exact_watchpoints.

## ◆ altivec_register_p()

int altivec_register_p | ( | struct gdbarch * | gdbarch,
|  | int | regno
| ) |  |

Definition at line 174 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().

## ◆ bfd_uses_spe_extensions()

static int bfd_uses_spe_extensions | ( | bfd * | abfd | ) |
| static

Definition at line 3691 of file rs6000-tdep.c.

References size, type, gdbarch_tdep::vector_abi, xfree(), and xmalloc().

Referenced by rs6000_gdbarch_init().

## ◆ bl_to_blrl_insn_p()

static int bl_to_blrl_insn_p | ( | CORE_ADDR | pc,
|  | int | insn,
|  | enum bfd_endian | byte_order
| ) |  |
| static

Definition at line 1339 of file rs6000-tdep.c.

References gdbarch::byte_order, and read_memory_integer().

Referenced by skip_prologue().

## ◆ BP_MANIPULATION_ENDIAN()

typedef BP_MANIPULATION_ENDIAN | ( | little_breakpoint | ,
|  | big_breakpoint |
| ) |  |

Definition at line 976 of file rs6000-tdep.c.

References debug_displaced, displaced_step_dump_bytes(), extract_signed_integer(), fprintf_unfiltered(), gdb_stdlog, gdbarch_byte_order(), gdbarch_max_insn_length(), IS_LOAD_AND_RESERVE_INSN, paddress(), PPC_INSN_SIZE, read_memory(), and write_memory().

## ◆ dfp_pseudo_register_read()

static enum register_status dfp_pseudo_register_read | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | gdb_byte * | buffer
| ) |  |
| static

Definition at line 2739 of file rs6000-tdep.c.

References gdbarch_byte_order(), gdbarch_tdep(), gdbarch_tdep::ppc_dl0_regnum, gdbarch_tdep::ppc_fp0_regnum, REG_VALID, regcache_raw_read(), and status.

Referenced by rs6000_pseudo_register_read().

## ◆ dfp_pseudo_register_write()

static void dfp_pseudo_register_write | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | const gdb_byte * | buffer
| ) |  |
| static

Definition at line 2769 of file rs6000-tdep.c.

References gdbarch_byte_order(), gdbarch_tdep(), gdbarch_tdep::ppc_dl0_regnum, gdbarch_tdep::ppc_fp0_regnum, and regcache_raw_write().

Referenced by rs6000_pseudo_register_write().

## ◆ do_regcache_raw_read()

static enum register_status do_regcache_raw_read | ( | struct regcache * | regcache,
|  | int | regnum,
|  | void * | buffer
| ) |  |
| static

Definition at line 2709 of file rs6000-tdep.c.

References regcache_raw_read(), and regnum.

Referenced by e500_pseudo_register_read().

## ◆ do_regcache_raw_write()

static enum register_status do_regcache_raw_write | ( | struct regcache * | regcache,
|  | int | regnum,
|  | void * | buffer
| ) |  |
| static

Definition at line 2715 of file rs6000-tdep.c.

References REG_VALID, regcache_raw_write(), and regnum.

Referenced by e500_pseudo_register_write().

## ◆ e500_move_ev_register()

static enum register_status e500_move_ev_register | ( | move_ev_register_func | move,
|  | struct regcache * | regcache,
|  | int | ev_reg,
|  | void * | buffer
| ) |  |
| static

Definition at line 2676 of file rs6000-tdep.c.

References regcache::arch(), gdb_assert, gdbarch_byte_order(), gdbarch_tdep(), IS_SPE_PSEUDOREG, gdbarch_tdep::ppc_ev0_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, gdbarch_tdep::ppc_gp0_regnum, REG_VALID, and status.

Referenced by e500_pseudo_register_read(), and e500_pseudo_register_write().

## ◆ e500_pseudo_register_read()

static enum register_status e500_pseudo_register_read | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | gdb_byte * | buffer
| ) |  |
| static

Definition at line 2723 of file rs6000-tdep.c.

References do_regcache_raw_read(), and e500_move_ev_register().

Referenced by rs6000_pseudo_register_read().

## ◆ e500_pseudo_register_write()

static void e500_pseudo_register_write | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | const gdb_byte * | buffer
| ) |  |
| static

Definition at line 2730 of file rs6000-tdep.c.

References do_regcache_raw_write(), and e500_move_ev_register().

Referenced by rs6000_pseudo_register_write().

## ◆ efpr_pseudo_register_read()

static enum register_status efpr_pseudo_register_read | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | gdb_byte * | buffer
| ) |  |
| static

Definition at line 2860 of file rs6000-tdep.c.

References gdbarch_byte_order(), gdbarch_tdep(), offset, gdbarch_tdep::ppc_efpr0_regnum, gdbarch_tdep::ppc_vr0_regnum, regcache_raw_read_part(), and register_size().

Referenced by rs6000_pseudo_register_read().

## ◆ efpr_pseudo_register_write()

static void efpr_pseudo_register_write | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | const gdb_byte * | buffer
| ) |  |
| static

Definition at line 2875 of file rs6000-tdep.c.

References gdbarch_byte_order(), gdbarch_tdep(), offset, gdbarch_tdep::ppc_efpr0_regnum, gdbarch_tdep::ppc_vr0_regnum, regcache_raw_write_part(), and register_size().

Referenced by rs6000_pseudo_register_write().

## ◆ find_variant_by_arch()

static const struct variant* find_variant_by_arch | ( | enum bfd_architecture | arch,
|  | unsigned long | mach
| ) |  |
| static

Definition at line 3226 of file rs6000-tdep.c.

References variant::arch, variant::mach, variant::name, and variants.

Referenced by rs6000_gdbarch_init().

## ◆ init_sim_regno_table()

static void init_sim_regno_table | ( | struct gdbarch * | arch | ) |
| static

Definition at line 268 of file rs6000-tdep.c.

References gdbarch_num_regs(), GDBARCH_OBSTACK_CALLOC, gdbarch_pc_regnum(), gdbarch_tdep(), gdbarch_tdep::ppc_acc_regnum, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_fpscr_regnum, gdbarch_tdep::ppc_gp0_regnum, ppc_num_fprs, ppc_num_gprs, ppc_num_srs, ppc_num_vrs, gdbarch_tdep::ppc_ps_regnum, gdbarch_tdep::ppc_vr0_regnum, set_sim_regno(), gdbarch_tdep::sim_regno, and user_reg_map_name_to_regnum().

Referenced by rs6000_register_sim_regno().

## ◆ insn_changes_sp_or_jumps()

static int insn_changes_sp_or_jumps | ( | unsigned long | insn | ) |
| static

Definition at line 842 of file rs6000-tdep.c.

Referenced by rs6000_in_function_epilogue_frame_p().

## ◆ powerpc_set_soft_float()

static void powerpc_set_soft_float | ( | const char * | args,
|  | int | from_tty,
|  | struct cmd_list_element * | c
| ) |  |
| static

Definition at line 6656 of file rs6000-tdep.c.

References _, gdbarch_info_init(), gdbarch_update_p(), and internal_error().

Referenced by _initialize_rs6000_tdep().

## ◆ powerpc_set_vector_abi()

static void powerpc_set_vector_abi | ( | const char * | args,
|  | int | from_tty,
|  | struct cmd_list_element * | c
| ) |  |
| static

Definition at line 6668 of file rs6000-tdep.c.

References _, gdbarch_info_init(), gdbarch_update_p(), internal_error(), POWERPC_VEC_AUTO, POWERPC_VEC_LAST, powerpc_vector_abi_global, powerpc_vector_abi_string, and powerpc_vector_strings.

Referenced by _initialize_rs6000_tdep().

## ◆ ppc_altivec_support_p()

int ppc_altivec_support_p | ( | struct gdbarch * | gdbarch | ) |

Definition at line 239 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().

## ◆ ppc_collect_fpregset()

void ppc_collect_fpregset | ( | const struct regset * | regset,
|  | const struct regcache * | regcache,
|  | int | regnum,
|  | void * | fpregs,
|  | size_t | len
| ) |  |

Definition at line 726 of file rs6000-tdep.c.

References regcache::arch(), ppc_reg_offsets::f0_offset, ppc_reg_offsets::fpscr_offset, ppc_reg_offsets::fpscr_size, gdbarch_tdep(), if(), 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, regset::regmap, and regnum.

Referenced by fill_fpregset(), ppcnbsd_store_inferior_registers(), ppcobsd_collect_gregset(), ppcobsd_store_registers(), and rs6000_aix_collect_regset().

## ◆ ppc_collect_gregset()

void ppc_collect_gregset | ( | const struct regset * | regset,
|  | const struct regcache * | regcache,
|  | int | regnum,
|  | void * | gregs,
|  | size_t | len
| ) |  |

Definition at line 675 of file rs6000-tdep.c.

References regcache::arch(), ppc_reg_offsets::cr_offset, ppc_reg_offsets::ctr_offset, gdbarch_pc_regnum(), gdbarch_tdep(), ppc_reg_offsets::gpr_size, if(), 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, regnum, 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().

## ◆ ppc_collect_reg()

void ppc_collect_reg | ( | const struct regcache * | regcache,
|  | int | regnum,
|  | gdb_byte * | regs,
|  | size_t | offset,
|  | int | regsize
| ) |  |

Definition at line 410 of file rs6000-tdep.c.

References regcache::arch(), gdbarch_byte_order(), memset(), offset, regcache_raw_collect(), register_size(), and regnum.

Referenced by ppc_collect_fpregset(), ppc_collect_gregset(), ppc_collect_vrregset(), ppc_collect_vsxregset(), and ppc_linux_collect_gregset().

## ◆ ppc_collect_vrregset()

void ppc_collect_vrregset | ( | const struct regset * | regset,
|  | const struct regcache * | regcache,
|  | int | regnum,
|  | void * | vrregs,
|  | size_t | len
| ) |  |

Definition at line 800 of file rs6000-tdep.c.

References regcache::arch(), gdbarch_tdep(), if(), 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, regnum, ppc_reg_offsets::vr0_offset, ppc_reg_offsets::vrsave_offset, and ppc_reg_offsets::vscr_offset.

## ◆ ppc_collect_vsxregset()

void ppc_collect_vsxregset | ( | const struct regset * | regset,
|  | const struct regcache * | regcache,
|  | int | regnum,
|  | void * | vsxregs,
|  | size_t | len
| ) |  |

Definition at line 766 of file rs6000-tdep.c.

References regcache::arch(), gdbarch_tdep(), ppc_collect_reg(), gdbarch_tdep::ppc_vsr0_upper_regnum, ppc_vsx_support_p(), and regnum.

## ◆ ppc_deal_with_atomic_sequence()

std::vector<CORE_ADDR> ppc_deal_with_atomic_sequence | ( | struct regcache * | regcache | ) |

Definition at line 1171 of file rs6000-tdep.c.

References regcache::arch(), BC_INSN, BRANCH_MASK, gdbarch::byte_order, gdbarch_byte_order(), IS_LOAD_AND_RESERVE_INSN, IS_STORE_CONDITIONAL_INSN, loc, PPC_INSN_SIZE, read_memory_integer(), and regcache_read_pc().

Referenced by rs6000_gdbarch_init(), and rs6000_software_single_step().

## ◆ ppc_displaced_step_fixup()

static void ppc_displaced_step_fixup | ( | struct gdbarch * | gdbarch,
|  | struct displaced_step_closure * | closure_,
|  | CORE_ADDR | from,
|  | CORE_ADDR | to,
|  | struct regcache * | regs
| ) |  |
| static

Definition at line 1066 of file rs6000-tdep.c.

References B_INSN, BC_INSN, BP_INSN, BP_MASK, BRANCH_MASK, BXL_INSN, debug_displaced, extract_unsigned_integer(), fprintf_unfiltered(), gdb_stdlog, gdbarch_byte_order(), gdbarch_pc_regnum(), offset, paddress(), PPC_INSN_SIZE, regcache_cooked_read_unsigned(), and regcache_cooked_write_unsigned().

Referenced by rs6000_gdbarch_init().

## ◆ ppc_displaced_step_hw_singlestep()

static int ppc_displaced_step_hw_singlestep | ( | struct gdbarch * | gdbarch,
|  | struct displaced_step_closure * | closure
| ) |  |
| static

Definition at line 1160 of file rs6000-tdep.c.

Referenced by rs6000_gdbarch_init().

## ◆ ppc_dwarf2_frame_init_reg()

static void ppc_dwarf2_frame_init_reg | ( | struct gdbarch * | gdbarch,
|  | int | regnum,
|  | struct dwarf2_frame_state_reg * | reg,
|  | struct frame_info * | this_frame
| ) |  |
| static

Definition at line 3626 of file rs6000-tdep.c.

References DWARF2_FRAME_REG_CFA, DWARF2_FRAME_REG_RA, DWARF2_FRAME_REG_SAME_VALUE, DWARF2_FRAME_REG_UNDEFINED, gdbarch_pc_regnum(), gdbarch_sp_regnum(), gdbarch_tdep(), gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vrsave_regnum, and regnum.

Referenced by rs6000_gdbarch_init().

## ◆ ppc_floating_point_unit_p()

int ppc_floating_point_unit_p | ( | struct gdbarch * | gdbarch | ) |

Definition at line 218 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().

## ◆ ppc_fpreg_offset()

static int ppc_fpreg_offset | ( | struct gdbarch_tdep * | tdep,
|  | const struct ppc_reg_offsets * | offsets,
|  | int | regnum
| ) |  |
| static

Definition at line 474 of file rs6000-tdep.c.

References ppc_reg_offsets::f0_offset, ppc_reg_offsets::fpscr_offset, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_fpscr_regnum, ppc_num_fprs, regnum, and gdbarch::tdep.

Referenced by ppc_collect_fpregset(), and ppc_supply_fpregset().

## ◆ ppc_greg_offset()

static int ppc_greg_offset | ( | struct gdbarch * | gdbarch,
|  | struct gdbarch_tdep * | tdep,
|  | const struct ppc_reg_offsets * | offsets,
|  | int | regnum,
|  | int * | regsize
| ) |  |
| static

Definition at line 436 of file rs6000-tdep.c.

References ppc_reg_offsets::cr_offset, ppc_reg_offsets::ctr_offset, gdbarch_pc_regnum(), ppc_reg_offsets::gpr_size, ppc_reg_offsets::lr_offset, ppc_reg_offsets::mq_offset, ppc_reg_offsets::pc_offset, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ctr_regnum, gdbarch_tdep::ppc_gp0_regnum, 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, regnum, gdbarch::tdep, ppc_reg_offsets::xer_offset, and ppc_reg_offsets::xr_size.

Referenced by ppc_collect_gregset(), and ppc_supply_gregset().

## ◆ ppc_insn_d_field()

CORE_ADDR ppc_insn_d_field | ( | unsigned int | insn | ) |

Definition at line 6758 of file rs6000-tdep.c.

Referenced by ppc64_standard_linkage1_target(), ppc64_standard_linkage2_target(), ppc64_standard_linkage4_target(), and ppc_skip_trampoline_code().

## ◆ ppc_insn_ds_field()

CORE_ADDR ppc_insn_ds_field | ( | unsigned int | insn | ) |

Definition at line 6768 of file rs6000-tdep.c.

Referenced by ppc64_standard_linkage1_target(), ppc64_standard_linkage2_target(), ppc64_standard_linkage3_target(), and ppc64_standard_linkage4_target().

## ◆ ppc_insns_match_pattern()

int ppc_insns_match_pattern | ( | struct frame_info * | frame,
|  | CORE_ADDR | pc,
|  | struct ppc_insn_pattern * | pattern,
|  | unsigned int * | insns
| ) |  |

Definition at line 6729 of file rs6000-tdep.c.

References gdbarch::data, ppc_insn_pattern::mask, and read_insn().

Referenced by ppc64_skip_trampoline_code_1(), and ppc_skip_trampoline_code().

## ◆ ppc_process_record()

int ppc_process_record | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr
| ) |  |

Definition at line 5638 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_op61(), ppc_process_record_op63(), PPC_RA, PPC_RC, ppc_record_vsr(), PPC_RS, PPC_RT, gdbarch_tdep::ppc_syscall_record, PPC_VRT, 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.

Referenced by ppc_linux_init_abi().

## ◆ ppc_process_record_op19()

static int ppc_process_record_op19 | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr,
|  | uint32_t | insn
| ) |  |
| static

Definition at line 4241 of file rs6000-tdep.c.

References fprintf_unfiltered(), gdb_stdlog, gdbarch_tdep(), paddress(), PPC_BO, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ctr_regnum, PPC_EXTOP, gdbarch_tdep::ppc_gp0_regnum, PPC_LK, gdbarch_tdep::ppc_lr_regnum, PPC_RT, and record_full_arch_list_add_reg().

Referenced by ppc_process_record().

## ◆ ppc_process_record_op31()

static int ppc_process_record_op31 | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr,
|  | uint32_t | insn
| ) |  |
| static

Definition at line 4293 of file rs6000-tdep.c.

References current_target, fprintf_unfiltered(), gdb_assert, gdb_stdlog, gdbarch_tdep(), paddress(), gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ctr_regnum, PPC_EXTOP, gdbarch_tdep::ppc_fp0_regnum, PPC_FRT, gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_lr_regnum, PPC_NB, PPC_OE, gdbarch_tdep::ppc_ps_regnum, PPC_RA, PPC_RB, PPC_RC, ppc_record_vsr(), PPC_RT, PPC_SPR, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vrsave_regnum, PPC_VRT, PPC_XER_NB, gdbarch_tdep::ppc_xer_regnum, PPC_XT, record_full_arch_list_add_mem(), record_full_arch_list_add_reg(), regcache_raw_read_unsigned(), size, and target_auxv_search().

Referenced by ppc_process_record().

## ◆ ppc_process_record_op4()

static int ppc_process_record_op4 | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr,
|  | uint32_t | insn
| ) |  |
| static

Definition at line 3869 of file rs6000-tdep.c.

References fprintf_unfiltered(), gdb_stdlog, gdbarch_tdep(), paddress(), PPC_BIT, gdbarch_tdep::ppc_cr_regnum, PPC_FIELD, gdbarch_tdep::ppc_gp0_regnum, PPC_Rc, PPC_RT, gdbarch_tdep::ppc_vr0_regnum, PPC_VRT, PPC_VSCR_REGNUM, and record_full_arch_list_add_reg().

Referenced by ppc_process_record().

## ◆ ppc_process_record_op59()

static int ppc_process_record_op59 | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr,
|  | uint32_t | insn
| ) |  |
| static

Definition at line 4865 of file rs6000-tdep.c.

References fprintf_unfiltered(), gdb_stdlog, gdbarch_tdep(), paddress(), gdbarch_tdep::ppc_cr_regnum, PPC_EXTOP, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_fpscr_regnum, PPC_FRT, PPC_RC, and record_full_arch_list_add_reg().

Referenced by ppc_process_record().

## ◆ ppc_process_record_op60()

static int ppc_process_record_op60 | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr,
|  | uint32_t | insn
| ) |  |
| static

Definition at line 4959 of file rs6000-tdep.c.

References fprintf_unfiltered(), gdb_stdlog, gdbarch_tdep(), paddress(), gdbarch_tdep::ppc_cr_regnum, PPC_EXTOP, PPC_FIELD, gdbarch_tdep::ppc_fpscr_regnum, gdbarch_tdep::ppc_gp0_regnum, PPC_Rc, ppc_record_vsr(), PPC_RT, PPC_XT, and record_full_arch_list_add_reg().

Referenced by ppc_process_record().

## ◆ ppc_process_record_op61()

static int ppc_process_record_op61 | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr,
|  | uint32_t | insn
| ) |  |
| static

Definition at line 5321 of file rs6000-tdep.c.

References fprintf_unfiltered(), gdb_assert, gdb_stdlog, gdbarch_tdep(), paddress(), PPC_DQ, PPC_DS, gdbarch_tdep::ppc_gp0_regnum, PPC_RA, ppc_record_vsr(), PPC_XT, record_full_arch_list_add_mem(), regcache_raw_read_unsigned(), and size.

Referenced by ppc_process_record().

## ◆ ppc_process_record_op63()

static int ppc_process_record_op63 | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr,
|  | uint32_t | insn
| ) |  |
| static

Definition at line 5380 of file rs6000-tdep.c.

References fprintf_unfiltered(), gdb_stdlog, gdbarch_tdep(), paddress(), gdbarch_tdep::ppc_cr_regnum, PPC_EXTOP, PPC_FIELD, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_fpscr_regnum, PPC_FRT, PPC_RC, ppc_record_vsr(), PPC_VRT, and record_full_arch_list_add_reg().

Referenced by ppc_process_record().

## ◆ ppc_record_vsr()

static int ppc_record_vsr | ( | struct regcache * | regcache,
|  | struct gdbarch_tdep * | tdep,
|  | int | vsr
| ) |  |
| static

Definition at line 3843 of file rs6000-tdep.c.

References gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vsr0_upper_regnum, and record_full_arch_list_add_reg().

Referenced by ppc_process_record(), ppc_process_record_op31(), ppc_process_record_op60(), ppc_process_record_op61(), and ppc_process_record_op63().

## ◆ ppc_supply_fpregset()

void ppc_supply_fpregset | ( | const struct regset * | regset,
|  | struct regcache * | regcache,
|  | int | regnum,
|  | const void * | fpregs,
|  | size_t | len
| ) |  |

Definition at line 561 of file rs6000-tdep.c.

References regcache::arch(), ppc_reg_offsets::f0_offset, ppc_reg_offsets::fpscr_offset, ppc_reg_offsets::fpscr_size, gdbarch_tdep(), if(), 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(), regset::regmap, and regnum.

Referenced by ppcfbsd_fetch_inferior_registers(), ppcnbsd_fetch_inferior_registers(), ppcobsd_fetch_registers(), ppcobsd_supply_gregset(), rs6000_aix_supply_regset(), and supply_fpregset().

## ◆ ppc_supply_gregset()

void ppc_supply_gregset | ( | const struct regset * | regset,
|  | struct regcache * | regcache,
|  | int | regnum,
|  | const void * | gregs,
|  | size_t | len
| ) |  |

Definition at line 511 of file rs6000-tdep.c.

References regcache::arch(), ppc_reg_offsets::cr_offset, ppc_reg_offsets::ctr_offset, gdbarch_pc_regnum(), gdbarch_tdep(), ppc_reg_offsets::gpr_size, if(), 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, regnum, 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().

## ◆ ppc_supply_reg()

void ppc_supply_reg | ( | struct regcache * | regcache,
|  | int | regnum,
|  | const gdb_byte * | regs,
|  | size_t | offset,
|  | int | regsize
| ) |  |

Definition at line 389 of file rs6000-tdep.c.

References regcache::arch(), gdbarch_byte_order(), offset, regcache_raw_supply(), register_size(), and regnum.

Referenced by ppc_linux_supply_gregset(), ppc_supply_fpregset(), ppc_supply_gregset(), ppc_supply_vrregset(), and ppc_supply_vsxregset().

## ◆ ppc_supply_vrregset()

void ppc_supply_vrregset | ( | const struct regset * | regset,
|  | struct regcache * | regcache,
|  | int | regnum,
|  | const void * | vrregs,
|  | size_t | len
| ) |  |

Definition at line 630 of file rs6000-tdep.c.

References regcache::arch(), gdbarch_tdep(), if(), 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, regnum, ppc_reg_offsets::vr0_offset, ppc_reg_offsets::vrsave_offset, and ppc_reg_offsets::vscr_offset.

## ◆ ppc_supply_vsxregset()

void ppc_supply_vsxregset | ( | const struct regset * | regset,
|  | struct regcache * | regcache,
|  | int | regnum,
|  | const void * | vsxregs,
|  | size_t | len
| ) |  |

Definition at line 599 of file rs6000-tdep.c.

References regcache::arch(), gdbarch_tdep(), ppc_supply_reg(), gdbarch_tdep::ppc_vsr0_upper_regnum, ppc_vsx_support_p(), and regnum.

## ◆ ppc_vrreg_offset()

static int ppc_vrreg_offset | ( | struct gdbarch_tdep * | tdep,
|  | const struct ppc_reg_offsets * | offsets,
|  | int | regnum
| ) |  |
| static

Definition at line 489 of file rs6000-tdep.c.

References ppc_num_vrs, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vrsave_regnum, regnum, gdbarch::tdep, ppc_reg_offsets::vr0_offset, ppc_reg_offsets::vrsave_offset, and ppc_reg_offsets::vscr_offset.

Referenced by ppc_collect_vrregset(), and ppc_supply_vrregset().

## ◆ ppc_vsx_support_p()

static int ppc_vsx_support_p | ( | struct gdbarch * | gdbarch | ) |
| static

Definition at line 229 of file rs6000-tdep.c.

References gdbarch_tdep(), and gdbarch_tdep::ppc_vsr0_regnum.

Referenced by ppc_collect_vsxregset(), and ppc_supply_vsxregset().

## ◆ read_insn()

static unsigned int read_insn | ( | struct frame_info * | frame,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 6707 of file rs6000-tdep.c.

References gdbarch::byte_order, gdbarch_byte_order(), get_frame_arch(), and read_memory_unsigned_integer().

Referenced by ppc_insns_match_pattern().

## ◆ rs6000_adjust_frame_regnum()

static int rs6000_adjust_frame_regnum | ( | struct gdbarch * | gdbarch,
|  | int | num,
|  | int | eh_frame_p
| ) |  |
| static

Definition at line 3083 of file rs6000-tdep.c.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_ax_pseudo_register_collect()

static int rs6000_ax_pseudo_register_collect | ( | struct gdbarch * | gdbarch,
|  | struct agent_expr * | ax,
|  | int | reg_nr
| ) |  |
| static

Definition at line 2939 of file rs6000-tdep.c.

References _, ax_reg_mask(), gdbarch_register_name(), gdbarch_tdep(), internal_error(), IS_DFP_PSEUDOREG, IS_EFP_PSEUDOREG, IS_SPE_PSEUDOREG, IS_VSX_PSEUDOREG, gdbarch_tdep::ppc_dl0_regnum, gdbarch_tdep::ppc_efpr0_regnum, gdbarch_tdep::ppc_ev0_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vsr0_regnum, and gdbarch_tdep::ppc_vsr0_upper_regnum.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_builtin_type_vec128()

static struct type* rs6000_builtin_type_vec128 | ( | struct gdbarch * | gdbarch | ) |
| static

Definition at line 2418 of file rs6000-tdep.c.

References append_composite_type_field(), arch_composite_type(), builtin_type::builtin_double, builtin_type::builtin_float, builtin_type::builtin_int16, builtin_type::builtin_int32, builtin_type::builtin_int8, builtin_type(), builtin_type::builtin_uint128, gdbarch_tdep(), init_vector_type(), gdbarch_tdep::ppc_builtin_type_vec128, TYPE_CODE_UNION, TYPE_NAME, and TYPE_VECTOR.

Referenced by rs6000_pseudo_register_type().

## ◆ rs6000_builtin_type_vec64()

static struct type* rs6000_builtin_type_vec64 | ( | struct gdbarch * | gdbarch | ) |
| static

Definition at line 2373 of file rs6000-tdep.c.

References append_composite_type_field(), arch_composite_type(), builtin_type::builtin_float, builtin_type::builtin_int16, builtin_type::builtin_int32, builtin_type::builtin_int64, builtin_type::builtin_int8, builtin_type(), gdbarch_tdep(), init_vector_type(), gdbarch_tdep::ppc_builtin_type_vec64, TYPE_CODE_UNION, TYPE_NAME, and TYPE_VECTOR.

Referenced by rs6000_pseudo_register_type().

## ◆ rs6000_convert_register_p()

static int rs6000_convert_register_p | ( | struct gdbarch * | gdbarch,
|  | int | regnum,
|  | struct type * | type
| ) |  |
| static

Definition at line 2594 of file rs6000-tdep.c.

References gdbarch_tdep(), gdbarch_tdep::ppc_fp0_regnum, ppc_num_fprs, regnum, TYPE_CODE, TYPE_CODE_FLT, and TYPE_LENGTH.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_dummy_id()

static struct frame_id rs6000_dummy_id | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | this_frame
| ) |  |
| static

Definition at line 3246 of file rs6000-tdep.c.

References frame_id_build(), gdbarch_sp_regnum(), get_frame_pc(), and get_frame_register_unsigned().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_dump_tdep()

static void rs6000_dump_tdep | ( | struct gdbarch * | gdbarch,
|  | struct ui_file * | file
| ) |  |
| static

Definition at line 6629 of file rs6000-tdep.c.

References gdbarch_tdep().

Referenced by _initialize_rs6000_tdep().

## ◆ rs6000_dwarf2_reg_to_regnum()

static int rs6000_dwarf2_reg_to_regnum | ( | struct gdbarch * | gdbarch,
|  | int | num
| ) |  |
| static

Definition at line 3038 of file rs6000-tdep.c.

References gdbarch_tdep(), gdbarch_tdep::ppc_acc_regnum, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ctr_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_lr_regnum, gdbarch_tdep::ppc_mq_regnum, gdbarch_tdep::ppc_spefscr_regnum, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vrsave_regnum, and gdbarch_tdep::ppc_xer_regnum.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_epilogue_frame_cache()

static struct rs6000_frame_cache* rs6000_epilogue_frame_cache | ( | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |
| static

Definition at line 3504 of file rs6000-tdep.c.

References rs6000_frame_cache::base, CATCH, END_CATCH, FRAME_OBSTACK_ZALLOC, gdbarch_pc_regnum(), gdbarch_sp_regnum(), gdbarch_tdep(), get_frame_arch(), get_frame_register_unsigned(), rs6000_frame_cache::initial_sp, NOT_AVAILABLE_ERROR, gdbarch_tdep::ppc_lr_regnum, RETURN_MASK_ERROR, rs6000_frame_cache::saved_regs, gdbarch_tdep::sp, throw_exception(), trad_frame_alloc_saved_regs(), trad_frame_set_value(), and TRY.

Referenced by rs6000_epilogue_frame_prev_register(), and rs6000_epilogue_frame_this_id().

## ◆ rs6000_epilogue_frame_prev_register()

static struct value* rs6000_epilogue_frame_prev_register | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | int | regnum
| ) |  |
| static

Definition at line 3564 of file rs6000-tdep.c.

References regnum, rs6000_epilogue_frame_cache(), rs6000_frame_cache::saved_regs, and trad_frame_get_prev_register().

## ◆ rs6000_epilogue_frame_sniffer()

static int rs6000_epilogue_frame_sniffer | ( | const struct frame_unwind * | self,
|  | struct frame_info * | this_frame,
|  | void ** | this_prologue_cache
| ) |  |
| static

Definition at line 3576 of file rs6000-tdep.c.

References frame_relative_level(), get_frame_arch(), get_frame_pc(), and rs6000_in_function_epilogue_frame_p().

## ◆ rs6000_epilogue_frame_this_id()

static void rs6000_epilogue_frame_this_id | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | struct frame_id * | this_id
| ) |  |
| static

Definition at line 3546 of file rs6000-tdep.c.

References rs6000_frame_cache::base, frame_id_build(), frame_id_build_unavailable_stack(), get_frame_func(), gdbarch_tdep::pc, rs6000_frame_cache::pc, and rs6000_epilogue_frame_cache().

## ◆ rs6000_fetch_instruction()

static unsigned long rs6000_fetch_instruction | ( | struct gdbarch * | gdbarch,
|  | const CORE_ADDR | pc
| ) |  |
| static

Definition at line 1375 of file rs6000-tdep.c.

References gdbarch::byte_order, extract_unsigned_integer(), gdbarch_byte_order(), and target_read_memory().

Referenced by rs6000_skip_stack_check().

## ◆ rs6000_fetch_pointer_argument()

static CORE_ADDR rs6000_fetch_pointer_argument | ( | struct frame_info * | frame,
|  | int | argi,
|  | struct type * | type
| ) |  |
| static

Definition at line 965 of file rs6000-tdep.c.

References get_frame_register_unsigned().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_frame_align()

static CORE_ADDR rs6000_frame_align | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | addr
| ) |  |
| static

Definition at line 2264 of file rs6000-tdep.c.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_frame_base_address()

static CORE_ADDR rs6000_frame_base_address | ( | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |
| static

Definition at line 3602 of file rs6000-tdep.c.

References rs6000_frame_cache::initial_sp, and rs6000_frame_cache().

## ◆ rs6000_frame_base_sniffer()

static const struct frame_base* rs6000_frame_base_sniffer | ( | struct frame_info * | this_frame | ) |
| static

Definition at line 3617 of file rs6000-tdep.c.

References rs6000_frame_base.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_frame_cache()

static struct rs6000_frame_cache* rs6000_frame_cache | ( | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |
| static

Definition at line 3268 of file rs6000-tdep.c.

References trad_frame_saved_reg::addr, rs6000_framedata::alloca_reg, rs6000_frame_cache::base, rs6000_frame_cache::base_p, CATCH, rs6000_framedata::cr_offset, END_CATCH, rs6000_framedata::ev_offset, rs6000_framedata::fpr_offset, FRAME_OBSTACK_ZALLOC, rs6000_framedata::frameless, func, gdbarch_byte_order(), gdbarch_pc_regnum(), gdbarch_sp_regnum(), gdbarch_tdep(), get_frame_arch(), get_frame_func(), get_frame_pc(), get_frame_register_unsigned(), get_pc_function_start(), rs6000_framedata::gpr_mask, rs6000_framedata::gpr_offset, rs6000_frame_cache::initial_sp, gdbarch_tdep::lr_frame_offset, rs6000_framedata::lr_offset, rs6000_framedata::lr_register, NOT_AVAILABLE_ERROR, rs6000_frame_cache::pc, gdbarch_tdep::ppc_cr_regnum, gdbarch_tdep::ppc_ev0_regnum, ppc_floating_point_unit_p(), gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_lr_regnum, ppc_num_fprs, ppc_num_gprs, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vrsave_regnum, trad_frame_saved_reg::realreg, register_size(), RETURN_MASK_ERROR, safe_read_memory_unsigned_integer(), rs6000_framedata::saved_ev, rs6000_framedata::saved_fpr, rs6000_framedata::saved_gpr, rs6000_frame_cache::saved_regs, rs6000_framedata::saved_vr, skip_prologue(), throw_exception(), trad_frame_alloc_saved_regs(), trad_frame_set_value(), TRY, rs6000_framedata::vr_offset, rs6000_framedata::vrsave_offset, gdbarch_tdep::wordsize, and wordsize.

Referenced by rs6000_frame_base_address(), rs6000_frame_prev_register(), and rs6000_frame_this_id().

## ◆ rs6000_frame_prev_register()

static struct value* rs6000_frame_prev_register | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | int | regnum
| ) |  |
| static

Definition at line 3482 of file rs6000-tdep.c.

References regnum, rs6000_frame_cache(), rs6000_frame_cache::saved_regs, and trad_frame_get_prev_register().

## ◆ rs6000_frame_this_id()

static void rs6000_frame_this_id | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | struct frame_id * | this_id
| ) |  |
| static

Definition at line 3462 of file rs6000-tdep.c.

References rs6000_frame_cache::base, rs6000_frame_cache::base_p, frame_id_build(), frame_id_build_unavailable_stack(), get_frame_func(), rs6000_frame_cache::pc, and rs6000_frame_cache().

## ◆ rs6000_gdbarch_init()

static struct gdbarch* rs6000_gdbarch_init | ( | struct gdbarch_info | info,
|  | struct gdbarch_list * | arches
| ) |  |
| static

Definition at line 5941 of file rs6000-tdep.c.

References gdbarch_info::abfd, variant::arch, AUTO_BOOLEAN_AUTO, AUTO_BOOLEAN_FALSE, AUTO_BOOLEAN_TRUE, gdbarch_info::bfd_arch_info, bfd_uses_spe_extensions(), gdbarch_info::byte_order, core_addr_lessthan(), displaced_step_at_entry_point(), dwarf2_append_unwinders(), dwarf2_frame_set_adjust_regnum(), dwarf2_frame_set_init_reg(), gdbarch_tdep::elf_abi, find_variant_by_arch(), frame_base_append_sniffer(), frame_unwind_append_unwinder(), gdb_assert, GDB_OSABI_LINUX, GDB_OSABI_NETBSD, GDB_OSABI_UNKNOWN, gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_tdep(), gdbarch_tdep::long_double_abi, gdbarch_tdep::lr_frame_offset, variant::mach, gdbarch_list::next, gdbarch_info::osabi, powerpc_disassembler_options, POWERPC_ELF_AUTO, POWERPC_ELF_V1, POWERPC_ELF_V2, POWERPC_LONG_DOUBLE_AUTO, POWERPC_LONG_DOUBLE_IBM128, POWERPC_LONG_DOUBLE_IEEE128, powerpc_soft_float_global, POWERPC_VEC_ALTIVEC, POWERPC_VEC_AUTO, POWERPC_VEC_GENERIC, POWERPC_VEC_SPE, powerpc_vector_abi_global, ppc64_sysv_abi_push_dummy_call(), ppc64_sysv_abi_return_value(), gdbarch_tdep::ppc_acc_regnum, gdbarch_tdep::ppc_cr_regnum, PPC_CR_REGNUM, gdbarch_tdep::ppc_ctr_regnum, PPC_CTR_REGNUM, ppc_deal_with_atomic_sequence(), ppc_displaced_step_fixup(), ppc_displaced_step_hw_singlestep(), gdbarch_tdep::ppc_dl0_regnum, ppc_dwarf2_frame_init_reg(), gdbarch_tdep::ppc_efpr0_regnum, gdbarch_tdep::ppc_ev0_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, PPC_F0_REGNUM, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_fpscr_regnum, PPC_FPSCR_REGNUM, gdbarch_tdep::ppc_gp0_regnum, PPC_INSN_SIZE, gdbarch_tdep::ppc_lr_regnum, PPC_LR_REGNUM, gdbarch_tdep::ppc_mq_regnum, PPC_MQ_REGNUM, PPC_MSR_REGNUM, ppc_num_fprs, ppc_num_gprs, PPC_NUM_REGS, ppc_num_vshrs, PPC_PC_REGNUM, gdbarch_tdep::ppc_ps_regnum, PPC_R0_REGNUM, PPC_SPE_ACC_REGNUM, PPC_SPE_FSCR_REGNUM, PPC_SPE_UPPER_GP0_REGNUM, gdbarch_tdep::ppc_spefscr_regnum, ppc_sysv_abi_push_dummy_call(), ppc_sysv_abi_return_value(), gdbarch_tdep::ppc_toc_regnum, gdbarch_tdep::ppc_vr0_regnum, PPC_VR0_REGNUM, gdbarch_tdep::ppc_vrsave_regnum, PPC_VRSAVE_REGNUM, PPC_VSCR_REGNUM, gdbarch_tdep::ppc_vsr0_regnum, gdbarch_tdep::ppc_vsr0_upper_regnum, PPC_VSR0_UPPER_REGNUM, gdbarch_tdep::ppc_xer_regnum, PPC_XER_REGNUM, register_e500_ravenscar_ops(), register_ppc_ravenscar_ops(), rs6000_adjust_frame_regnum(), rs6000_ax_pseudo_register_collect(), rs6000_convert_register_p(), rs6000_dummy_id(), rs6000_dwarf2_reg_to_regnum(), rs6000_epilogue_frame_unwind, rs6000_fetch_pointer_argument(), rs6000_frame_align(), rs6000_frame_base_sniffer(), rs6000_frame_unwind, rs6000_gen_return_address(), rs6000_in_solib_return_trampoline(), rs6000_pseudo_register_read(), rs6000_pseudo_register_reggroup_p(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), rs6000_register_name(), rs6000_register_sim_regno(), rs6000_register_to_value(), rs6000_skip_main_prologue(), rs6000_skip_prologue(), rs6000_skip_trampoline_code(), rs6000_stab_reg_to_regnum(), rs6000_stack_frame_destroyed_p(), rs6000_unwind_pc(), rs6000_value_to_register(), set_gdbarch_ax_pseudo_register_collect(), set_gdbarch_believe_pcc_promotion(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_char_signed(), set_gdbarch_convert_register_p(), set_gdbarch_disassembler_options(), set_gdbarch_displaced_step_copy_insn(), set_gdbarch_displaced_step_fixup(), set_gdbarch_displaced_step_hw_singlestep(), set_gdbarch_displaced_step_location(), set_gdbarch_double_bit(), set_gdbarch_dummy_id(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_fetch_pointer_argument(), set_gdbarch_float_bit(), set_gdbarch_fp0_regnum(), set_gdbarch_frame_align(), set_gdbarch_frame_args_skip(), set_gdbarch_frame_red_zone_size(), set_gdbarch_gen_return_address(), set_gdbarch_have_nonsteppable_watchpoint(), set_gdbarch_in_solib_return_trampoline(), set_gdbarch_inner_than(), set_gdbarch_int_bit(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_long_bit(), set_gdbarch_max_insn_length(), set_gdbarch_num_pseudo_regs(), set_gdbarch_num_regs(), set_gdbarch_pc_regnum(), set_gdbarch_ps_regnum(), 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_sim_regno(), set_gdbarch_register_to_value(), set_gdbarch_return_value(), set_gdbarch_short_bit(), set_gdbarch_skip_main_prologue(), set_gdbarch_skip_prologue(), set_gdbarch_skip_trampoline_code(), set_gdbarch_software_single_step(), set_gdbarch_sofun_address_maybe_missing(), set_gdbarch_sp_regnum(), set_gdbarch_stab_reg_to_regnum(), set_gdbarch_stack_frame_destroyed_p(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_unwind_pc(), set_gdbarch_valid_disassembler_options(), set_gdbarch_value_to_register(), set_tdesc_pseudo_register_reggroup_p(), set_tdesc_pseudo_register_type(), gdbarch_tdep::soft_float, TARGET_CHAR_BIT, gdbarch_info::target_desc, variant::tdesc, tdesc_data, gdbarch_info::tdesc_data, tdesc_data_alloc(), tdesc_data_cleanup(), tdesc_find_feature(), tdesc_has_registers(), tdesc_numbered_register(), tdesc_numbered_register_choices(), tdesc_register_size(), tdesc_use_registers(), gdbarch_tdep::vector_abi, gdbarch_tdep::wordsize, wordsize, and XCNEW.

Referenced by _initialize_rs6000_tdep().

## ◆ rs6000_gen_return_address()

static void rs6000_gen_return_address | ( | struct gdbarch * | gdbarch,
|  | struct agent_expr * | ax,
|  | struct axs_value * | value,
|  | CORE_ADDR | scope
| ) |  |
| static

Definition at line 2983 of file rs6000-tdep.c.

References axs_lvalue_register, gdbarch_tdep(), gdbarch_tdep::ppc_lr_regnum, value::reg, register_type(), and value::type.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_in_function_epilogue_frame_p()

static int rs6000_in_function_epilogue_frame_p | ( | struct frame_info * | curfrm,
|  | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 894 of file rs6000-tdep.c.

References extract_unsigned_integer(), find_pc_partial_function(), gdbarch_byte_order(), gdbarch_tdep(), get_frame_register_unsigned(), insn_changes_sp_or_jumps(), gdbarch_tdep::pc, gdbarch_tdep::ppc_ctr_regnum, PPC_INSN_SIZE, PPC_MAX_EPILOGUE_INSTRUCTIONS, and safe_frame_unwind_memory().

Referenced by rs6000_epilogue_frame_sniffer(), and rs6000_stack_frame_destroyed_p().

## ◆ rs6000_in_solib_return_trampoline()

static int rs6000_in_solib_return_trampoline | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc,
|  | const char * | name
| ) |  |
| static

Definition at line 2293 of file rs6000-tdep.c.

References name, and startswith().

Referenced by rs6000_gdbarch_init(), and rs6000_skip_trampoline_code().

## ◆ rs6000_pseudo_register_read()

static enum register_status rs6000_pseudo_register_read | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | gdb_byte * | buffer
| ) |  |
| static

Definition at line 2889 of file rs6000-tdep.c.

References _, regcache::arch(), dfp_pseudo_register_read(), e500_pseudo_register_read(), efpr_pseudo_register_read(), gdb_assert, gdbarch_register_name(), gdbarch_tdep(), internal_error(), IS_DFP_PSEUDOREG, IS_EFP_PSEUDOREG, IS_SPE_PSEUDOREG, IS_VSX_PSEUDOREG, and vsx_pseudo_register_read().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_pseudo_register_reggroup_p()

static int rs6000_pseudo_register_reggroup_p | ( | struct gdbarch * | gdbarch,
|  | int | regnum,
|  | struct reggroup * | group
| ) |  |
| static

Definition at line 2571 of file rs6000-tdep.c.

References all_reggroup, float_reggroup, gdb_assert, gdbarch_tdep(), IS_DFP_PSEUDOREG, IS_EFP_PSEUDOREG, IS_SPE_PSEUDOREG, IS_VSX_PSEUDOREG, regnum, and vector_reggroup.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_pseudo_register_type()

static struct type* rs6000_pseudo_register_type | ( | struct gdbarch * | gdbarch,
|  | int | regnum
| ) |  |
| static

Definition at line 2545 of file rs6000-tdep.c.

References builtin_type::builtin_declong, builtin_type::builtin_double, builtin_type(), gdb_assert, gdbarch_tdep(), IS_DFP_PSEUDOREG, IS_EFP_PSEUDOREG, IS_SPE_PSEUDOREG, IS_VSX_PSEUDOREG, regnum, rs6000_builtin_type_vec128(), and rs6000_builtin_type_vec64().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_pseudo_register_write()

static void rs6000_pseudo_register_write | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | const gdb_byte * | buffer
| ) |  |
| static

Definition at line 2914 of file rs6000-tdep.c.

References _, regcache::arch(), dfp_pseudo_register_write(), e500_pseudo_register_write(), efpr_pseudo_register_write(), gdb_assert, gdbarch_register_name(), gdbarch_tdep(), internal_error(), IS_DFP_PSEUDOREG, IS_EFP_PSEUDOREG, IS_SPE_PSEUDOREG, IS_VSX_PSEUDOREG, and vsx_pseudo_register_write().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_register_name()

static const char* rs6000_register_name | ( | struct gdbarch * | gdbarch,
|  | int | regno
| ) |  |
| static

Definition at line 2466 of file rs6000-tdep.c.

References gdbarch_tdep(), IS_DFP_PSEUDOREG, IS_EFP_PSEUDOREG, IS_SPE_PSEUDOREG, IS_VSX_PSEUDOREG, gdbarch_tdep::ppc_dl0_regnum, gdbarch_tdep::ppc_efpr0_regnum, gdbarch_tdep::ppc_ev0_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, ppc_num_gprs, gdbarch_tdep::ppc_vsr0_regnum, gdbarch_tdep::ppc_vsr0_upper_regnum, and tdesc_register_name().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_register_sim_regno()

static int rs6000_register_sim_regno | ( | struct gdbarch * | gdbarch,
|  | int | reg
| ) |  |
| static

Definition at line 362 of file rs6000-tdep.c.

References gdb_assert, gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_tdep(), init_sim_regno_table(), LEGACY_SIM_REGNO_IGNORE, and gdbarch_tdep::sim_regno.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_register_to_value()

static int rs6000_register_to_value | ( | struct frame_info * | frame,
|  | int | regnum,
|  | struct type * | type,
|  | gdb_byte * | to,
|  | int * | optimizedp,
|  | int * | unavailablep
| ) |  |
| static

Definition at line 2608 of file rs6000-tdep.c.

References gdb_assert, get_frame_arch(), get_frame_register_bytes(), PPC_MAX_REGISTER_SIZE, register_size(), regnum, target_float_convert(), TYPE_CODE, and TYPE_CODE_FLT.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_skip_main_prologue()

static CORE_ADDR rs6000_skip_main_prologue | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 2234 of file rs6000-tdep.c.

References BL_DISPLACEMENT_MASK, BL_INSTRUCTION, BL_MASK, extract_unsigned_integer(), gdbarch_byte_order(), lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, MSYMBOL_LINKAGE_NAME, and target_read_memory().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_skip_prologue()

static CORE_ADDR rs6000_skip_prologue | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 2190 of file rs6000-tdep.c.

References find_pc_partial_function(), skip_prologue(), and skip_prologue_using_sal().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_skip_stack_check()

static CORE_ADDR rs6000_skip_stack_check | ( | struct gdbarch * | gdbarch,
|  | const CORE_ADDR | start_pc
| ) |  |
| static

Definition at line 1395 of file rs6000-tdep.c.

References rs6000_fetch_instruction().

Referenced by skip_prologue().

## ◆ rs6000_skip_trampoline_code()

static CORE_ADDR rs6000_skip_trampoline_code | ( | struct frame_info * | frame,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 2314 of file rs6000-tdep.c.

References find_solib_trampoline_target(), gdbarch_byte_order(), gdbarch_tdep(), get_frame_arch(), get_frame_register_unsigned(), lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, MSYMBOL_LINKAGE_NAME, read_memory_integer(), read_memory_unsigned_integer(), rs6000_in_solib_return_trampoline(), and gdbarch_tdep::wordsize.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_stab_reg_to_regnum()

static int rs6000_stab_reg_to_regnum | ( | struct gdbarch * | gdbarch,
|  | int | num
| ) |  |
| static

Definition at line 2996 of file rs6000-tdep.c.

References gdbarch_tdep(), gdbarch_tdep::ppc_acc_regnum, gdbarch_tdep::ppc_ctr_regnum, gdbarch_tdep::ppc_ev0_upper_regnum, gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_gp0_regnum, gdbarch_tdep::ppc_lr_regnum, gdbarch_tdep::ppc_mq_regnum, gdbarch_tdep::ppc_spefscr_regnum, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vrsave_regnum, and gdbarch_tdep::ppc_xer_regnum.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_stack_frame_destroyed_p()

static int rs6000_stack_frame_destroyed_p | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 957 of file rs6000-tdep.c.

References get_current_frame(), gdbarch_tdep::pc, and rs6000_in_function_epilogue_frame_p().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_unwind_pc()

static CORE_ADDR rs6000_unwind_pc | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | next_frame
| ) |  |
| static

Definition at line 3239 of file rs6000-tdep.c.

References frame_unwind_register_unsigned(), and gdbarch_pc_regnum().

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_value_to_register()

static void rs6000_value_to_register | ( | struct frame_info * | frame,
|  | int | regnum,
|  | struct type * | type,
|  | const gdb_byte * | from
| ) |  |
| static

Definition at line 2631 of file rs6000-tdep.c.

References gdb_assert, get_frame_arch(), PPC_MAX_REGISTER_SIZE, put_frame_register(), regnum, target_float_convert(), TYPE_CODE, and TYPE_CODE_FLT.

Referenced by rs6000_gdbarch_init().

## ◆ set_powerpc_command()

static void set_powerpc_command | ( | const char * | args,
|  | int | from_tty
| ) |  |
| static

Definition at line 6642 of file rs6000-tdep.c.

References _, all_commands, gdb_stdout, help_list(), printf_unfiltered(), and setpowerpccmdlist.

Referenced by _initialize_rs6000_tdep().

## ◆ set_sim_regno()

static void set_sim_regno | ( | int * | table,
|  | int | gdb_regno,
|  | int | sim_regno
| ) |  |
| static

Definition at line 255 of file rs6000-tdep.c.

References gdb_assert.

Referenced by init_sim_regno_table().

## ◆ show_powerpc_command()

static void show_powerpc_command | ( | const char * | args,
|  | int | from_tty
| ) |  |
| static

Definition at line 6650 of file rs6000-tdep.c.

References cmd_show_list(), and showpowerpccmdlist.

Referenced by _initialize_rs6000_tdep().

## ◆ show_powerpc_exact_watchpoints()

static void show_powerpc_exact_watchpoints | ( | struct ui_file * | file,
|  | int | from_tty,
|  | struct cmd_list_element * | c,
|  | const char * | value
| ) |  |
| static

Definition at line 6697 of file rs6000-tdep.c.

References _, and fprintf_filtered().

Referenced by _initialize_rs6000_tdep().

## ◆ skip_prologue()

static CORE_ADDR skip_prologue | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc,
|  | CORE_ADDR | lim_pc,
|  | struct rs6000_framedata * | fdata
| ) |  |
| static

Definition at line 1577 of file rs6000-tdep.c.

References rs6000_framedata::alloca_reg, bl_to_blrl_insn_p(), rs6000_framedata::cr_offset, rs6000_framedata::ev_offset, extract_unsigned_integer(), find_pc_line(), rs6000_framedata::fpr_offset, rs6000_framedata::frameless, gdbarch_bfd_arch_info(), gdbarch_byte_order(), gdbarch_tdep(), GET_SRC_REG, rs6000_framedata::gpr_mask, rs6000_framedata::gpr_offset, symtab_and_line::line, rs6000_framedata::lr_offset, rs6000_framedata::lr_register, main_name(), max_skip_non_prologue_insns, memset(), name, rs6000_framedata::nosavedpc, offset, rs6000_framedata::offset, gdbarch_tdep::pc, symtab_and_line::pc, gdbarch_tdep::ppc_gp0_regnum, read_memory_integer(), rs6000_skip_stack_check(), rs6000_framedata::saved_ev, rs6000_framedata::saved_fpr, rs6000_framedata::saved_gpr, rs6000_framedata::saved_vr, SIGNED_SHORT, store_param_on_stack_p(), target_read_memory(), rs6000_framedata::used_bl, rs6000_framedata::vr_offset, and rs6000_framedata::vrsave_offset.

Referenced by rs6000_frame_cache(), rs6000_skip_prologue(), and set_gdbarch_skip_prologue().

## ◆ spe_register_p()

int spe_register_p | ( | struct gdbarch * | gdbarch,
|  | int | regno
| ) |  |

Definition at line 186 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().

## ◆ store_param_on_stack_p()

static int store_param_on_stack_p | ( | unsigned long | op,
|  | int | framep,
|  | int * | r0_contains_arg
| ) |  |
| static

Definition at line 1266 of file rs6000-tdep.c.

References GET_SRC_REG.

Referenced by skip_prologue().

## ◆ vsx_pseudo_register_read()

static enum register_status vsx_pseudo_register_read | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | gdb_byte * | buffer
| ) |  |
| static

Definition at line 2795 of file rs6000-tdep.c.

References gdbarch_byte_order(), gdbarch_tdep(), gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vsr0_regnum, gdbarch_tdep::ppc_vsr0_upper_regnum, REG_VALID, regcache_raw_read(), and status.

Referenced by rs6000_pseudo_register_read().

## ◆ vsx_pseudo_register_write()

static void vsx_pseudo_register_write | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | int | reg_nr,
|  | const gdb_byte * | buffer
| ) |  |
| static

Definition at line 2830 of file rs6000-tdep.c.

References gdbarch_byte_order(), gdbarch_tdep(), gdbarch_tdep::ppc_fp0_regnum, gdbarch_tdep::ppc_vr0_regnum, gdbarch_tdep::ppc_vsr0_regnum, gdbarch_tdep::ppc_vsr0_upper_regnum, and regcache_raw_write().

Referenced by rs6000_pseudo_register_write().

## ◆ vsx_register_p()

int vsx_register_p | ( | struct gdbarch * | gdbarch,
|  | int | regno
| ) |  |

Definition at line 162 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().

## Variable Documentation

## ◆ big_breakpoint

constexpr gdb_byte big_breakpoint[] = { 0x7d, 0x82, 0x10, 0x08 }

Definition at line 973 of file rs6000-tdep.c.

Referenced by iq2000_sw_breakpoint_from_kind(), mips_sw_breakpoint_from_kind(), and xtensa_sw_breakpoint_from_kind().

## ◆ little_breakpoint

constexpr gdb_byte little_breakpoint[] = { 0x08, 0x10, 0x82, 0x7d }

Definition at line 974 of file rs6000-tdep.c.

Referenced by iq2000_sw_breakpoint_from_kind(), mips_sw_breakpoint_from_kind(), and xtensa_sw_breakpoint_from_kind().

## ◆ max_skip_non_prologue_insns

int max_skip_non_prologue_insns = 10
| static

Definition at line 1258 of file rs6000-tdep.c.

Referenced by skip_prologue().

## ◆ powerpc_disassembler_options

char* powerpc_disassembler_options
| static

Definition at line 110 of file rs6000-tdep.c.

Referenced by rs6000_gdbarch_init().

## ◆ powerpc_soft_float_global

enum auto_boolean powerpc_soft_float_global = AUTO_BOOLEAN_AUTO
| static

Definition at line 117 of file rs6000-tdep.c.

Referenced by _initialize_rs6000_tdep(), and rs6000_gdbarch_init().

## ◆ powerpc_vector_abi_global

enum powerpc_vector_abi powerpc_vector_abi_global = POWERPC_VEC_AUTO
| static

Definition at line 130 of file rs6000-tdep.c.

Referenced by powerpc_set_vector_abi(), and rs6000_gdbarch_init().

## ◆ powerpc_vector_abi_string

const char* powerpc_vector_abi_string = "auto"
| static

Definition at line 131 of file rs6000-tdep.c.

Referenced by _initialize_rs6000_tdep(), and powerpc_set_vector_abi().

## ◆ powerpc_vector_strings

const char* const powerpc_vector_strings[]
| static

Initial value:
=
{
"auto",
"generic",
"altivec",
"spe",
NULL
}

Definition at line 120 of file rs6000-tdep.c.

Referenced by _initialize_rs6000_tdep(), and powerpc_set_vector_abi().

## ◆ rs6000_epilogue_frame_unwind

const struct frame_unwind rs6000_epilogue_frame_unwind
| static

Initial value:
=
{
NORMAL_FRAME,
default_frame_unwind_stop_reason,
rs6000_epilogue_frame_this_id, rs6000_epilogue_frame_prev_register,
NULL,
rs6000_epilogue_frame_sniffer
}
NORMAL_FRAME
Definition: frame.h:244
rs6000_epilogue_frame_prev_register
static struct value * rs6000_epilogue_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: rs6000-tdep.c:3564
default_frame_unwind_stop_reason
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:184
rs6000_epilogue_frame_sniffer
static int rs6000_epilogue_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: rs6000-tdep.c:3576
rs6000_epilogue_frame_this_id
static void rs6000_epilogue_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: rs6000-tdep.c:3546

Definition at line 3591 of file rs6000-tdep.c.

Referenced by rs6000_gdbarch_init().

## ◆ rs6000_frame_base

const struct frame_base rs6000_frame_base
| static

Initial value:
= {
&rs6000_frame_unwind,
rs6000_frame_base_address,
rs6000_frame_base_address,
rs6000_frame_base_address
}
rs6000_frame_unwind
static const struct frame_unwind rs6000_frame_unwind
Definition: rs6000-tdep.c:3490
rs6000_frame_base_address
static CORE_ADDR rs6000_frame_base_address(struct frame_info *this_frame, void **this_cache)
Definition: rs6000-tdep.c:3602

Definition at line 3609 of file rs6000-tdep.c.

Referenced by rs6000_frame_base_sniffer().

## ◆ rs6000_frame_unwind

const struct frame_unwind rs6000_frame_unwind
| static

Initial value:
=
{
NORMAL_FRAME,
default_frame_unwind_stop_reason,
rs6000_frame_this_id,
rs6000_frame_prev_register,
NULL,
default_frame_sniffer
}
rs6000_frame_this_id
static void rs6000_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: rs6000-tdep.c:3462
rs6000_frame_prev_register
static struct value * rs6000_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: rs6000-tdep.c:3482
NORMAL_FRAME
Definition: frame.h:244
default_frame_sniffer
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:174
default_frame_unwind_stop_reason
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:184

Definition at line 3490 of file rs6000-tdep.c.

Referenced by rs6000_gdbarch_init().

## ◆ setpowerpccmdlist

struct cmd_list_element* setpowerpccmdlist = NULL
| static

Definition at line 114 of file rs6000-tdep.c.

Referenced by _initialize_rs6000_tdep(), and set_powerpc_command().

## ◆ showpowerpccmdlist

struct cmd_list_element* showpowerpccmdlist = NULL
| static

Definition at line 115 of file rs6000-tdep.c.

Referenced by _initialize_rs6000_tdep(), and show_powerpc_command().

## ◆ variants

struct variant variants[]
| static

Definition at line 3166 of file rs6000-tdep.c.

Referenced by find_variant_by_arch().