* ppc-linux-nat.c (ppc_linux_read_description): New.

(_initialize_ppc_linux_nat): Set to_read_description.
	* ppc-tdep.h (tdesc_powerpc_e500): Declare.
This commit is contained in:
Daniel Jacobowitz 2007-10-15 19:49:53 +00:00
parent 7cc46491b1
commit 310a98e102
3 changed files with 37 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2007-10-15 Daniel Jacobowitz <dan@codesourcery.com>
* ppc-linux-nat.c (ppc_linux_read_description): New.
(_initialize_ppc_linux_nat): Set to_read_description.
* ppc-tdep.h (tdesc_powerpc_e500): Declare.
2007-10-15 Daniel Jacobowitz <dan@codesourcery.com>
* NEWS: Document target described register support for PowerPC.

View file

@ -940,6 +940,33 @@ fill_fpregset (const struct regcache *regcache,
fpregsetp, sizeof (*fpregsetp));
}
static const struct target_desc *
ppc_linux_read_description (struct target_ops *ops)
{
if (have_ptrace_getsetevrregs)
{
struct gdb_evrregset_t evrregset;
int tid = TIDGET (inferior_ptid);
if (tid == 0)
tid = PIDGET (inferior_ptid);
if (ptrace (PTRACE_GETEVRREGS, tid, 0, &evrregset) >= 0)
return tdesc_powerpc_e500;
else
{
/* EIO means that the PTRACE_GETEVRREGS request isn't supported. */
if (errno == EIO)
return NULL;
else
/* Anything else needs to be reported. */
perror_with_name (_("Unable to fetch SPE registers"));
}
}
return NULL;
}
void _initialize_ppc_linux_nat (void);
void
@ -962,6 +989,8 @@ _initialize_ppc_linux_nat (void)
t->to_stopped_by_watchpoint = ppc_linux_stopped_by_watchpoint;
t->to_stopped_data_address = ppc_linux_stopped_data_address;
t->to_read_description = ppc_linux_read_description;
/* Register the target. */
linux_nat_add_target (t);
linux_nat_set_new_thread (t, ppc_linux_new_thread);

View file

@ -227,4 +227,6 @@ enum {
/* Estimate for the maximum number of instrctions in a function epilogue. */
#define PPC_MAX_EPILOGUE_INSTRUCTIONS 52
extern struct target_desc *tdesc_powerpc_e500;
#endif /* ppc-tdep.h */