GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions | Variables
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 "sim/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  ppc_variant
 
struct  rs6000_frame_cache
 

Macros

#define IS_SPE_PSEUDOREG(tdep, regnum)
 
#define IS_DFP_PSEUDOREG(tdep, regnum)
 
#define IS_V_ALIAS_PSEUDOREG(tdep, regnum)
 
#define IS_VSX_PSEUDOREG(tdep, regnum)
 
#define IS_EFP_PSEUDOREG(tdep, regnum)
 
#define IS_CDFP_PSEUDOREG(tdep, regnum)
 
#define IS_CVSX_PSEUDOREG(tdep, regnum)
 
#define IS_CEFP_PSEUDOREG(tdep, regnum)
 
#define OP_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 ADDPCIS_INSN   0x4c000004
 
#define ADDPCIS_INSN_MASK   0xfc00003e
 
#define ADDPCIS_TARGET_REGISTER   0x03F00000
 
#define ADDPCIS_INSN_REGSHIFT   21
 
#define PNOP_MASK   0xfff3ffff
 
#define PNOP_INSN   0x07000000
 
#define R_MASK   0x00100000
 
#define R_ZERO   0x00000000
 
#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_XTp(insn)
 
#define PPC_XSp(insn)
 
#define PPC_XER_NB(xer)   (xer & 0x7f)
 
#define P_PPC_D(insn_prefix, insn_suffix)
 
#define P_PPC_TX5(insn_sufix)   PPC_BIT (insn_suffix, 5)
 
#define P_PPC_TX15(insn_suffix)   PPC_BIT (insn_suffix, 15)
 
#define P_PPC_XT(insn_suffix)
 
#define P_PPC_XT5(insn_suffix)
 
#define P_PPC_XT15(insn_suffix)    ((P_PPC_TX15 (insn_suffix) << 5) | PPC_T (insn_suffix))
 

Typedefs

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

Functions

ppc_inferior_dataget_ppc_per_inferior (inferior *inf)
 
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)
 
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, ppc_gdbarch_tdep *tdep, const struct ppc_reg_offsets *offsets, int regnum, int *regsize)
 
static int ppc_fpreg_offset (ppc_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_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)
 
static int insn_changes_sp_or_jumps (unsigned long insn)
 
static int rs6000_in_function_epilogue_frame_p (frame_info_ptr 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 (frame_info_ptr 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_copy_insn_closure *closure_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs, bool completed_p)
 
static displaced_step_prepare_status ppc_displaced_step_prepare (gdbarch *arch, thread_info *thread, CORE_ADDR &displaced_pc)
 
static displaced_step_finish_status ppc_displaced_step_finish (gdbarch *arch, thread_info *thread, const target_waitstatus &status)
 
static void ppc_displaced_step_restore_all_in_ptid (inferior *parent_inf, ptid_t ptid)
 
static bool ppc_displaced_step_hw_singlestep (struct gdbarch *gdbarch)
 
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 bool store_insn_p (unsigned long op, unsigned long rs, unsigned long ra, bool with_update)
 
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 (frame_info_ptr frame, CORE_ADDR pc)
 
static struct typers6000_builtin_type_vec64 (struct gdbarch *gdbarch)
 
static struct typers6000_builtin_type_vec128 (struct gdbarch *gdbarch)
 
static const char * rs6000_register_name (struct gdbarch *gdbarch, int regno)
 
static struct typers6000_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
 
static int rs6000_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum, const struct reggroup *group)
 
static int rs6000_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type)
 
static int rs6000_register_to_value (frame_info_ptr frame, int regnum, struct type *type, gdb_byte *to, int *optimizedp, int *unavailablep)
 
static void rs6000_value_to_register (frame_info_ptr 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_write (struct regcache *regcache, int regnum, void *buffer)
 
static enum register_status e500_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int ev_reg, 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, readable_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 v_alias_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int reg_nr, gdb_byte *buffer)
 
static void v_alias_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, readable_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 efp_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int reg_nr, gdb_byte *buffer)
 
static void efp_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, readable_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 void dfp_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg_nr)
 
static void v_alias_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg_nr)
 
static void vsx_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg_nr)
 
static void efp_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg_nr)
 
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 ppc_variantfind_variant_by_arch (enum bfd_architecture arch, unsigned long mach)
 
static struct rs6000_frame_cache * rs6000_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static void rs6000_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuers6000_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static struct rs6000_frame_cachers6000_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static void rs6000_epilogue_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuers6000_epilogue_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static int rs6000_epilogue_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
 
static CORE_ADDR rs6000_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 
static const struct frame_basers6000_frame_base_sniffer (frame_info_ptr this_frame)
 
static void ppc_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, frame_info_ptr this_frame)
 
static int bfd_uses_spe_extensions (bfd *abfd)
 
static int ppc_record_vsr (struct regcache *regcache, ppc_gdbarch_tdep *tdep, int vsr)
 
static int ppc_record_ACC_fpscr (struct regcache *regcache, ppc_gdbarch_tdep *tdep, int entry, bool save_fpscr)
 
static int ppc_process_record_op4 (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn)
 
static int ppc_process_record_op6 (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_177 (struct gdbarch *gdbarch, struct regcache *regcache, 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_XX2 (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)
 
static int ppc_process_record_prefix_op42 (struct gdbarch *gdbarch, struct regcache *regcache, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_record_prefix_op59_XX3 (struct gdbarch *gdbarch, struct regcache *regcache, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_record_prefix_store (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_record_prefix_op32 (struct gdbarch *gdbarch, struct regcache *regcache, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_record_prefix_op33 (struct gdbarch *gdbarch, struct regcache *regcache, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_record_prefix_op34 (struct gdbarch *gdbarch, struct regcache *regcache, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_record_prefix_store_vsx_ds_form (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_record_prefix_vsx_d_form (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint32_t insn_prefix, uint32_t insn_suffix)
 
static int ppc_process_prefix_instruction (int insn_prefix, int insn_suffix, CORE_ADDR addr, struct gdbarch *gdbarch, struct regcache *regcache)
 
int ppc_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
 
static bool is_tw_insn (uint32_t insn)
 
static bool is_twi_insn (uint32_t insn)
 
static bool is_td_insn (uint32_t insn)
 
static bool is_tdi_insn (uint32_t insn)
 
static bool rs6000_program_breakpoint_here_p (gdbarch *gdbarch, CORE_ADDR address)
 
static CORE_ADDR ppc64_update_call_site_pc (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static struct gdbarchrs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
static void rs6000_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
 
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 (frame_info_ptr frame, CORE_ADDR pc)
 
int ppc_insns_match_pattern (frame_info_ptr frame, CORE_ADDR pc, const 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)
 
CORE_ADDR ppc_insn_prefix_dform (unsigned int insn1, unsigned int insn2)
 
void _initialize_rs6000_tdep ()
 

Variables

static char * powerpc_disassembler_options
 
static struct cmd_list_elementsetpowerpccmdlist = NULL
 
static struct cmd_list_elementshowpowerpccmdlist = 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"
 
static const registry< inferior >::key< ppc_inferior_datappc_inferior_data_key
 
constexpr gdb_byte big_breakpoint [] = { 0x7f, 0xe0, 0x00, 0x08 }
 
constexpr gdb_byte little_breakpoint [] = { 0x08, 0x00, 0xe0, 0x7f }
 
static int max_skip_non_prologue_insns = 10
 
static struct ppc_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
 
static constexpr uint32_t TX_INSN_MASK = 0xFC0007FF
 
static constexpr uint32_t TW_INSN = 0x7C000008
 
static constexpr uint32_t TD_INSN = 0x7C000088
 
static constexpr uint32_t TXI_INSN_MASK = 0xFC000000
 
static constexpr uint32_t TWI_INSN = 0x0C000000
 
static constexpr uint32_t TDI_INSN = 0x08000000
 

Macro Definition Documentation

◆ ADDPCIS_INSN

#define ADDPCIS_INSN   0x4c000004

◆ ADDPCIS_INSN_MASK

#define ADDPCIS_INSN_MASK   0xfc00003e

◆ ADDPCIS_INSN_REGSHIFT

#define ADDPCIS_INSN_REGSHIFT   21

◆ ADDPCIS_TARGET_REGISTER

#define ADDPCIS_TARGET_REGISTER   0x03F00000

◆ B_INSN

#define B_INSN   0x48000000

◆ BC_INSN

#define BC_INSN   0x40000000

◆ BL_DISPLACEMENT_MASK

#define BL_DISPLACEMENT_MASK   0x03fffffc

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

Referenced by rs6000_skip_main_prologue().

◆ BL_INSTRUCTION

#define BL_INSTRUCTION   0x48000001

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

Referenced by rs6000_skip_main_prologue().

◆ BL_MASK

#define BL_MASK   0xfc000001

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

Referenced by rs6000_skip_main_prologue().

◆ BP_INSN

#define BP_INSN   0x7C000008

◆ BP_MASK

#define BP_MASK   0xFC0007FE

◆ BXL_INSN

#define BXL_INSN   0x4c000000

◆ GET_SRC_REG

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

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

Referenced by skip_prologue(), and store_param_on_stack_p().

◆ IS_CDFP_PSEUDOREG

#define IS_CDFP_PSEUDOREG ( tdep,
regnum )
Value:
((tdep)->ppc_cdl0_regnum >= 0 \
&& (regnum) >= (tdep)->ppc_cdl0_regnum \
&& (regnum) < (tdep)->ppc_cdl0_regnum + 16)
int regnum

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

Referenced by dfp_ax_pseudo_register_collect(), dfp_pseudo_register_read(), dfp_pseudo_register_write(), rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), and rs6000_register_name().

◆ IS_CEFP_PSEUDOREG

#define IS_CEFP_PSEUDOREG ( tdep,
regnum )
Value:
((tdep)->ppc_cefpr0_regnum >= 0 \
&& (regnum) >= (tdep)->ppc_cefpr0_regnum \
&& (regnum) < (tdep)->ppc_cefpr0_regnum + ppc_num_efprs)
@ ppc_num_efprs
Definition ppc-tdep.h:324

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

Referenced by efp_ax_pseudo_register_collect(), efp_pseudo_register_read(), efp_pseudo_register_write(), rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), and rs6000_register_name().

◆ IS_CVSX_PSEUDOREG

#define IS_CVSX_PSEUDOREG ( tdep,
regnum )
Value:
((tdep)->ppc_cvsr0_regnum >= 0 \
&& (regnum) >= (tdep)->ppc_cvsr0_regnum \
&& (regnum) < (tdep)->ppc_cvsr0_regnum + ppc_num_vsrs)
@ ppc_num_vsrs
Definition ppc-tdep.h:323

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

Referenced by rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), rs6000_register_name(), vsx_ax_pseudo_register_collect(), vsx_pseudo_register_read(), and vsx_pseudo_register_write().

◆ 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)

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

Referenced by dfp_ax_pseudo_register_collect(), dfp_pseudo_register_read(), dfp_pseudo_register_write(), rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), rs6000_pseudo_register_type(), rs6000_pseudo_register_write(), and rs6000_register_name().

◆ IS_EFP_PSEUDOREG

#define IS_EFP_PSEUDOREG ( tdep,
regnum )

◆ IS_LOAD_AND_RESERVE_INSN

#define IS_LOAD_AND_RESERVE_INSN ( insn)
Value:
#define LBARX_INSTRUCTION
#define LDARX_INSTRUCTION
#define LOAD_AND_RESERVE_MASK
#define LHARX_INSTRUCTION
#define LQARX_INSTRUCTION
#define LWARX_INSTRUCTION

◆ 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)

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

Referenced by e500_move_ev_register(), e500_pseudo_register_read(), rs6000_ax_pseudo_register_collect(), rs6000_pseudo_register_read(), 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:
#define STHCX_INSTRUCTION
#define STORE_CONDITIONAL_MASK
#define STDCX_INSTRUCTION
#define STQCX_INSTRUCTION
#define STBCX_INSTRUCTION
#define STWCX_INSTRUCTION

◆ IS_V_ALIAS_PSEUDOREG

#define IS_V_ALIAS_PSEUDOREG ( tdep,
regnum )

◆ IS_VSX_PSEUDOREG

#define IS_VSX_PSEUDOREG ( tdep,
regnum )

◆ 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

◆ OP_MASK

#define OP_MASK   0xfc000000

◆ P_PPC_D

#define P_PPC_D ( insn_prefix,
insn_suffix )
Value:
PPC_SEXT (PPC_FIELD (insn_prefix, 14, 18) << 16 \
| PPC_FIELD (insn_suffix, 16, 16), 34)
#define PPC_SEXT(v, bs)
#define PPC_FIELD(value, from, len)

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

Referenced by ppc_process_prefix_instruction(), ppc_process_record_prefix_store(), ppc_process_record_prefix_store_vsx_ds_form(), and ppc_process_record_prefix_vsx_d_form().

◆ P_PPC_TX15

#define P_PPC_TX15 ( insn_suffix)    PPC_BIT (insn_suffix, 15)

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

◆ P_PPC_TX5

#define P_PPC_TX5 ( insn_sufix)    PPC_BIT (insn_suffix, 5)

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

◆ P_PPC_XT

#define P_PPC_XT ( insn_suffix)
Value:
((PPC_TX (insn_suffix) << 5) \
| PPC_T (insn_suffix))
#define PPC_T(insn)
#define PPC_TX(insn)

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

Referenced by ppc_process_record_prefix_op34().

◆ P_PPC_XT15

#define P_PPC_XT15 ( insn_suffix)     ((P_PPC_TX15 (insn_suffix) << 5) | PPC_T (insn_suffix))

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

Referenced by ppc_process_record_prefix_op32().

◆ P_PPC_XT5

#define P_PPC_XT5 ( insn_suffix)
Value:
((P_PPC_TX5 (insn_suffix) << 5) \
| PPC_T (insn_suffix))
#define P_PPC_TX5(insn_sufix)

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

Referenced by ppc_process_record_prefix_vsx_d_form().

◆ PNOP_INSN

#define PNOP_INSN   0x07000000

◆ PNOP_MASK

#define PNOP_MASK   0xfff3ffff

◆ PPC_BIT

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

◆ PPC_BO

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

Definition at line 4119 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 4121 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 4123 of file rs6000-tdep.c.

Referenced by ppc_process_record_op6(), and ppc_process_record_op61().

◆ PPC_DS

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

Definition at line 4122 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)

◆ PPC_FIELD

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

◆ PPC_FRT

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

◆ PPC_LEV

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

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

Referenced by ppc_process_record().

◆ PPC_LK

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

Definition at line 4128 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 4114 of file rs6000-tdep.c.

Referenced by ppc_process_record_op31().

◆ PPC_OE

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

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

Referenced by ppc_process_record_op31().

◆ PPC_OP6

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

◆ PPC_RA

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

◆ PPC_RB

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

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

Referenced by ppc_process_record_op31().

◆ PPC_RC

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

◆ PPC_Rc

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

Definition at line 4127 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 4111 of file rs6000-tdep.c.

Referenced by ppc_process_record(), and ppc_process_record_op31().

◆ PPC_RT

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

◆ 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)))

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

◆ PPC_SPR

#define PPC_SPR ( insn)
Value:
(PPC_FIELD (insn, 11, 5) \
| (PPC_FIELD (insn, 16, 5) << 5))

Definition at line 4117 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 4120 of file rs6000-tdep.c.

◆ PPC_TX

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

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

◆ PPC_VRT

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

◆ PPC_XER_NB

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

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

Referenced by ppc_process_record_op31().

◆ PPC_XSp

#define PPC_XSp ( insn)
Value:
((PPC_BIT (insn, 10) << 5) \
| PPC_FIELD (insn, 6, 4) << 1)
#define PPC_BIT(insn, n)

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

◆ PPC_XT

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

◆ PPC_XTp

#define PPC_XTp ( insn)
Value:
((PPC_BIT (insn, 10) << 5) \
| PPC_FIELD (insn, 6, 4) << 1)

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

Referenced by ppc_process_prefix_instruction(), ppc_process_record_op31(), and ppc_process_record_op6().

◆ R_MASK

#define R_MASK   0x00100000

◆ R_ZERO

#define R_ZERO   0x00000000

◆ SIGNED_SHORT

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

Definition at line 1219 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 2708 of file rs6000-tdep.c.

Function Documentation

◆ _initialize_rs6000_tdep()

void _initialize_rs6000_tdep ( )

◆ altivec_register_p()

int altivec_register_p ( struct gdbarch * gdbarch,
int regno )

◆ bfd_uses_spe_extensions()

static int bfd_uses_spe_extensions ( bfd * abfd)
static

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

References size, type, 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 1309 of file rs6000-tdep.c.

References read_memory_integer().

Referenced by skip_prologue().

◆ BP_MANIPULATION_ENDIAN()

typedef BP_MANIPULATION_ENDIAN ( little_breakpoint ,
big_breakpoint  )

◆ dfp_ax_pseudo_register_collect()

static void dfp_ax_pseudo_register_collect ( struct gdbarch * gdbarch,
struct agent_expr * ax,
int reg_nr )
static

◆ dfp_pseudo_register_read()

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

◆ dfp_pseudo_register_write()

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

◆ do_regcache_raw_write()

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

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

References 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

◆ e500_pseudo_register_read()

static enum register_status e500_pseudo_register_read ( struct gdbarch * gdbarch,
readable_regcache * regcache,
int ev_reg,
gdb_byte * buffer )
static

◆ 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 2827 of file rs6000-tdep.c.

References do_regcache_raw_write(), and e500_move_ev_register().

Referenced by rs6000_pseudo_register_write().

◆ efp_ax_pseudo_register_collect()

static void efp_ax_pseudo_register_collect ( struct gdbarch * gdbarch,
struct agent_expr * ax,
int reg_nr )
static

◆ efp_pseudo_register_read()

static enum register_status efp_pseudo_register_read ( struct gdbarch * gdbarch,
readable_regcache * regcache,
int reg_nr,
gdb_byte * buffer )
static

◆ efp_pseudo_register_write()

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

◆ find_variant_by_arch()

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

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

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

Referenced by rs6000_gdbarch_init().

◆ get_ppc_per_inferior()

ppc_inferior_data * get_ppc_per_inferior ( inferior * inf)

◆ init_sim_regno_table()

static void init_sim_regno_table ( struct gdbarch * arch)
static

◆ insn_changes_sp_or_jumps()

static int insn_changes_sp_or_jumps ( unsigned long insn)
static

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

Referenced by rs6000_in_function_epilogue_frame_p().

◆ is_td_insn()

static bool is_td_insn ( uint32_t insn)
inlinestatic

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

References TD_INSN, and TX_INSN_MASK.

Referenced by rs6000_program_breakpoint_here_p().

◆ is_tdi_insn()

static bool is_tdi_insn ( uint32_t insn)
inlinestatic

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

References TDI_INSN, and TXI_INSN_MASK.

Referenced by rs6000_program_breakpoint_here_p().

◆ is_tw_insn()

static bool is_tw_insn ( uint32_t insn)
inlinestatic

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

References TW_INSN, and TX_INSN_MASK.

Referenced by rs6000_program_breakpoint_here_p().

◆ is_twi_insn()

static bool is_twi_insn ( uint32_t insn)
inlinestatic

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

References TWI_INSN, and TXI_INSN_MASK.

Referenced by rs6000_program_breakpoint_here_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 8506 of file rs6000-tdep.c.

References gdbarch_update_p().

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

◆ ppc64_update_call_site_pc()

static CORE_ADDR ppc64_update_call_site_pc ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

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

Referenced by rs6000_gdbarch_init().

◆ ppc_altivec_support_p()

int ppc_altivec_support_p ( struct gdbarch * gdbarch)

◆ ppc_collect_fpregset()

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

◆ ppc_collect_gregset()

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

◆ ppc_collect_reg()

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

◆ ppc_deal_with_atomic_sequence()

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

◆ ppc_displaced_step_finish()

static displaced_step_finish_status ppc_displaced_step_finish ( gdbarch * arch,
thread_info * thread,
const target_waitstatus & status )
static

◆ ppc_displaced_step_fixup()

static void ppc_displaced_step_fixup ( struct gdbarch * gdbarch,
struct displaced_step_copy_insn_closure * closure_,
CORE_ADDR from,
CORE_ADDR to,
struct regcache * regs,
bool completed_p )
static

◆ ppc_displaced_step_hw_singlestep()

static bool ppc_displaced_step_hw_singlestep ( struct gdbarch * gdbarch)
static

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

Referenced by rs6000_gdbarch_init().

◆ ppc_displaced_step_prepare()

static displaced_step_prepare_status ppc_displaced_step_prepare ( gdbarch * arch,
thread_info * thread,
CORE_ADDR & displaced_pc )
static

◆ ppc_displaced_step_restore_all_in_ptid()

static void ppc_displaced_step_restore_all_in_ptid ( inferior * parent_inf,
ptid_t ptid )
static

◆ ppc_dwarf2_frame_init_reg()

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

◆ ppc_floating_point_unit_p()

int ppc_floating_point_unit_p ( struct gdbarch * gdbarch)

◆ ppc_fpreg_offset()

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

◆ ppc_greg_offset()

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

◆ ppc_insn_d_field()

CORE_ADDR ppc_insn_d_field ( unsigned int insn)

◆ ppc_insn_ds_field()

CORE_ADDR ppc_insn_ds_field ( unsigned int insn)

◆ ppc_insn_prefix_dform()

CORE_ADDR ppc_insn_prefix_dform ( unsigned int insn1,
unsigned int insn2 )

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

Referenced by ppc64_pcrel_linkage1_target(), and ppc64_pcrel_linkage2_target().

◆ ppc_insns_match_pattern()

int ppc_insns_match_pattern ( frame_info_ptr frame,
CORE_ADDR pc,
const struct ppc_insn_pattern * pattern,
unsigned int * insns )

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

References ppc_insn_pattern::mask, and read_insn().

Referenced by ppc64_skip_trampoline_code_1(), and ppc_skip_trampoline_code().

◆ ppc_process_prefix_instruction()

static int ppc_process_prefix_instruction ( int insn_prefix,
int insn_suffix,
CORE_ADDR addr,
struct gdbarch * gdbarch,
struct regcache * regcache )
static

◆ ppc_process_record()

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

◆ ppc_process_record_op19()

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

◆ ppc_process_record_op31()

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

◆ ppc_process_record_op31_177()

static int ppc_process_record_op31_177 ( struct gdbarch * gdbarch,
struct regcache * regcache,
uint32_t insn )
static

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

References PPC_FIELD, PPC_RA, and ppc_record_ACC_fpscr().

Referenced by ppc_process_record_op31().

◆ ppc_process_record_op4()

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

◆ ppc_process_record_op59()

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

◆ ppc_process_record_op6()

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

◆ ppc_process_record_op60()

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

◆ ppc_process_record_op60_XX2()

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

◆ ppc_process_record_op61()

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

◆ ppc_process_record_op63()

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

◆ ppc_process_record_prefix_op32()

static int ppc_process_record_prefix_op32 ( struct gdbarch * gdbarch,
struct regcache * regcache,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

◆ ppc_process_record_prefix_op33()

static int ppc_process_record_prefix_op33 ( struct gdbarch * gdbarch,
struct regcache * regcache,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

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

References PPC_FIELD, ppc_record_vsr(), and PPC_XT.

Referenced by ppc_process_prefix_instruction().

◆ ppc_process_record_prefix_op34()

static int ppc_process_record_prefix_op34 ( struct gdbarch * gdbarch,
struct regcache * regcache,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

◆ ppc_process_record_prefix_op42()

static int ppc_process_record_prefix_op42 ( struct gdbarch * gdbarch,
struct regcache * regcache,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

◆ ppc_process_record_prefix_op59_XX3()

static int ppc_process_record_prefix_op59_XX3 ( struct gdbarch * gdbarch,
struct regcache * regcache,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

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

References PPC_FIELD, and ppc_record_ACC_fpscr().

Referenced by ppc_process_prefix_instruction().

◆ ppc_process_record_prefix_store()

static int ppc_process_record_prefix_store ( struct gdbarch * gdbarch,
struct regcache * regcache,
CORE_ADDR addr,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

◆ ppc_process_record_prefix_store_vsx_ds_form()

static int ppc_process_record_prefix_store_vsx_ds_form ( struct gdbarch * gdbarch,
struct regcache * regcache,
CORE_ADDR addr,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

◆ ppc_process_record_prefix_vsx_d_form()

static int ppc_process_record_prefix_vsx_d_form ( struct gdbarch * gdbarch,
struct regcache * regcache,
CORE_ADDR addr,
uint32_t insn_prefix,
uint32_t insn_suffix )
static

◆ ppc_record_ACC_fpscr()

static int ppc_record_ACC_fpscr ( struct regcache * regcache,
ppc_gdbarch_tdep * tdep,
int entry,
bool save_fpscr )
static

◆ ppc_record_vsr()

static int ppc_record_vsr ( struct regcache * regcache,
ppc_gdbarch_tdep * tdep,
int vsr )
static

◆ ppc_supply_fpregset()

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

◆ ppc_supply_gregset()

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

◆ ppc_supply_reg()

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

◆ read_insn()

static unsigned int read_insn ( frame_info_ptr frame,
CORE_ADDR pc )
static

◆ rs6000_adjust_frame_regnum()

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

Definition at line 3396 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

◆ rs6000_builtin_type_vec128()

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

◆ rs6000_builtin_type_vec64()

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

◆ rs6000_convert_register_p()

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

◆ rs6000_dump_tdep()

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

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

Referenced by _initialize_rs6000_tdep().

◆ rs6000_dwarf2_reg_to_regnum()

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

◆ rs6000_epilogue_frame_cache()

static struct rs6000_frame_cache * rs6000_epilogue_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ rs6000_epilogue_frame_prev_register()

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

◆ rs6000_epilogue_frame_sniffer()

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

◆ rs6000_epilogue_frame_this_id()

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

◆ rs6000_fetch_instruction()

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

◆ rs6000_fetch_pointer_argument()

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

Definition at line 819 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 2269 of file rs6000-tdep.c.

Referenced by rs6000_gdbarch_init().

◆ rs6000_frame_base_address()

static CORE_ADDR rs6000_frame_base_address ( frame_info_ptr this_frame,
void ** this_cache )
static

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

References rs6000_frame_cache().

◆ rs6000_frame_base_sniffer()

static const struct frame_base * rs6000_frame_base_sniffer ( frame_info_ptr this_frame)
static

Definition at line 3915 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 ( frame_info_ptr this_frame,
void ** this_cache )
static

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

References rs6000_framedata::alloca_reg, rs6000_frame_cache::base, rs6000_frame_cache::base_p, rs6000_framedata::cr_offset, rs6000_framedata::ev_offset, rs6000_framedata::fpr_offset, FRAME_OBSTACK_ZALLOC, rs6000_framedata::frameless, func, gdbarch_byte_order(), gdbarch_pc_regnum(), gdbarch_sp_regnum(), 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, ppc_gdbarch_tdep::lr_frame_offset, rs6000_framedata::lr_offset, rs6000_framedata::lr_register, rs6000_frame_cache::pc, ppc_gdbarch_tdep::ppc_cr_regnum, ppc_gdbarch_tdep::ppc_ev0_regnum, ppc_floating_point_unit_p(), ppc_gdbarch_tdep::ppc_fp0_regnum, ppc_gdbarch_tdep::ppc_gp0_regnum, ppc_gdbarch_tdep::ppc_lr_regnum, ppc_num_fprs, ppc_num_gprs, ppc_gdbarch_tdep::ppc_vr0_regnum, ppc_gdbarch_tdep::ppc_vrsave_regnum, register_size(), 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, trad_frame_saved_reg::set_addr(), trad_frame_saved_reg::set_realreg(), trad_frame_saved_reg::set_value(), skip_prologue(), trad_frame_alloc_saved_regs(), rs6000_framedata::vr_offset, rs6000_framedata::vrsave_offset, and ppc_gdbarch_tdep::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 ( frame_info_ptr this_frame,
void ** this_cache,
int regnum )
static

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

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

◆ rs6000_frame_this_id()

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

◆ rs6000_gdbarch_init()

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

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

References ppc_variant::arch, target_desc::arch, arches, AUTO_BOOLEAN_AUTO, AUTO_BOOLEAN_FALSE, AUTO_BOOLEAN_TRUE, bfd_uses_spe_extensions(), core_addr_lessthan(), dwarf2_append_unwinders(), dwarf2_frame_set_adjust_regnum(), dwarf2_frame_set_init_reg(), find_variant_by_arch(), frame_base_append_sniffer(), frame_unwind_append_unwinder(), GDB_OSABI_LINUX, GDB_OSABI_NETBSD, GDB_OSABI_UNKNOWN, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), gdbarch_num_cooked_regs(), gdbarch_num_regs(), registry< T >::get(), ppc_gdbarch_tdep::have_ebb, ppc_gdbarch_tdep::have_htm_altivec, ppc_gdbarch_tdep::have_htm_core, ppc_gdbarch_tdep::have_htm_fpu, ppc_gdbarch_tdep::have_htm_spr, ppc_gdbarch_tdep::have_htm_vsx, ppc_gdbarch_tdep::lr_frame_offset, ppc_variant::mach, 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(), ppc64_update_call_site_pc(), ppc_gdbarch_tdep::ppc_acc_regnum, PPC_BESCR_REGNUM, ppc_gdbarch_tdep::ppc_cdl0_regnum, ppc_gdbarch_tdep::ppc_cdscr_regnum, PPC_CDSCR_REGNUM, ppc_gdbarch_tdep::ppc_cefpr0_regnum, PPC_CF0_REGNUM, ppc_gdbarch_tdep::ppc_cppr_regnum, PPC_CPPR_REGNUM, PPC_CR0_REGNUM, ppc_gdbarch_tdep::ppc_cr_regnum, PPC_CR_REGNUM, ppc_gdbarch_tdep::ppc_ctar_regnum, PPC_CTAR_REGNUM, ppc_gdbarch_tdep::ppc_ctr_regnum, PPC_CTR_REGNUM, PPC_CVR0_REGNUM, ppc_gdbarch_tdep::ppc_cvsr0_regnum, PPC_CVSR0_UPPER_REGNUM, ppc_deal_with_atomic_sequence(), ppc_displaced_step_finish(), ppc_displaced_step_fixup(), ppc_displaced_step_hw_singlestep(), ppc_displaced_step_prepare(), ppc_displaced_step_restore_all_in_ptid(), ppc_gdbarch_tdep::ppc_dl0_regnum, ppc_gdbarch_tdep::ppc_dscr_regnum, PPC_DSCR_REGNUM, ppc_dwarf2_frame_init_reg(), ppc_gdbarch_tdep::ppc_efpr0_regnum, ppc_gdbarch_tdep::ppc_ev0_regnum, ppc_gdbarch_tdep::ppc_ev0_upper_regnum, PPC_F0_REGNUM, ppc_gdbarch_tdep::ppc_fp0_regnum, ppc_gdbarch_tdep::ppc_fpscr_regnum, PPC_FPSCR_REGNUM, ppc_gdbarch_tdep::ppc_gp0_regnum, PPC_INSN_SIZE, ppc_gdbarch_tdep::ppc_lr_regnum, PPC_LR_REGNUM, ppc_gdbarch_tdep::ppc_mmcr0_regnum, PPC_MMCR0_REGNUM, ppc_gdbarch_tdep::ppc_mmcr2_regnum, PPC_MMCR2_REGNUM, ppc_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, ppc_gdbarch_tdep::ppc_ppr_regnum, PPC_PPR_REGNUM, ppc_gdbarch_tdep::ppc_ps_regnum, PPC_R0_REGNUM, ppc_gdbarch_tdep::ppc_sdar_regnum, PPC_SDAR_REGNUM, ppc_gdbarch_tdep::ppc_siar_regnum, PPC_SIAR_REGNUM, ppc_gdbarch_tdep::ppc_sier_regnum, PPC_SIER_REGNUM, PPC_SPE_ACC_REGNUM, PPC_SPE_FSCR_REGNUM, PPC_SPE_UPPER_GP0_REGNUM, ppc_gdbarch_tdep::ppc_spefscr_regnum, ppc_sysv_abi_push_dummy_call(), ppc_sysv_abi_return_value(), ppc_sysv_get_return_buf_addr(), ppc_gdbarch_tdep::ppc_tar_regnum, PPC_TAR_REGNUM, PPC_TFHAR_REGNUM, ppc_gdbarch_tdep::ppc_toc_regnum, ppc_gdbarch_tdep::ppc_v0_alias_regnum, ppc_gdbarch_tdep::ppc_vr0_regnum, PPC_VR0_REGNUM, ppc_gdbarch_tdep::ppc_vrsave_regnum, PPC_VRSAVE_REGNUM, PPC_VSCR_REGNUM, ppc_gdbarch_tdep::ppc_vsr0_regnum, ppc_gdbarch_tdep::ppc_vsr0_upper_regnum, PPC_VSR0_UPPER_REGNUM, ppc_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_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_program_breakpoint_here_p(), 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_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_buffer_length(), set_gdbarch_displaced_step_copy_insn(), set_gdbarch_displaced_step_finish(), set_gdbarch_displaced_step_fixup(), set_gdbarch_displaced_step_hw_singlestep(), set_gdbarch_displaced_step_prepare(), set_gdbarch_displaced_step_restore_all_in_ptid(), set_gdbarch_double_bit(), 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_get_return_buf_addr(), 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_program_breakpoint_here_p(), 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_update_call_site_pc(), set_gdbarch_valid_disassembler_options(), set_gdbarch_value_to_register(), set_tdesc_pseudo_register_reggroup_p(), set_tdesc_pseudo_register_type(), ppc_gdbarch_tdep::soft_float, ppc_variant::tdesc, tdesc_data, tdesc_data_alloc(), tdesc_find_feature(), tdesc_has_registers(), tdesc_numbered_register(), tdesc_numbered_register_choices(), tdesc_register_bitsize(), tdesc_use_registers(), and ppc_gdbarch_tdep::wordsize.

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

◆ rs6000_in_function_epilogue_frame_p()

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

◆ 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 2298 of file rs6000-tdep.c.

References name.

Referenced by rs6000_gdbarch_init(), and rs6000_skip_trampoline_code().

◆ rs6000_program_breakpoint_here_p()

static bool rs6000_program_breakpoint_here_p ( gdbarch * gdbarch,
CORE_ADDR address )
static

◆ rs6000_pseudo_register_read()

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

◆ rs6000_pseudo_register_reggroup_p()

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

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

References default_register_reggroup_p(), IS_V_ALIAS_PSEUDOREG, and regnum.

Referenced by rs6000_gdbarch_init().

◆ rs6000_pseudo_register_type()

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

◆ rs6000_pseudo_register_write()

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

◆ rs6000_register_name()

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

◆ rs6000_register_sim_regno()

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

◆ rs6000_register_to_value()

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

◆ rs6000_skip_main_prologue()

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

◆ rs6000_skip_prologue()

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

◆ rs6000_skip_stack_check()

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

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

References rs6000_fetch_instruction().

Referenced by skip_prologue().

◆ rs6000_skip_trampoline_code()

static CORE_ADDR rs6000_skip_trampoline_code ( frame_info_ptr frame,
CORE_ADDR pc )
static

◆ rs6000_stab_reg_to_regnum()

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

◆ rs6000_stack_frame_destroyed_p()

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

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

References get_current_frame(), and rs6000_in_function_epilogue_frame_p().

Referenced by rs6000_gdbarch_init().

◆ rs6000_value_to_register()

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

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

Referenced by rs6000_gdbarch_init().

◆ set_sim_regno()

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

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

Referenced by init_sim_regno_table().

◆ 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 8545 of file rs6000-tdep.c.

References gdb_printf().

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

◆ spe_register_p()

int spe_register_p ( struct gdbarch * gdbarch,
int regno )

◆ store_insn_p()

static bool store_insn_p ( unsigned long op,
unsigned long rs,
unsigned long ra,
bool with_update )
static

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

Referenced by skip_prologue().

◆ 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 1236 of file rs6000-tdep.c.

References GET_SRC_REG.

Referenced by skip_prologue().

◆ v_alias_pseudo_register_collect()

static void v_alias_pseudo_register_collect ( struct gdbarch * gdbarch,
struct agent_expr * ax,
int reg_nr )
static

◆ v_alias_pseudo_register_read()

static enum register_status v_alias_pseudo_register_read ( struct gdbarch * gdbarch,
readable_regcache * regcache,
int reg_nr,
gdb_byte * buffer )
static

◆ v_alias_pseudo_register_write()

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

◆ vsx_ax_pseudo_register_collect()

static void vsx_ax_pseudo_register_collect ( struct gdbarch * gdbarch,
struct agent_expr * ax,
int reg_nr )
static

◆ vsx_pseudo_register_read()

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

◆ vsx_pseudo_register_write()

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

◆ vsx_register_p()

int vsx_register_p ( struct gdbarch * gdbarch,
int regno )

Variable Documentation

◆ big_breakpoint

constexpr gdb_byte big_breakpoint[] = { 0x7f, 0xe0, 0x00, 0x08 }
constexpr

◆ little_breakpoint

constexpr gdb_byte little_breakpoint[] = { 0x08, 0x00, 0xe0, 0x7f }
constexpr

◆ max_skip_non_prologue_insns

int max_skip_non_prologue_insns = 10
static

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

Referenced by skip_prologue().

◆ powerpc_disassembler_options

char* powerpc_disassembler_options
static

Definition at line 133 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 140 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 153 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 154 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 143 of file rs6000-tdep.c.

Referenced by _initialize_rs6000_tdep(), and powerpc_set_vector_abi().

◆ ppc_inferior_data_key

const registry<inferior>::key<ppc_inferior_data> ppc_inferior_data_key
static

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

Referenced by get_ppc_per_inferior(), and ppc_displaced_step_restore_all_in_ptid().

◆ rs6000_epilogue_frame_unwind

const struct frame_unwind rs6000_epilogue_frame_unwind
static
Initial value:
=
{
"rs6000 epilogue",
NULL,
}
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
@ NORMAL_FRAME
Definition frame.h:187
static void rs6000_epilogue_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
static int rs6000_epilogue_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
static struct value * rs6000_epilogue_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)

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

Referenced by rs6000_gdbarch_init().

◆ rs6000_frame_base

const struct frame_base rs6000_frame_base
static
Initial value:
= {
}
static const struct frame_unwind rs6000_frame_unwind
static CORE_ADDR rs6000_frame_base_address(frame_info_ptr this_frame, void **this_cache)

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

Referenced by rs6000_frame_base_sniffer().

◆ rs6000_frame_unwind

const struct frame_unwind rs6000_frame_unwind
static
Initial value:
=
{
"rs6000 prologue",
NULL,
}
int default_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
static void rs6000_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
static struct value * rs6000_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)

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

Referenced by rs6000_gdbarch_init().

◆ setpowerpccmdlist

struct cmd_list_element* setpowerpccmdlist = NULL
static

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

Referenced by _initialize_rs6000_tdep().

◆ showpowerpccmdlist

struct cmd_list_element* showpowerpccmdlist = NULL
static

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

Referenced by _initialize_rs6000_tdep().

◆ TD_INSN

constexpr uint32_t TD_INSN = 0x7C000088
staticconstexpr

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

Referenced by is_td_insn().

◆ TDI_INSN

constexpr uint32_t TDI_INSN = 0x08000000
staticconstexpr

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

Referenced by is_tdi_insn().

◆ TW_INSN

constexpr uint32_t TW_INSN = 0x7C000008
staticconstexpr

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

Referenced by is_tw_insn().

◆ TWI_INSN

constexpr uint32_t TWI_INSN = 0x0C000000
staticconstexpr

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

Referenced by is_twi_insn().

◆ TX_INSN_MASK

constexpr uint32_t TX_INSN_MASK = 0xFC0007FF
staticconstexpr

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

Referenced by is_td_insn(), and is_tw_insn().

◆ TXI_INSN_MASK

constexpr uint32_t TXI_INSN_MASK = 0xFC000000
staticconstexpr

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

Referenced by is_tdi_insn(), and is_twi_insn().

◆ variants

struct ppc_variant variants[]
static

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

Referenced by alloc_rust_variant(), and find_variant_by_arch().