29 #include <sys/types.h> 32 #include <sys/ioctl.h> 35 #include <sys/procfs.h> 45 #include "elf/common.h" 52 #ifndef PTRACE_GET_DEBUGREG 53 #define PTRACE_GET_DEBUGREG 25 55 #ifndef PTRACE_SET_DEBUGREG 56 #define PTRACE_SET_DEBUGREG 26 58 #ifndef PTRACE_GETSIGINFO 59 #define PTRACE_GETSIGINFO 0x4202 66 #ifndef PPC_PTRACE_GETHWDBGINFO 71 #define PPC_PTRACE_GETHWDBGINFO 0x89 72 #define PPC_PTRACE_SETHWDEBUG 0x88 73 #define PPC_PTRACE_DELHWDEBUG 0x87 87 #define PPC_DEBUG_FEATURE_INSN_BP_RANGE 0x1 88 #define PPC_DEBUG_FEATURE_INSN_BP_MASK 0x2 89 #define PPC_DEBUG_FEATURE_DATA_BP_RANGE 0x4 90 #define PPC_DEBUG_FEATURE_DATA_BP_MASK 0x8 104 #define PPC_BREAKPOINT_TRIGGER_EXECUTE 0x1 105 #define PPC_BREAKPOINT_TRIGGER_READ 0x2 106 #define PPC_BREAKPOINT_TRIGGER_WRITE 0x4 107 #define PPC_BREAKPOINT_TRIGGER_RW 0x6 110 #define PPC_BREAKPOINT_MODE_EXACT 0x0 111 #define PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE 0x1 112 #define PPC_BREAKPOINT_MODE_RANGE_EXCLUSIVE 0x2 113 #define PPC_BREAKPOINT_MODE_MASK 0x3 116 #define PPC_BREAKPOINT_CONDITION_NONE 0x0 117 #define PPC_BREAKPOINT_CONDITION_AND 0x1 118 #define PPC_BREAKPOINT_CONDITION_EXACT 0x1 119 #define PPC_BREAKPOINT_CONDITION_OR 0x2 120 #define PPC_BREAKPOINT_CONDITION_AND_OR 0x3 121 #define PPC_BREAKPOINT_CONDITION_BE_ALL 0x00ff0000 122 #define PPC_BREAKPOINT_CONDITION_BE_SHIFT 16 123 #define PPC_BREAKPOINT_CONDITION_BE(n) \ 124 (1<<((n)+PPC_BREAKPOINT_CONDITION_BE_SHIFT)) 129 #ifndef PPC_DEBUG_FEATURE_DATA_BP_DAWR 130 #define PPC_DEBUG_FEATURE_DATA_BP_DAWR 0x10 135 #ifndef PTRACE_GETREGS 136 #define PTRACE_GETREGS 12 138 #ifndef PTRACE_SETREGS 139 #define PTRACE_SETREGS 13 141 #ifndef PTRACE_GETFPREGS 142 #define PTRACE_GETFPREGS 14 144 #ifndef PTRACE_SETFPREGS 145 #define PTRACE_SETFPREGS 15 175 #define SIZEOF_VRREGS 33*16+4 211 #define SIZEOF_VSXREGS 32*8 340 if (
wordsize == 8 && PT_FPSCR == (48 + 32 + 1))
346 && PT_FPSCR == (48 + 2*32 + 1))
445 memset (evrregset, 0,
sizeof (*evrregset));
498 int bytes_transferred;
541 for (bytes_transferred = 0;
543 bytes_transferred +=
sizeof (
long))
549 regaddr +=
sizeof (
long);
553 xsnprintf (message,
sizeof (message),
"reading register %s (#%d)",
557 memcpy (&buf[bytes_transferred], &l,
sizeof (l));
578 _(
"fetch_register: unexpected byte order: %d"),
593 *vsxregsetp + i * vsxregsize);
607 for (i = 0; i < num_of_vrregs; i++)
613 if (i == (num_of_vrregs - 2))
615 *vrregsetp + i * vrregsize +
offset);
618 *vrregsetp + i * vrregsize);
936 memset (&evrregs, 42,
sizeof (evrregs));
981 size_t bytes_to_transfer;
1006 memset (buf, 0,
sizeof buf);
1020 for (i = 0; i < bytes_to_transfer; i +=
sizeof (
long))
1024 memcpy (&l, &buf[i],
sizeof (l));
1027 regaddr +=
sizeof (
long);
1042 xsnprintf (message,
sizeof (message),
"writing register %s (#%d)",
1059 *vsxregsetp + i * vsxregsize);
1072 for (i = 0; i < num_of_vrregs; i++)
1076 if (i == (num_of_vrregs - 2))
1078 *vrregsetp + i * vrregsize +
offset);
1081 *vrregsetp + i * vrregsize);
1298 static unsigned long 1304 return (
unsigned long)
field;
1350 #define PPC_DEBUG_CURRENT_VERSION 1 1354 have_ptrace_hwdebug_interface (
void)
1356 static int have_ptrace_hwdebug_interface = -1;
1358 if (have_ptrace_hwdebug_interface == -1)
1373 have_ptrace_hwdebug_interface = 1;
1377 return have_ptrace_hwdebug_interface;
1381 have_ptrace_hwdebug_interface = 0;
1385 return have_ptrace_hwdebug_interface;
1392 int total_hw_wp, total_hw_bp;
1394 if (have_ptrace_hwdebug_interface ())
1413 if (cnt + ot > total_hw_wp)
1418 if (total_hw_bp == 0)
1423 if (cnt > total_hw_bp)
1427 if (!have_ptrace_hwdebug_interface ())
1458 if (have_ptrace_hwdebug_interface ())
1479 && (addr + len > (addr & ~(region_size - 1)) + region_size))
1488 && (addr + len) > (addr & ~3) + 4)
1489 || (addr + len) > (addr & ~7) + 8)
1564 hw_breaks[i].
hw_break = p.release ();
1596 if (errno != ENOENT)
1598 "breakpoint or watchpoint"));
1609 return ((have_ptrace_hwdebug_interface ()
1625 if (!have_ptrace_hwdebug_interface ())
1662 if (!have_ptrace_hwdebug_interface ())
1718 gdb_assert (have_ptrace_hwdebug_interface ());
1746 gdb_assert (have_ptrace_hwdebug_interface ());
1771 if (!have_ptrace_hwdebug_interface () || cnt == 0)
1802 uint32_t *condition_mode, uint64_t *condition_value)
1804 int i, num_byte_enable, align_offset, num_bytes_off_dvc,
1805 rightmost_enabled_byte;
1814 addr_end_data = addr + len;
1815 addr_end_dvc = (addr - align_offset
1817 num_bytes_off_dvc = (addr_end_data > addr_end_dvc)?
1818 addr_end_data - addr_end_dvc : 0;
1819 num_byte_enable = len - num_bytes_off_dvc;
1821 rightmost_enabled_byte = (addr_end_data < addr_end_dvc)?
1822 addr_end_dvc - addr_end_data : 0;
1825 for (i = 0; i < num_byte_enable; i++)
1833 *condition_value = ((uint64_t) data_value >> num_bytes_off_dvc * 8
1834 << rightmost_enabled_byte * 8);
1845 int found_memory_cnt = 0;
1846 struct value *head = v;
1881 return found_memory_cnt;
1894 int pc = 1, num_accesses_left, num_accesses_right;
1895 struct value *left_val, *right_val, *left_chain, *right_chain;
1903 if (left_val == NULL || num_accesses_left < 0)
1913 if (right_val == NULL || num_accesses_right < 0)
1921 if (num_accesses_left == 1 && num_accesses_right == 0
1931 else if (num_accesses_left == 0 && num_accesses_right == 1
1965 return (have_ptrace_hwdebug_interface ()
2013 p->
addr2 = (uint64_t) addr + len;
2018 p->
addr = (uint64_t) addr;
2029 if (have_ptrace_hwdebug_interface ())
2043 long read_mode, write_mode;
2060 dabr_value =
addr & ~(read_mode | write_mode);
2065 dabr_value |= read_mode;
2069 dabr_value |= write_mode;
2073 dabr_value |= read_mode | write_mode;
2098 if (have_ptrace_hwdebug_interface ())
2128 if (have_ptrace_hwdebug_interface ())
2169 if (!have_ptrace_hwdebug_interface ())
2202 if (siginfo.si_signo != SIGTRAP
2203 || (siginfo.si_code & 0xffff) != 0x0004 )
2206 if (have_ptrace_hwdebug_interface ())
2212 int slot = siginfo.si_errno;
2229 *addr_p = (
CORE_ADDR) (uintptr_t) siginfo.si_addr;
2247 if (have_ptrace_hwdebug_interface ()
2249 return start <= addr && start + length >= addr;
2258 return start <= addr + mask && start + length - 1 >= addr;
2267 if (!have_ptrace_hwdebug_interface ()
2270 else if ((mask & 0xC0000000) != 0xC0000000)
2272 warning (
_(
"The given mask covers kernel address space " 2273 "and cannot be used.\n"));
2314 memset (gregsetp, 0,
sizeof (*gregsetp));
2324 fpregsetp,
sizeof (*fpregsetp));
2334 fpregsetp,
sizeof (*fpregsetp));
2344 #ifdef __powerpc64__ 2353 if (errno == 0 && ppc64_64bit_inferior_p (msr))
2371 if (endptr - ptr < sizeof_auxv_field * 2)
2375 ptr += sizeof_auxv_field;
2377 ptr += sizeof_auxv_field;
2404 else if (errno != EIO)
2418 else if (errno != EIO)
2432 else if (errno != EIO)
struct gdbarch * target_gdbarch(void)
union exp_element elts[1]
uint32_t num_condition_regs
static int ppc_linux_can_accel_watchpoint_condition(struct target_ops *self, CORE_ADDR addr, int len, int rw, struct expression *cond)
#define PTRACE_SET_DEBUGREG
#define PPC_PTRACE_GETHWDBGINFO
struct ppc_hw_breakpoint * hw_break
static void hwdebug_remove_point(struct ppc_hw_breakpoint *b, int tid)
static int ppc_linux_insert_mask_watchpoint(struct target_ops *ops, CORE_ADDR addr, CORE_ADDR mask, enum target_hw_bp_type rw)
static constexpr ptid_t tid
struct value * value_next(const struct value *value)
static void ppc_linux_new_thread(struct lwp_info *lp)
struct observer * observer_attach_thread_exit(observer_thread_exit_ftype *f)
const struct target_desc *(* to_read_description)(struct target_ops *ops) TARGET_DEFAULT_RETURN(NULL)
static void supply_vsxregset(struct regcache *regcache, gdb_vsxregset_t *vsxregsetp)
int have_ptrace_getsetevrregs
static int hwdebug_point_cmp(struct ppc_hw_breakpoint *a, struct ppc_hw_breakpoint *b)
static int fetch_all_gp_regs(struct regcache *regcache, int tid)
uint32_t sizeof_condition
int(* to_insert_mask_watchpoint)(struct target_ops *, CORE_ADDR, CORE_ADDR, enum target_hw_bp_type) TARGET_DEFAULT_RETURN(1)
struct thread_points * thread_points_p
static int ppc_linux_auxv_parse(struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
static int can_use_watchpoint_cond_accel(void)
int ptid_get_pid(const ptid_t &ptid)
static void fill_vrregset(const struct regcache *regcache, gdb_vrregset_t *vrregsetp)
static void store_vsx_registers(const struct regcache *regcache, int tid)
struct target_desc * tdesc_powerpc_isa205_vsx32l
LONGEST value_as_long(struct value *val)
void linux_nat_set_new_thread(struct target_ops *t, void(*new_thread)(struct lwp_info *))
void ppc_supply_fpregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len)
void warning(const char *fmt,...)
const struct regset * gregset
int deprecated_value_modifiable(const struct value *value)
static void fetch_gp_regs(struct regcache *regcache, int tid)
struct target_desc * tdesc_powerpc_e500l
static void store_altivec_registers(const struct regcache *regcache, int tid)
ptid_t regcache_get_ptid(const struct regcache *regcache)
void * memset(T *s, int c, size_t n)=delete
void internal_error(const char *file, int line, const char *fmt,...)
static int store_all_fp_regs(const struct regcache *regcache, int tid, int regno)
static struct ppc_debug_info hwdebug_info
int have_ptrace_getsetvsxregs
#define VEC_unordered_remove(T, V, I)
static int ppc_register_u_addr(struct gdbarch *gdbarch, int regno)
int value_lazy(const struct value *value)
static void supply_vrregset(struct regcache *regcache, gdb_vrregset_t *vrregsetp)
struct target_desc * tdesc_powerpc_32l
struct target_desc * tdesc_powerpc_isa205_64l
#define VEC_safe_push(T, V, O)
#define PTRACE_GETEVRREGS
static void ppc_linux_store_inferior_registers(struct target_ops *ops, struct regcache *regcache, int regno)
int(* to_remove_watchpoint)(struct target_ops *, CORE_ADDR, int, enum target_hw_bp_type, struct expression *) TARGET_DEFAULT_RETURN(-1)
const struct regset * ppc_linux_gregset(int wordsize)
int(* to_region_ok_for_hw_watchpoint)(struct target_ops *, CORE_ADDR, int) TARGET_DEFAULT_FUNC(default_region_ok_for_hw_watchpoint)
static int ppc_linux_stopped_data_address(struct target_ops *target, CORE_ADDR *addr_p)
void _initialize_ppc_linux_nat(void)
int(* to_can_use_hw_breakpoint)(struct target_ops *, enum bptype, int, int) TARGET_DEFAULT_RETURN(0)
static int ppc_linux_masked_watch_num_registers(struct target_ops *target, CORE_ADDR addr, CORE_ADDR mask)
int vsx_register_p(struct gdbarch *gdbarch, int regno)
int linux_nat_get_siginfo(ptid_t ptid, siginfo_t *siginfo)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
void supply_gregset(struct regcache *regcache, const gdb_gregset_t *gregsetp)
#define PPC_BREAKPOINT_MODE_MASK
struct target_desc * tdesc_powerpc_cell32l
static void fetch_spe_register(struct regcache *regcache, int tid, int regno)
#define PPC_DEBUG_FEATURE_DATA_BP_DAWR
static int ppc_linux_ranged_break_num_registers(struct target_ops *target)
static const struct target_desc * ppc_linux_read_description(struct target_ops *ops)
static int check_condition(CORE_ADDR watch_addr, struct expression *cond, CORE_ADDR *data_value, int *len)
struct target_desc * tdesc_powerpc_64l
#define PPC_FEATURE_HAS_DFP
static int num_memory_accesses(struct value *v)
void free_value_chain(struct value *v)
#define VEC_iterate(T, V, I, P)
static size_t max_slots_number
struct type * check_typedef(struct type *type)
void ppc_collect_gregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len)
int ppc_vsr0_upper_regnum
struct target_desc * tdesc_powerpc_cell64l
#define PPC_DEBUG_FEATURE_DATA_BP_RANGE
#define PPC_MAX_REGISTER_SIZE
#define PTRACE_SETEVRREGS
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
static void store_fp_regs(const struct regcache *regcache, int tid, int regno)
struct target_ops current_target
static void fetch_altivec_registers(struct regcache *regcache, int tid)
#define PPC_PTRACE_SETHWDEBUG
struct target_desc * tdesc_powerpc_altivec32l
#define PPC_BREAKPOINT_CONDITION_AND
#define PPC_BREAKPOINT_TRIGGER_READ
int(* to_watchpoint_addr_within_range)(struct target_ops *, CORE_ADDR, CORE_ADDR, int) TARGET_DEFAULT_FUNC(default_watchpoint_addr_within_range)
uint32_t data_bp_alignment
#define PPC_BREAKPOINT_MODE_EXACT
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
GDB_GREGSET_T gdb_gregset_t
static struct thread_points * hwdebug_find_thread_points_by_tid(int tid, int alloc_new)
#define PPC_FEATURE_BOOKE
int target_auxv_search(struct target_ops *ops, CORE_ADDR match, CORE_ADDR *valp)
int ppc_linux_trap_reg_p(struct gdbarch *gdbarch)
static void fetch_register(struct regcache *regcache, int tid, int regno)
static void calculate_dvc(CORE_ADDR addr, int len, CORE_ADDR data_value, uint32_t *condition_mode, uint64_t *condition_value)
int have_ptrace_getvrregs
GDB_FPREGSET_T gdb_fpregset_t
static void set_spe_registers(int tid, struct gdb_evrregset_t *evrregset)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
static int fetch_all_fp_regs(struct regcache *regcache, int tid)
void fill_fpregset(const struct regcache *regcache, gdb_fpregset_t *fpregsetp, int regno)
#define PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE
int(* to_masked_watch_num_registers)(struct target_ops *, CORE_ADDR, CORE_ADDR) TARGET_DEFAULT_RETURN(-1)
#define PPC_FEATURE_HAS_ALTIVEC
int(* to_remove_mask_watchpoint)(struct target_ops *, CORE_ADDR, CORE_ADDR, enum target_hw_bp_type) TARGET_DEFAULT_RETURN(1)
#define PPC_BREAKPOINT_TRIGGER_WRITE
static int store_all_gp_regs(const struct regcache *regcache, int tid, int regno)
#define PPC_PTRACE_DELHWDEBUG
static void get_spe_registers(int tid, struct gdb_evrregset_t *evrregset)
static int ppc_linux_watchpoint_addr_within_range(struct target_ops *target, CORE_ADDR addr, CORE_ADDR start, int length)
static long saved_dabr_value
char gdb_vrregset_t[SIZEOF_VRREGS]
struct target_desc * tdesc_powerpc_isa205_altivec64l
void ppc_collect_fpregset(const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len)
const char * gdbarch_register_name(struct gdbarch *gdbarch, int regnr)
void linux_nat_add_target(struct target_ops *t)
int(* to_insert_watchpoint)(struct target_ops *, CORE_ADDR, int, enum target_hw_bp_type, struct expression *) TARGET_DEFAULT_RETURN(-1)
static void fetch_ppc_registers(struct regcache *regcache, int tid)
static int ppc_linux_stopped_by_watchpoint(struct target_ops *ops)
static void fetch_altivec_register(struct regcache *regcache, int tid, int regno)
struct target_ops * linux_target(void)
static void create_watchpoint_request(struct ppc_hw_breakpoint *p, CORE_ADDR addr, int len, enum target_hw_bp_type type, struct expression *cond, int insert)
long ptid_get_lwp(const ptid_t &ptid)
int(* to_insert_hw_breakpoint)(struct target_ops *, struct gdbarch *, struct bp_target_info *) TARGET_DEFAULT_RETURN(-1)
static int get_trigger_type(enum target_hw_bp_type type)
static int ppc_linux_remove_mask_watchpoint(struct target_ops *ops, CORE_ADDR addr, CORE_ADDR mask, enum target_hw_bp_type rw)
static int ppc_linux_insert_watchpoint(struct target_ops *self, CORE_ADDR addr, int len, enum target_hw_bp_type type, struct expression *cond)
static void ppc_linux_thread_exit(struct thread_info *tp, int silent)
#define PPC_DEBUG_FEATURE_DATA_BP_MASK
int have_ptrace_getsetfpregs
const struct regset * ppc_linux_fpregset(void)
static void ppc_linux_fetch_inferior_registers(struct target_ops *ops, struct regcache *regcache, int regno)
int(* to_auxv_parse)(struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) TARGET_DEFAULT_FUNC(default_auxv_parse)
int(* to_remove_hw_breakpoint)(struct target_ops *, struct gdbarch *, struct bp_target_info *) TARGET_DEFAULT_RETURN(-1)
void fetch_subexp_value(struct expression *exp, int *pc, struct value **valp, struct value **resultp, struct value **val_chain, int preserve_errors)
int have_ptrace_getsetregs
ULONGEST align_up(ULONGEST v, int n)
static unsigned long ppc_linux_get_hwcap(void)
void(* to_fetch_registers)(struct target_ops *, struct regcache *, int) TARGET_DEFAULT_IGNORE()
static int ppc_linux_target_wordsize(void)
void void void void void void void void void perror_with_name(const char *string) ATTRIBUTE_NORETURN
static void fetch_fp_regs(struct regcache *regcache, int tid)
int xsnprintf(char *str, size_t size, const char *format,...)
struct hw_break_tuple * hw_breaks
static void fill_vsxregset(const struct regcache *regcache, gdb_vsxregset_t *vsxregsetp)
int(* to_can_accel_watchpoint_condition)(struct target_ops *, CORE_ADDR, int, int, struct expression *) TARGET_DEFAULT_RETURN(0)
static void store_spe_register(const struct regcache *regcache, int tid, int regno)
static void store_gp_regs(const struct regcache *regcache, int tid, int regno)
#define PPC_DEBUG_FEATURE_INSN_BP_RANGE
#define PTRACE_GETVSXREGS
int(* to_ranged_break_num_registers)(struct target_ops *) TARGET_DEFAULT_RETURN(-1)
int(* to_stopped_by_watchpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
struct m32c_reg regs[M32C_MAX_NUM_REGS]
struct target_desc * tdesc_powerpc_isa205_32l
void supply_fpregset(struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
#define PPC_DEBUG_CURRENT_VERSION
void regcache_raw_supply(struct regcache *regcache, int regnum, const void *buf)
struct target_desc * tdesc_powerpc_vsx64l
static int ppc_linux_can_use_hw_breakpoint(struct target_ops *self, enum bptype type, int cnt, int ot)
static int ppc_linux_insert_hw_breakpoint(struct target_ops *self, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
int register_size(struct gdbarch *gdbarch, int regnum)
struct type * value_type(const struct value *value)
struct target_desc * tdesc_powerpc_vsx32l
void regcache_raw_collect(const struct regcache *regcache, int regnum, void *buf)
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
struct target_desc * tdesc_powerpc_isa205_vsx64l
static void store_ppc_registers(const struct regcache *regcache, int tid)
#define PTRACE_SETVSXREGS
#define TYPE_LENGTH(thistype)
pid_t get_ptrace_pid(ptid_t ptid)
int altivec_register_p(struct gdbarch *gdbarch, int regno)
static int ppc_linux_remove_watchpoint(struct target_ops *self, CORE_ADDR addr, int len, enum target_hw_bp_type type, struct expression *cond)
static void store_register(const struct regcache *regcache, int tid, int regno)
static void fetch_vsx_registers(struct regcache *regcache, int tid)
int spe_register_p(struct gdbarch *gdbarch, int regno)
int(* to_stopped_data_address)(struct target_ops *, CORE_ADDR *) TARGET_DEFAULT_RETURN(0)
static void store_vsx_register(const struct regcache *regcache, int tid, int regno)
CORE_ADDR value_address(const struct value *value)
struct target_desc * tdesc_powerpc_altivec64l
static void hwdebug_insert_point(struct ppc_hw_breakpoint *b, int tid)
void(* to_store_registers)(struct target_ops *, struct regcache *, int) TARGET_DEFAULT_NORETURN(noprocess())
#define PPC_BREAKPOINT_TRIGGER_EXECUTE
static int ppc_linux_remove_hw_breakpoint(struct target_ops *self, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
static int ppc_linux_region_ok_for_hw_watchpoint(struct target_ops *self, CORE_ADDR addr, int len)
uint32_t num_instruction_bps
#define PPC_FEATURE_HAS_VSX
static void store_altivec_register(const struct regcache *regcache, int tid, int regno)
void ppc_supply_gregset(const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len)
#define PPC_BREAKPOINT_CONDITION_BE(n)
struct target_desc * tdesc_powerpc_isa205_altivec32l
DEF_VEC_P(thread_points_p)
static void fetch_vsx_register(struct regcache *regcache, int tid, int regno)
char gdb_vsxregset_t[SIZEOF_VSXREGS]
#define PPC_BREAKPOINT_CONDITION_NONE
void fill_gregset(const struct regcache *regcache, gdb_gregset_t *gregsetp, int regno)