GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Enumerations | Functions | Variables
ppc-tdep.h File Reference
#include "gdbarch.h"

Go to the source code of this file.

Classes

struct  ppc_reg_offsets
 
struct  ppc_gdbarch_tdep
 
struct  ppc_insn_pattern
 
struct  ppc_inferior_data
 

Macros

#define PPC_MAX_REGISTER_SIZE   64
 
#define PPC_IS_EBB_REGNUM(i)    ((i) >= PPC_BESCR_REGNUM && (i) <= PPC_EBBRR_REGNUM)
 
#define PPC_IS_PMU_REGNUM(i)    ((i) >= PPC_MMCR0_REGNUM && (i) <= PPC_SIER_REGNUM)
 
#define PPC_IS_TMSPR_REGNUM(i)    ((i) >= PPC_TFHAR_REGNUM && (i) <= PPC_TFIAR_REGNUM)
 
#define PPC_IS_CKPTGP_REGNUM(i)    ((i) >= PPC_CR0_REGNUM && (i) <= PPC_CCTR_REGNUM)
 
#define PPC_IS_CKPTFP_REGNUM(i)    ((i) >= PPC_CF0_REGNUM && (i) <= PPC_CFPSCR_REGNUM)
 
#define PPC_IS_CKPTVMX_REGNUM(i)    ((i) >= PPC_CVR0_REGNUM && (i) <= PPC_CVRSAVE_REGNUM)
 
#define PPC_IS_CKPTVSX_REGNUM(i)    ((i) >= PPC_CVSR0_UPPER_REGNUM && (i) < (PPC_CVSR0_UPPER_REGNUM + 32))
 
#define PPC_INSN_SIZE   4
 
#define PPC_MAX_EPILOGUE_INSTRUCTIONS   52
 

Enumerations

enum  powerpc_elf_abi { POWERPC_ELF_AUTO , POWERPC_ELF_V1 , POWERPC_ELF_V2 , POWERPC_ELF_LAST }
 
enum  powerpc_vector_abi {
  POWERPC_VEC_AUTO , POWERPC_VEC_GENERIC , POWERPC_VEC_ALTIVEC , POWERPC_VEC_SPE ,
  POWERPC_VEC_LAST
}
 
enum  powerpc_long_double_abi { POWERPC_LONG_DOUBLE_AUTO , POWERPC_LONG_DOUBLE_IBM128 , POWERPC_LONG_DOUBLE_IEEE128 , POWERPC_LONG_DOUBLE_LAST }
 
enum  {
  ppc_num_gprs = 32 , ppc_num_fprs = 32 , ppc_num_srs = 16 , ppc_num_vrs = 32 ,
  ppc_num_vshrs = 32 , ppc_num_vsrs = 64 , ppc_num_efprs = 32
}
 
enum  {
  PPC_R0_REGNUM = 0 , PPC_F0_REGNUM = 32 , PPC_PC_REGNUM = 64 , PPC_MSR_REGNUM = 65 ,
  PPC_CR_REGNUM = 66 , PPC_LR_REGNUM = 67 , PPC_CTR_REGNUM = 68 , PPC_XER_REGNUM = 69 ,
  PPC_FPSCR_REGNUM = 70 , PPC_MQ_REGNUM = 71 , PPC_SPE_UPPER_GP0_REGNUM = 72 , PPC_SPE_ACC_REGNUM = 104 ,
  PPC_SPE_FSCR_REGNUM = 105 , PPC_VR0_REGNUM = 106 , PPC_VSCR_REGNUM = 138 , PPC_VRSAVE_REGNUM = 139 ,
  PPC_VSR0_UPPER_REGNUM = 140 , PPC_VSR31_UPPER_REGNUM = 171 , PPC_PPR_REGNUM = 172 , PPC_DSCR_REGNUM = 173 ,
  PPC_TAR_REGNUM = 174 , PPC_BESCR_REGNUM = 175 , PPC_EBBHR_REGNUM = 176 , PPC_EBBRR_REGNUM = 177 ,
  PPC_MMCR0_REGNUM = 178 , PPC_MMCR2_REGNUM = 179 , PPC_SIAR_REGNUM = 180 , PPC_SDAR_REGNUM = 181 ,
  PPC_SIER_REGNUM = 182 , PPC_TFHAR_REGNUM = 183 , PPC_TEXASR_REGNUM = 184 , PPC_TFIAR_REGNUM = 185 ,
  PPC_CR0_REGNUM = 186 , PPC_CCR_REGNUM = 218 , PPC_CXER_REGNUM = 219 , PPC_CLR_REGNUM = 220 ,
  PPC_CCTR_REGNUM = 221 , PPC_CF0_REGNUM = 222 , PPC_CFPSCR_REGNUM = 254 , PPC_CVR0_REGNUM = 255 ,
  PPC_CVSCR_REGNUM = 287 , PPC_CVRSAVE_REGNUM = 288 , PPC_CVSR0_UPPER_REGNUM = 289 , PPC_CPPR_REGNUM = 321 ,
  PPC_CDSCR_REGNUM = 322 , PPC_CTAR_REGNUM = 323 , PPC_NUM_REGS
}
 

Functions

enum return_value_convention ppc_sysv_abi_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
enum return_value_convention ppc_sysv_abi_broken_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
CORE_ADDR ppc_sysv_abi_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr)
 
CORE_ADDR ppc64_sysv_abi_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr)
 
enum return_value_convention ppc64_sysv_abi_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
int altivec_register_p (struct gdbarch *gdbarch, int regno)
 
int vsx_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)
 
int vsx_support_p (struct gdbarch *gdbarch)
 
std::vector< CORE_ADDR > ppc_deal_with_atomic_sequence (struct regcache *regcache)
 
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)
 
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_vrregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *vrregs, size_t len)
 
void ppc_supply_vsxregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *vsxregs, 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_vrregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *vrregs, size_t len)
 
void ppc_collect_vsxregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *vsxregs, size_t len)
 
CORE_ADDR ppc_sysv_get_return_buf_addr (type *, frame_info_ptr)
 
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)
 
int ppc_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
 
ppc_inferior_dataget_ppc_per_inferior (inferior *inf)
 

Variables

const struct target_desctdesc_powerpc_vsx64l
 
const struct target_desctdesc_powerpc_vsx64
 
const struct target_desctdesc_powerpc_vsx32
 
const struct target_desctdesc_powerpc_altivec64
 
const struct target_desctdesc_powerpc_altivec32
 

Macro Definition Documentation

◆ PPC_INSN_SIZE

#define PPC_INSN_SIZE   4

◆ PPC_IS_CKPTFP_REGNUM

#define PPC_IS_CKPTFP_REGNUM ( i)     ((i) >= PPC_CF0_REGNUM && (i) <= PPC_CFPSCR_REGNUM)

Definition at line 409 of file ppc-tdep.h.

Referenced by fetch_register(), and store_register().

◆ PPC_IS_CKPTGP_REGNUM

#define PPC_IS_CKPTGP_REGNUM ( i)     ((i) >= PPC_CR0_REGNUM && (i) <= PPC_CCTR_REGNUM)

Definition at line 406 of file ppc-tdep.h.

Referenced by fetch_register(), and store_register().

◆ PPC_IS_CKPTVMX_REGNUM

#define PPC_IS_CKPTVMX_REGNUM ( i)     ((i) >= PPC_CVR0_REGNUM && (i) <= PPC_CVRSAVE_REGNUM)

Definition at line 412 of file ppc-tdep.h.

Referenced by fetch_register(), and store_register().

◆ PPC_IS_CKPTVSX_REGNUM

#define PPC_IS_CKPTVSX_REGNUM ( i)     ((i) >= PPC_CVSR0_UPPER_REGNUM && (i) < (PPC_CVSR0_UPPER_REGNUM + 32))

Definition at line 415 of file ppc-tdep.h.

Referenced by fetch_register(), and store_register().

◆ PPC_IS_EBB_REGNUM

#define PPC_IS_EBB_REGNUM ( i)     ((i) >= PPC_BESCR_REGNUM && (i) <= PPC_EBBRR_REGNUM)

Definition at line 397 of file ppc-tdep.h.

Referenced by fetch_register(), and store_register().

◆ PPC_IS_PMU_REGNUM

#define PPC_IS_PMU_REGNUM ( i)     ((i) >= PPC_MMCR0_REGNUM && (i) <= PPC_SIER_REGNUM)

Definition at line 400 of file ppc-tdep.h.

Referenced by fetch_register(), and store_register().

◆ PPC_IS_TMSPR_REGNUM

#define PPC_IS_TMSPR_REGNUM ( i)     ((i) >= PPC_TFHAR_REGNUM && (i) <= PPC_TFIAR_REGNUM)

Definition at line 403 of file ppc-tdep.h.

Referenced by fetch_register(), and store_register().

◆ PPC_MAX_EPILOGUE_INSTRUCTIONS

#define PPC_MAX_EPILOGUE_INSTRUCTIONS   52

Definition at line 443 of file ppc-tdep.h.

Referenced by rs6000_in_function_epilogue_frame_p().

◆ PPC_MAX_REGISTER_SIZE

#define PPC_MAX_REGISTER_SIZE   64

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
ppc_num_gprs 
ppc_num_fprs 
ppc_num_srs 
ppc_num_vrs 
ppc_num_vshrs 
ppc_num_vsrs 
ppc_num_efprs 

Definition at line 316 of file ppc-tdep.h.

◆ anonymous enum

anonymous enum
Enumerator
PPC_R0_REGNUM 
PPC_F0_REGNUM 
PPC_PC_REGNUM 
PPC_MSR_REGNUM 
PPC_CR_REGNUM 
PPC_LR_REGNUM 
PPC_CTR_REGNUM 
PPC_XER_REGNUM 
PPC_FPSCR_REGNUM 
PPC_MQ_REGNUM 
PPC_SPE_UPPER_GP0_REGNUM 
PPC_SPE_ACC_REGNUM 
PPC_SPE_FSCR_REGNUM 
PPC_VR0_REGNUM 
PPC_VSCR_REGNUM 
PPC_VRSAVE_REGNUM 
PPC_VSR0_UPPER_REGNUM 
PPC_VSR31_UPPER_REGNUM 
PPC_PPR_REGNUM 
PPC_DSCR_REGNUM 
PPC_TAR_REGNUM 
PPC_BESCR_REGNUM 
PPC_EBBHR_REGNUM 
PPC_EBBRR_REGNUM 
PPC_MMCR0_REGNUM 
PPC_MMCR2_REGNUM 
PPC_SIAR_REGNUM 
PPC_SDAR_REGNUM 
PPC_SIER_REGNUM 
PPC_TFHAR_REGNUM 
PPC_TEXASR_REGNUM 
PPC_TFIAR_REGNUM 
PPC_CR0_REGNUM 
PPC_CCR_REGNUM 
PPC_CXER_REGNUM 
PPC_CLR_REGNUM 
PPC_CCTR_REGNUM 
PPC_CF0_REGNUM 
PPC_CFPSCR_REGNUM 
PPC_CVR0_REGNUM 
PPC_CVSCR_REGNUM 
PPC_CVRSAVE_REGNUM 
PPC_CVSR0_UPPER_REGNUM 
PPC_CPPR_REGNUM 
PPC_CDSCR_REGNUM 
PPC_CTAR_REGNUM 
PPC_NUM_REGS 

Definition at line 333 of file ppc-tdep.h.

◆ powerpc_elf_abi

Enumerator
POWERPC_ELF_AUTO 
POWERPC_ELF_V1 
POWERPC_ELF_V2 
POWERPC_ELF_LAST 

Definition at line 185 of file ppc-tdep.h.

◆ powerpc_long_double_abi

Enumerator
POWERPC_LONG_DOUBLE_AUTO 
POWERPC_LONG_DOUBLE_IBM128 
POWERPC_LONG_DOUBLE_IEEE128 
POWERPC_LONG_DOUBLE_LAST 

Definition at line 204 of file ppc-tdep.h.

◆ powerpc_vector_abi

Enumerator
POWERPC_VEC_AUTO 
POWERPC_VEC_GENERIC 
POWERPC_VEC_ALTIVEC 
POWERPC_VEC_SPE 
POWERPC_VEC_LAST 

Definition at line 194 of file ppc-tdep.h.

Function Documentation

◆ altivec_register_p()

int altivec_register_p ( struct gdbarch * gdbarch,
int regno )

◆ get_ppc_per_inferior()

ppc_inferior_data * get_ppc_per_inferior ( inferior * inf)
extern

◆ ppc64_sysv_abi_push_dummy_call()

CORE_ADDR ppc64_sysv_abi_push_dummy_call ( struct gdbarch * gdbarch,
struct value * function,
struct regcache * regcache,
CORE_ADDR bp_addr,
int nargs,
struct value ** args,
CORE_ADDR sp,
function_call_return_method return_method,
CORE_ADDR struct_addr )

◆ ppc64_sysv_abi_return_value()

enum return_value_convention ppc64_sysv_abi_return_value ( struct gdbarch * gdbarch,
struct value * function,
struct type * valtype,
struct regcache * regcache,
gdb_byte * readbuf,
const gdb_byte * writebuf )

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

◆ ppc_collect_gregset()

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

◆ ppc_collect_reg()

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

◆ ppc_collect_vrregset()

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

◆ ppc_collect_vsxregset()

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

◆ ppc_deal_with_atomic_sequence()

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

◆ ppc_floating_point_unit_p()

int ppc_floating_point_unit_p ( struct gdbarch * gdbarch)

◆ ppc_insn_d_field()

CORE_ADDR ppc_insn_d_field ( unsigned int insn)
extern

◆ ppc_insn_ds_field()

CORE_ADDR ppc_insn_ds_field ( unsigned int insn)
extern

◆ ppc_insn_prefix_dform()

CORE_ADDR ppc_insn_prefix_dform ( unsigned int insn1,
unsigned int insn2 )
extern

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

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_record()

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

◆ ppc_supply_fpregset()

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

◆ ppc_supply_gregset()

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

◆ ppc_supply_reg()

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

◆ ppc_supply_vrregset()

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

◆ ppc_supply_vsxregset()

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

◆ ppc_sysv_abi_broken_return_value()

enum return_value_convention ppc_sysv_abi_broken_return_value ( struct gdbarch * gdbarch,
struct value * function,
struct type * valtype,
struct regcache * regcache,
gdb_byte * readbuf,
const gdb_byte * writebuf )

◆ ppc_sysv_abi_push_dummy_call()

CORE_ADDR ppc_sysv_abi_push_dummy_call ( struct gdbarch * gdbarch,
struct value * function,
struct regcache * regcache,
CORE_ADDR bp_addr,
int nargs,
struct value ** args,
CORE_ADDR sp,
function_call_return_method return_method,
CORE_ADDR struct_addr )

◆ ppc_sysv_abi_return_value()

enum return_value_convention ppc_sysv_abi_return_value ( struct gdbarch * gdbarch,
struct value * function,
struct type * valtype,
struct regcache * regcache,
gdb_byte * readbuf,
const gdb_byte * writebuf )

Definition at line 1011 of file ppc-sysv-tdep.c.

References do_ppc_sysv_return_value(), and value::type().

Referenced by ppc_linux_return_value(), and rs6000_gdbarch_init().

◆ ppc_sysv_get_return_buf_addr()

CORE_ADDR ppc_sysv_get_return_buf_addr ( type * val_type,
frame_info_ptr cur_frame )
extern

◆ spe_register_p()

int spe_register_p ( struct gdbarch * gdbarch,
int regno )

◆ vsx_register_p()

int vsx_register_p ( struct gdbarch * gdbarch,
int regno )

◆ vsx_support_p()

int vsx_support_p ( struct gdbarch * gdbarch)

Variable Documentation

◆ tdesc_powerpc_altivec32

const struct target_desc* tdesc_powerpc_altivec32
extern

◆ tdesc_powerpc_altivec64

const struct target_desc* tdesc_powerpc_altivec64
extern

◆ tdesc_powerpc_vsx32

const struct target_desc* tdesc_powerpc_vsx32
extern

◆ tdesc_powerpc_vsx64

const struct target_desc* tdesc_powerpc_vsx64
extern

◆ tdesc_powerpc_vsx64l

const struct target_desc* tdesc_powerpc_vsx64l
extern

Definition at line 8 of file powerpc-vsx64l.c.

Referenced by initialize_tdesc_powerpc_vsx64l().