mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 09:38:57 +00:00
* aix-thread.c (supply_gprs64, fetch_regs_user_thread)
(store_regs_user_thread): Use tdep->ppc_gp0_regnum, instead of assuming that the gprs are numbered starting with zero. * ppc-linux-nat.c (fill_gregset): Same. * ppc-linux-tdep.c (ppc_linux_supply_gregset): Same. * ppcnbsd-nat.c (getregs_supplies): Same. * ppcnbsd-tdep.c (ppcnbsd_supply_reg, ppcnbsd_fill_reg): Same. * rs6000-nat.c (fetch_core_registers): Same. * rs6000-tdep.c (ppc_supply_gregset, ppc_collect_gregset): Same.
This commit is contained in:
@@ -1,3 +1,15 @@
|
||||
2004-05-13 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* aix-thread.c (supply_gprs64, fetch_regs_user_thread)
|
||||
(store_regs_user_thread): Use tdep->ppc_gp0_regnum, instead
|
||||
of assuming that the gprs are numbered starting with zero.
|
||||
* ppc-linux-nat.c (fill_gregset): Same.
|
||||
* ppc-linux-tdep.c (ppc_linux_supply_gregset): Same.
|
||||
* ppcnbsd-nat.c (getregs_supplies): Same.
|
||||
* ppcnbsd-tdep.c (ppcnbsd_supply_reg, ppcnbsd_fill_reg): Same.
|
||||
* rs6000-nat.c (fetch_core_registers): Same.
|
||||
* rs6000-tdep.c (ppc_supply_gregset, ppc_collect_gregset): Same.
|
||||
|
||||
2004-05-07 Michael Snyder <msnyder@redhat.com>
|
||||
|
||||
* tracepoint.c (scope_info): Add handling for LOC_COMPUTED,
|
||||
|
||||
@@ -1001,10 +1001,11 @@ aix_thread_wait (ptid_t ptid, struct target_waitstatus *status)
|
||||
static void
|
||||
supply_gprs64 (uint64_t *vals)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
int regno;
|
||||
|
||||
for (regno = 0; regno < 32; regno++)
|
||||
supply_register (regno, (char *) (vals + regno));
|
||||
supply_register (tdep->ppc_gp0_regnum + regno, (char *) (vals + regno));
|
||||
}
|
||||
|
||||
/* Record that 32-bit register REGNO contains VAL. */
|
||||
@@ -1098,6 +1099,7 @@ supply_sprs32 (uint32_t iar, uint32_t msr, uint32_t cr,
|
||||
static void
|
||||
fetch_regs_user_thread (pthdb_pthread_t pdtid)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
int status, i;
|
||||
pthdb_context_t ctx;
|
||||
|
||||
@@ -1115,7 +1117,7 @@ fetch_regs_user_thread (pthdb_pthread_t pdtid)
|
||||
supply_gprs64 (ctx.gpr);
|
||||
else
|
||||
for (i = 0; i < 32; i++)
|
||||
supply_reg32 (i, ctx.gpr[i]);
|
||||
supply_reg32 (tdep->ppc_gp0_regnum + i, ctx.gpr[i]);
|
||||
|
||||
/* Floating-point registers. */
|
||||
|
||||
@@ -1180,7 +1182,7 @@ fetch_regs_kernel_thread (int regno, pthdb_tid_t tid)
|
||||
if (!ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL))
|
||||
memset (gprs32, 0, sizeof (gprs32));
|
||||
for (i = 0; i < 32; i++)
|
||||
supply_reg32 (i, gprs32[i]);
|
||||
supply_reg32 (tdep->ppc_gp0_regnum + i, gprs32[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1369,6 +1371,7 @@ fill_sprs32 (unsigned long *iar, unsigned long *msr, unsigned long *cr,
|
||||
static void
|
||||
store_regs_user_thread (pthdb_pthread_t pdtid)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
int status, i;
|
||||
pthdb_context_t ctx;
|
||||
uint32_t int32;
|
||||
@@ -1389,16 +1392,16 @@ store_regs_user_thread (pthdb_pthread_t pdtid)
|
||||
/* Collect general-purpose register values from the regcache. */
|
||||
|
||||
for (i = 0; i < 32; i++)
|
||||
if (register_cached (i))
|
||||
if (register_cached (tdep->ppc_gp0_regnum + i))
|
||||
{
|
||||
if (arch64)
|
||||
{
|
||||
regcache_collect (i, (void *) &int64);
|
||||
regcache_collect (tdep->ppc_gp0_regnum + i, (void *) &int64);
|
||||
ctx.gpr[i] = int64;
|
||||
}
|
||||
else
|
||||
{
|
||||
regcache_collect (i, (void *) &int32);
|
||||
regcache_collect (tdep->ppc_gp0_regnum + i, (void *) &int32);
|
||||
ctx.gpr[i] = int32;
|
||||
}
|
||||
}
|
||||
@@ -1421,7 +1424,6 @@ store_regs_user_thread (pthdb_pthread_t pdtid)
|
||||
happens, GDB needs to be reconfigured so that longs are 32-bits.) */
|
||||
unsigned long tmp_iar, tmp_msr, tmp_cr, tmp_lr, tmp_ctr, tmp_xer,
|
||||
tmp_fpscr;
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
fill_sprs32 (&tmp_iar, &tmp_msr, &tmp_cr, &tmp_lr, &tmp_ctr, &tmp_xer,
|
||||
&tmp_fpscr);
|
||||
|
||||
@@ -592,8 +592,8 @@ fill_gregset (gdb_gregset_t *gregsetp, int regno)
|
||||
|
||||
for (regi = 0; regi < 32; regi++)
|
||||
{
|
||||
if ((regno == -1) || regno == regi)
|
||||
right_fill_reg (regi, (regp + PT_R0 + regi));
|
||||
if ((regno == -1) || regno == tdep->ppc_gp0_regnum + regi)
|
||||
right_fill_reg (tdep->ppc_gp0_regnum + regi, (regp + PT_R0 + regi));
|
||||
}
|
||||
|
||||
if ((regno == -1) || regno == PC_REGNUM)
|
||||
|
||||
@@ -861,7 +861,9 @@ ppc_linux_supply_gregset (struct regcache *regcache,
|
||||
const bfd_byte *buf = gregs;
|
||||
|
||||
for (regi = 0; regi < 32; regi++)
|
||||
right_supply_register (regcache, wordsize, regi, buf + wordsize * regi);
|
||||
right_supply_register (regcache, wordsize,
|
||||
regcache_tdep->ppc_gp0_regnum + regi,
|
||||
buf + wordsize * regi);
|
||||
|
||||
right_supply_register (regcache, wordsize, gdbarch_pc_regnum (regcache_arch),
|
||||
buf + wordsize * PPC_LINUX_PT_NIP);
|
||||
|
||||
@@ -36,7 +36,8 @@ getregs_supplies (int regno)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
return ((regno >= 0 && regno <= 31)
|
||||
return ((regno >= tdep->ppc_gp0_regnum
|
||||
&& regno < tdep->ppc_gp0_regnum + ppc_num_gprs)
|
||||
|| regno == tdep->ppc_lr_regnum
|
||||
|| regno == tdep->ppc_cr_regnum
|
||||
|| regno == tdep->ppc_xer_regnum
|
||||
|
||||
@@ -57,8 +57,9 @@ ppcnbsd_supply_reg (char *regs, int regno)
|
||||
|
||||
for (i = 0; i <= 31; i++)
|
||||
{
|
||||
if (regno == i || regno == -1)
|
||||
supply_register (i, regs + REG_FIXREG_OFFSET (i));
|
||||
if (regno == tdep->ppc_gp0_regnum + i || regno == -1)
|
||||
supply_register (tdep->ppc_gp0_regnum + i,
|
||||
regs + REG_FIXREG_OFFSET (i));
|
||||
}
|
||||
|
||||
if (regno == tdep->ppc_lr_regnum || regno == -1)
|
||||
@@ -85,8 +86,9 @@ ppcnbsd_fill_reg (char *regs, int regno)
|
||||
|
||||
for (i = 0; i <= 31; i++)
|
||||
{
|
||||
if (regno == i || regno == -1)
|
||||
regcache_collect (i, regs + REG_FIXREG_OFFSET (i));
|
||||
if (regno == tdep->ppc_gp0_regnum + i || regno == -1)
|
||||
regcache_collect (tdep->ppc_gp0_regnum + i,
|
||||
regs + REG_FIXREG_OFFSET (i));
|
||||
}
|
||||
|
||||
if (regno == tdep->ppc_lr_regnum || regno == -1)
|
||||
|
||||
@@ -587,7 +587,8 @@ fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
|
||||
if (ARCH64 ())
|
||||
{
|
||||
for (regi = 0; regi < 32; regi++)
|
||||
supply_register (regi, (char *) ®s->r64.gpr[regi]);
|
||||
supply_register (tdep->ppc_gp0_regnum + regi,
|
||||
(char *) ®s->r64.gpr[regi]);
|
||||
|
||||
if (tdep->ppc_fp0_regnum >= 0)
|
||||
for (regi = 0; regi < 32; regi++)
|
||||
@@ -606,7 +607,8 @@ fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
|
||||
else
|
||||
{
|
||||
for (regi = 0; regi < 32; regi++)
|
||||
supply_register (regi, (char *) ®s->r32.gpr[regi]);
|
||||
supply_register (tdep->ppc_gp0_regnum + regi,
|
||||
(char *) ®s->r32.gpr[regi]);
|
||||
|
||||
if (tdep->ppc_fp0_regnum >= 0)
|
||||
for (regi = 0; regi < 32; regi++)
|
||||
|
||||
@@ -185,7 +185,9 @@ ppc_supply_gregset (const struct regset *regset, struct regcache *regcache,
|
||||
size_t offset;
|
||||
int i;
|
||||
|
||||
for (i = 0, offset = offsets->r0_offset; i < 32; i++, offset += 4)
|
||||
for (i = tdep->ppc_gp0_regnum, offset = offsets->r0_offset;
|
||||
i < tdep->ppc_gp0_regnum + 32;
|
||||
i++, offset += 4)
|
||||
{
|
||||
if (regnum == -1 || regnum == i)
|
||||
ppc_supply_reg (regcache, i, gregs, offset);
|
||||
@@ -259,7 +261,9 @@ ppc_collect_gregset (const struct regset *regset,
|
||||
int i;
|
||||
|
||||
offset = offsets->r0_offset;
|
||||
for (i = 0; i < 32; i++, offset += 4)
|
||||
for (i = tdep->ppc_gp0_regnum;
|
||||
i < tdep->ppc_gp0_regnum + 32;
|
||||
i++, offset += 4)
|
||||
{
|
||||
if (regnum == -1 || regnum == i)
|
||||
ppc_collect_reg (regcache, i, gregs, offset);
|
||||
|
||||
Reference in New Issue
Block a user