* RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs where appropriate
@ 2004-05-13 1:12 Jim Blandy
2004-05-13 14:59 ` RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs whereappropriate Kevin Buettner
0 siblings, 1 reply; 3+ messages in thread
From: Jim Blandy @ 2004-05-13 1:12 UTC (permalink / raw)
To: gdb-patches
2004-05-12 Jim Blandy <jimb@redhat.com>
* aix-thread.c (pdc_read_regs, supply_gprs64, supply_fprs)
(fetch_regs_user_thread, fetch_regs_kernel_thread)
(store_regs_user_thread, store_regs_kernel_thread): Use
ppc_num_gprs and ppc_num_fprs instead of '32' and '31'.
* ppc-linux-nat.c (fill_gregset): Same.
* ppc-linux-tdep.c (ppc_linux_supply_gregset)
(ppc_linux_sigtramp_cache): Same.
* ppcnbsd-tdep.c (ppcnbsd_supply_reg, ppcnbsd_fill_reg)
(ppcnbsd_sigtramp_cache_init): Same.
* rs6000-nat.c (fetch_core_registers): Same.
* rs6000-tdep.c (ppc_supply_gregset, ppc_collect_gregset)
(rs6000_frame_cache): Same.
*** gdb/aix-thread.c 2004-05-09 11:23:33.000000000 -0500
--- gdb/aix-thread.c 2004-05-09 11:24:22.000000000 -0500
*************** pdc_read_regs (pthdb_user_t user,
*** 338,346 ****
this is needed, I have implemented what I think it should do,
however this code is untested. */
! uint64_t gprs64[32];
! uint32_t gprs32[32];
! double fprs[32];
struct ptxsprs sprs64;
struct ptsprs sprs32;
--- 338,346 ----
this is needed, I have implemented what I think it should do,
however this code is untested. */
! uint64_t gprs64[ppc_num_gprs];
! uint32_t gprs32[ppc_num_gprs];
! double fprs[ppc_num_fprs];
struct ptxsprs sprs64;
struct ptsprs sprs32;
*************** supply_gprs64 (uint64_t *vals)
*** 1004,1010 ****
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
int regno;
! for (regno = 0; regno < 32; regno++)
supply_register (tdep->ppc_gp0_regnum + regno, (char *) (vals + regno));
}
--- 1004,1010 ----
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
int regno;
! for (regno = 0; regno < ppc_num_gprs; regno++)
supply_register (tdep->ppc_gp0_regnum + regno, (char *) (vals + regno));
}
*************** supply_fprs (double *vals)
*** 1028,1034 ****
floating-point registers. */
gdb_assert (ppc_floating_point_p (current_gdbarch));
! for (regno = 0; regno < 32; regno++)
supply_register (regno + tdep->ppc_fp0_regnum, (char *) (vals + regno));
}
--- 1028,1034 ----
floating-point registers. */
gdb_assert (ppc_floating_point_p (current_gdbarch));
! for (regno = 0; regno < ppc_num_gprs; regno++)
supply_register (regno + tdep->ppc_fp0_regnum, (char *) (vals + regno));
}
*************** fetch_regs_user_thread (pthdb_pthread_t
*** 1116,1122 ****
if (arch64)
supply_gprs64 (ctx.gpr);
else
! for (i = 0; i < 32; i++)
supply_reg32 (tdep->ppc_gp0_regnum + i, ctx.gpr[i]);
/* Floating-point registers. */
--- 1116,1122 ----
if (arch64)
supply_gprs64 (ctx.gpr);
else
! for (i = 0; i < ppc_num_gprs; i++)
supply_reg32 (tdep->ppc_gp0_regnum + i, ctx.gpr[i]);
/* Floating-point registers. */
*************** static void
*** 1153,1161 ****
fetch_regs_kernel_thread (int regno, pthdb_tid_t tid)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
! uint64_t gprs64[32];
! uint32_t gprs32[32];
! double fprs[32];
struct ptxsprs sprs64;
struct ptsprs sprs32;
int i;
--- 1153,1161 ----
fetch_regs_kernel_thread (int regno, pthdb_tid_t tid)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
! uint64_t gprs64[ppc_num_gprs];
! uint32_t gprs32[ppc_num_gprs];
! double fprs[ppc_num_fprs];
struct ptxsprs sprs64;
struct ptsprs sprs32;
int i;
*************** fetch_regs_kernel_thread (int regno, pth
*** 1181,1187 ****
{
if (!ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL))
memset (gprs32, 0, sizeof (gprs32));
! for (i = 0; i < 32; i++)
supply_reg32 (tdep->ppc_gp0_regnum + i, gprs32[i]);
}
}
--- 1181,1187 ----
{
if (!ptrace32 (PTT_READ_GPRS, tid, gprs32, 0, NULL))
memset (gprs32, 0, sizeof (gprs32));
! for (i = 0; i < ppc_num_gprs; i++)
supply_reg32 (tdep->ppc_gp0_regnum + i, gprs32[i]);
}
}
*************** store_regs_user_thread (pthdb_pthread_t
*** 1391,1397 ****
/* Collect general-purpose register values from the regcache. */
! for (i = 0; i < 32; i++)
if (register_cached (tdep->ppc_gp0_regnum + i))
{
if (arch64)
--- 1391,1397 ----
/* Collect general-purpose register values from the regcache. */
! for (i = 0; i < ppc_num_gprs; i++)
if (register_cached (tdep->ppc_gp0_regnum + i))
{
if (arch64)
*************** static void
*** 1461,1469 ****
store_regs_kernel_thread (int regno, pthdb_tid_t tid)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
! uint64_t gprs64[32];
! uint32_t gprs32[32];
! double fprs[32];
struct ptxsprs sprs64;
struct ptsprs sprs32;
int i;
--- 1461,1469 ----
store_regs_kernel_thread (int regno, pthdb_tid_t tid)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
! uint64_t gprs64[ppc_num_gprs];
! uint32_t gprs32[ppc_num_gprs];
! double fprs[ppc_num_fprs];
struct ptxsprs sprs64;
struct ptsprs sprs32;
int i;
*** gdb/ppc-linux-nat.c 2004-05-09 05:47:16.000000000 -0500
--- gdb/ppc-linux-nat.c 2004-05-09 05:59:06.000000000 -0500
*************** fill_gregset (gdb_gregset_t *gregsetp, i
*** 590,596 ****
/* Start with zeros. */
memset (regp, 0, elf_ngreg * sizeof (*regp));
! for (regi = 0; regi < 32; regi++)
{
if ((regno == -1) || regno == tdep->ppc_gp0_regnum + regi)
right_fill_reg (tdep->ppc_gp0_regnum + regi, (regp + PT_R0 + regi));
--- 590,596 ----
/* Start with zeros. */
memset (regp, 0, elf_ngreg * sizeof (*regp));
! for (regi = 0; regi < ppc_num_gprs; regi++)
{
if ((regno == -1) || regno == tdep->ppc_gp0_regnum + regi)
right_fill_reg (tdep->ppc_gp0_regnum + regi, (regp + PT_R0 + regi));
*** gdb/ppc-linux-tdep.c 2004-05-09 06:00:20.000000000 -0500
--- gdb/ppc-linux-tdep.c 2004-05-09 05:57:40.000000000 -0500
*************** ppc_linux_supply_gregset (struct regcach
*** 860,866 ****
struct gdbarch_tdep *regcache_tdep = gdbarch_tdep (regcache_arch);
const bfd_byte *buf = gregs;
! for (regi = 0; regi < 32; regi++)
right_supply_register (regcache, wordsize,
regcache_tdep->ppc_gp0_regnum + regi,
buf + wordsize * regi);
--- 860,866 ----
struct gdbarch_tdep *regcache_tdep = gdbarch_tdep (regcache_arch);
const bfd_byte *buf = gregs;
! for (regi = 0; regi < ppc_num_gprs; regi++)
right_supply_register (regcache, wordsize,
regcache_tdep->ppc_gp0_regnum + regi,
buf + wordsize * regi);
*************** ppc_linux_sigtramp_cache (struct frame_i
*** 934,940 ****
fpregs = gpregs + 48 * tdep->wordsize;
/* General purpose. */
! for (i = 0; i < 32; i++)
{
int regnum = i + tdep->ppc_gp0_regnum;
cache->saved_regs[regnum].addr = gpregs + i * tdep->wordsize;
--- 934,940 ----
fpregs = gpregs + 48 * tdep->wordsize;
/* General purpose. */
! for (i = 0; i < ppc_num_gprs; i++)
{
int regnum = i + tdep->ppc_gp0_regnum;
cache->saved_regs[regnum].addr = gpregs + i * tdep->wordsize;
*** gdb/ppcnbsd-tdep.c 2004-05-09 05:50:03.000000000 -0500
--- gdb/ppcnbsd-tdep.c 2004-05-09 11:26:14.000000000 -0500
*************** ppcnbsd_supply_reg (char *regs, int regn
*** 55,61 ****
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
int i;
! for (i = 0; i <= 31; i++)
{
if (regno == tdep->ppc_gp0_regnum + i || regno == -1)
supply_register (tdep->ppc_gp0_regnum + i,
--- 55,61 ----
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
int i;
! for (i = 0; i < ppc_num_gprs; i++)
{
if (regno == tdep->ppc_gp0_regnum + i || regno == -1)
supply_register (tdep->ppc_gp0_regnum + i,
*************** ppcnbsd_fill_reg (char *regs, int regno)
*** 84,90 ****
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
int i;
! for (i = 0; i <= 31; i++)
{
if (regno == tdep->ppc_gp0_regnum + i || regno == -1)
regcache_collect (tdep->ppc_gp0_regnum + i,
--- 84,90 ----
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
int i;
! for (i = 0; i < ppc_num_gprs; i++)
{
if (regno == tdep->ppc_gp0_regnum + i || regno == -1)
regcache_collect (tdep->ppc_gp0_regnum + i,
*************** ppcnbsd_sigtramp_cache_init (const struc
*** 258,264 ****
base = frame_unwind_register_unsigned (next_frame, SP_REGNUM);
offset = base + 0x18 + 2 * tdep->wordsize;
! for (i = 0; i < 32; i++)
{
int regnum = i + tdep->ppc_gp0_regnum;
trad_frame_set_reg_addr (this_cache, regnum, offset);
--- 258,264 ----
base = frame_unwind_register_unsigned (next_frame, SP_REGNUM);
offset = base + 0x18 + 2 * tdep->wordsize;
! for (i = 0; i < ppc_num_gprs; i++)
{
int regnum = i + tdep->ppc_gp0_regnum;
trad_frame_set_reg_addr (this_cache, regnum, offset);
*** gdb/rs6000-nat.c 2004-05-09 05:32:07.000000000 -0500
--- gdb/rs6000-nat.c 2004-05-08 20:52:02.000000000 -0500
*************** fetch_core_registers (char *core_reg_sec
*** 586,597 ****
if (ARCH64 ())
{
! for (regi = 0; regi < 32; 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++)
supply_register (tdep->ppc_fp0_regnum + regi,
(char *) ®s->r64.fpr[regi]);
--- 586,597 ----
if (ARCH64 ())
{
! for (regi = 0; regi < ppc_num_gprs; regi++)
supply_register (tdep->ppc_gp0_regnum + regi,
(char *) ®s->r64.gpr[regi]);
if (tdep->ppc_fp0_regnum >= 0)
! for (regi = 0; regi < ppc_num_fprs; regi++)
supply_register (tdep->ppc_fp0_regnum + regi,
(char *) ®s->r64.fpr[regi]);
*************** fetch_core_registers (char *core_reg_sec
*** 606,617 ****
}
else
{
! for (regi = 0; regi < 32; 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++)
supply_register (tdep->ppc_fp0_regnum + regi,
(char *) ®s->r32.fpr[regi]);
--- 606,617 ----
}
else
{
! for (regi = 0; regi < ppc_num_gprs; regi++)
supply_register (tdep->ppc_gp0_regnum + regi,
(char *) ®s->r32.gpr[regi]);
if (tdep->ppc_fp0_regnum >= 0)
! for (regi = 0; regi < ppc_num_fprs; regi++)
supply_register (tdep->ppc_fp0_regnum + regi,
(char *) ®s->r32.fpr[regi]);
*** gdb/rs6000-tdep.c 2004-05-09 05:43:26.000000000 -0500
--- gdb/rs6000-tdep.c 2004-05-09 05:43:52.000000000 -0500
*************** ppc_supply_gregset (const struct regset
*** 186,192 ****
int i;
for (i = tdep->ppc_gp0_regnum, offset = offsets->r0_offset;
! i < tdep->ppc_gp0_regnum + 32;
i++, offset += 4)
{
if (regnum == -1 || regnum == i)
--- 186,192 ----
int i;
for (i = tdep->ppc_gp0_regnum, offset = offsets->r0_offset;
! i < tdep->ppc_gp0_regnum + ppc_num_gprs;
i++, offset += 4)
{
if (regnum == -1 || regnum == i)
*************** ppc_collect_gregset (const struct regset
*** 262,268 ****
offset = offsets->r0_offset;
for (i = tdep->ppc_gp0_regnum;
! i < tdep->ppc_gp0_regnum + 32;
i++, offset += 4)
{
if (regnum == -1 || regnum == i)
--- 262,268 ----
offset = offsets->r0_offset;
for (i = tdep->ppc_gp0_regnum;
! i < tdep->ppc_gp0_regnum + ppc_num_gprs;
i++, offset += 4)
{
if (regnum == -1 || regnum == i)
*************** rs6000_frame_cache (struct frame_info *n
*** 2477,2483 ****
then that's strange. But we have no indices to even record
the addresses under, so we just ignore it. */
if (ppc_floating_point_unit_p (gdbarch))
! for (i = fdata.saved_fpr; i < 32; i++)
{
cache->saved_regs[tdep->ppc_fp0_regnum + i].addr = fpr_addr;
fpr_addr += 8;
--- 2477,2483 ----
then that's strange. But we have no indices to even record
the addresses under, so we just ignore it. */
if (ppc_floating_point_unit_p (gdbarch))
! for (i = fdata.saved_fpr; i < ppc_num_fprs; i++)
{
cache->saved_regs[tdep->ppc_fp0_regnum + i].addr = fpr_addr;
fpr_addr += 8;
*************** rs6000_frame_cache (struct frame_info *n
*** 2491,2497 ****
{
int i;
CORE_ADDR gpr_addr = cache->base + fdata.gpr_offset;
! for (i = fdata.saved_gpr; i < 32; i++)
{
cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = gpr_addr;
gpr_addr += wordsize;
--- 2491,2497 ----
{
int i;
CORE_ADDR gpr_addr = cache->base + fdata.gpr_offset;
! for (i = fdata.saved_gpr; i < ppc_num_fprs; i++)
{
cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = gpr_addr;
gpr_addr += wordsize;
*************** rs6000_frame_cache (struct frame_info *n
*** 2522,2528 ****
{
int i;
CORE_ADDR ev_addr = cache->base + fdata.ev_offset;
! for (i = fdata.saved_ev; i < 32; i++)
{
cache->saved_regs[tdep->ppc_ev0_regnum + i].addr = ev_addr;
cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = ev_addr + 4;
--- 2522,2528 ----
{
int i;
CORE_ADDR ev_addr = cache->base + fdata.ev_offset;
! for (i = fdata.saved_ev; i < ppc_num_gprs; i++)
{
cache->saved_regs[tdep->ppc_ev0_regnum + i].addr = ev_addr;
cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = ev_addr + 4;
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs whereappropriate
2004-05-13 1:12 RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs where appropriate Jim Blandy
@ 2004-05-13 14:59 ` Kevin Buettner
2004-05-13 19:36 ` RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs where appropriate Jim Blandy
0 siblings, 1 reply; 3+ messages in thread
From: Kevin Buettner @ 2004-05-13 14:59 UTC (permalink / raw)
To: Jim Blandy; +Cc: gdb-patches
On 12 May 2004 20:12:18 -0500
Jim Blandy <jimb@redhat.com> wrote:
> 2004-05-12 Jim Blandy <jimb@redhat.com>
>
> * aix-thread.c (pdc_read_regs, supply_gprs64, supply_fprs)
> (fetch_regs_user_thread, fetch_regs_kernel_thread)
> (store_regs_user_thread, store_regs_kernel_thread): Use
> ppc_num_gprs and ppc_num_fprs instead of '32' and '31'.
> * ppc-linux-nat.c (fill_gregset): Same.
> * ppc-linux-tdep.c (ppc_linux_supply_gregset)
> (ppc_linux_sigtramp_cache): Same.
> * ppcnbsd-tdep.c (ppcnbsd_supply_reg, ppcnbsd_fill_reg)
> (ppcnbsd_sigtramp_cache_init): Same.
> * rs6000-nat.c (fetch_core_registers): Same.
> * rs6000-tdep.c (ppc_supply_gregset, ppc_collect_gregset)
> (rs6000_frame_cache): Same.
Almost okay...
> *************** supply_fprs (double *vals)
> *** 1028,1034 ****
> floating-point registers. */
> gdb_assert (ppc_floating_point_p (current_gdbarch));
>
> ! for (regno = 0; regno < 32; regno++)
> supply_register (regno + tdep->ppc_fp0_regnum, (char *) (vals + regno));
> }
>
> --- 1028,1034 ----
> floating-point registers. */
> gdb_assert (ppc_floating_point_p (current_gdbarch));
>
> ! for (regno = 0; regno < ppc_num_gprs; regno++)
> supply_register (regno + tdep->ppc_fp0_regnum, (char *) (vals + regno));
> }
I think ppc_num_fprs should be used here.
> *************** rs6000_frame_cache (struct frame_info *n
> *** 2491,2497 ****
> {
> int i;
> CORE_ADDR gpr_addr = cache->base + fdata.gpr_offset;
> ! for (i = fdata.saved_gpr; i < 32; i++)
> {
> cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = gpr_addr;
> gpr_addr += wordsize;
> --- 2491,2497 ----
> {
> int i;
> CORE_ADDR gpr_addr = cache->base + fdata.gpr_offset;
> ! for (i = fdata.saved_gpr; i < ppc_num_fprs; i++)
> {
> cache->saved_regs[tdep->ppc_gp0_regnum + i].addr = gpr_addr;
> gpr_addr += wordsize;
I think this one should be using ppc_num_gprs.
A suitably revised patch is approved.
Kevin
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs where appropriate
2004-05-13 14:59 ` RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs whereappropriate Kevin Buettner
@ 2004-05-13 19:36 ` Jim Blandy
0 siblings, 0 replies; 3+ messages in thread
From: Jim Blandy @ 2004-05-13 19:36 UTC (permalink / raw)
To: Kevin Buettner; +Cc: gdb-patches
Kevin Buettner <kevinb@redhat.com> writes:
> A suitably revised patch is approved.
Committed, revised as you pointed out. Thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-05-13 19:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-13 1:12 RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs where appropriate Jim Blandy
2004-05-13 14:59 ` RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs whereappropriate Kevin Buettner
2004-05-13 19:36 ` RFA: RS6000: Use ppc_num_gprs and ppc_num_fprs where appropriate Jim Blandy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox