* config/rs6000/tm-rs6000.h (FPLAST_REGNUM): Delete #definition.
* ppc-tdep.h (ppc_num_fprs): New enum constant. * aix-thread.c (fetch_regs_kernel_thread, fill_fprs, store_regs_kernel_thread): Use FP0_REGNUM + ppc_num_fprs, not FPLAST_REGNUM. * ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers): Same. * ppc-linux-nat.c (ppc_register_u_addr): Same. * rs6000-nat.c (regmap, fetch_inferior_registers) (store_inferior_registers): Same.
This commit is contained in:
parent
edf6116900
commit
b967e06fbc
|
@ -1,5 +1,16 @@
|
|||
2004-05-04 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* config/rs6000/tm-rs6000.h (FPLAST_REGNUM): Delete #definition.
|
||||
* ppc-tdep.h (ppc_num_fprs): New enum constant.
|
||||
* aix-thread.c (fetch_regs_kernel_thread, fill_fprs,
|
||||
store_regs_kernel_thread): Use FP0_REGNUM + ppc_num_fprs, not
|
||||
FPLAST_REGNUM.
|
||||
* ppc-bdm.c (bdm_ppc_fetch_registers, bdm_ppc_store_registers):
|
||||
Same.
|
||||
* ppc-linux-nat.c (ppc_register_u_addr): Same.
|
||||
* rs6000-nat.c (regmap, fetch_inferior_registers)
|
||||
(store_inferior_registers): Same.
|
||||
|
||||
* aix-thread.c (fill_fprs): Fix off-by-one error comparing regno
|
||||
with FPLAST_REGNUM.
|
||||
|
||||
|
|
|
@ -1175,7 +1175,9 @@ fetch_regs_kernel_thread (int regno, pthdb_tid_t tid)
|
|||
|
||||
/* Floating-point registers. */
|
||||
|
||||
if (regno == -1 || (regno >= FP0_REGNUM && regno <= FPLAST_REGNUM))
|
||||
if (regno == -1
|
||||
|| (regno >= FP0_REGNUM
|
||||
&& regno < FP0_REGNUM + ppc_num_fprs))
|
||||
{
|
||||
if (!ptrace32 (PTT_READ_FPRS, tid, (int *) fprs, 0, NULL))
|
||||
memset (fprs, 0, sizeof (fprs));
|
||||
|
@ -1262,7 +1264,7 @@ fill_fprs (double *vals)
|
|||
{
|
||||
int regno;
|
||||
|
||||
for (regno = FP0_REGNUM; regno <= FPLAST_REGNUM; regno++)
|
||||
for (regno = FP0_REGNUM; regno < FP0_REGNUM + ppc_num_fprs; regno++)
|
||||
if (register_cached (regno))
|
||||
regcache_collect (regno, vals + regno);
|
||||
}
|
||||
|
@ -1466,7 +1468,9 @@ store_regs_kernel_thread (int regno, pthdb_tid_t tid)
|
|||
|
||||
/* Floating-point registers. */
|
||||
|
||||
if (regno == -1 || (regno >= FP0_REGNUM && regno <= FPLAST_REGNUM))
|
||||
if (regno == -1
|
||||
|| (regno >= FP0_REGNUM
|
||||
&& regno < FP0_REGNUM + ppc_num_fprs))
|
||||
{
|
||||
/* Pre-fetch: some regs may not be in the cache. */
|
||||
ptrace32 (PTT_READ_FPRS, tid, (int *) fprs, 0, NULL);
|
||||
|
|
|
@ -72,7 +72,6 @@ extern void aix_process_linenos (void);
|
|||
but do serve to get the desired values when passed to read_register. */
|
||||
|
||||
#define FP0_REGNUM 32 /* Floating point register 0 */
|
||||
#define FPLAST_REGNUM 63 /* Last floating point register */
|
||||
|
||||
/* Notice when a new child process is started. */
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ bdm_ppc_fetch_registers (int regno)
|
|||
int reglen, beginreglen, endreglen;
|
||||
|
||||
#if 1
|
||||
for (i = 0; i < (FPLAST_REGNUM - FP0_REGNUM + 1); i++)
|
||||
for (i = 0; i < ppc_num_fprs; i++)
|
||||
{
|
||||
midregs[i] = -1;
|
||||
}
|
||||
|
@ -202,7 +202,8 @@ bdm_ppc_fetch_registers (int regno)
|
|||
/* if asking for an invalid register */
|
||||
if ((first_regno == gdbarch_tdep (current_gdbarch)->ppc_mq_regnum)
|
||||
|| (first_regno == gdbarch_tdep (current_gdbarch)->ppc_fpscr_regnum)
|
||||
|| ((first_regno >= FP0_REGNUM) && (first_regno <= FPLAST_REGNUM)))
|
||||
|| ((first_regno >= FP0_REGNUM)
|
||||
&& (first_regno < FP0_REGNUM + ppc_num_fprs)))
|
||||
{
|
||||
/* printf("invalid reg request!\n"); */
|
||||
supply_register (first_regno, NULL);
|
||||
|
@ -221,7 +222,7 @@ bdm_ppc_fetch_registers (int regno)
|
|||
beginregs = ocd_read_bdm_registers (first_bdm_regno,
|
||||
FP0_REGNUM - 1, &beginreglen);
|
||||
endregs = (strcat (midregs,
|
||||
ocd_read_bdm_registers (FPLAST_REGNUM + 1,
|
||||
ocd_read_bdm_registers (FP0_REGNUM + ppc_num_fprs,
|
||||
last_bdm_regno - 1, &endreglen)));
|
||||
almostregs = (strcat (beginregs, endregs));
|
||||
regs = (strcat (almostregs, mqreg));
|
||||
|
@ -292,7 +293,7 @@ bdm_ppc_store_registers (int regno)
|
|||
/* (need to avoid FP regs and MQ reg) */
|
||||
if ((i != gdbarch_tdep (current_gdbarch)->ppc_mq_regnum)
|
||||
&& (i != gdbarch_tdep (current_gdbarch)->ppc_fpscr_regnum)
|
||||
&& ((i < FP0_REGNUM) || (i > FPLAST_REGNUM)))
|
||||
&& ((i < FP0_REGNUM) || (i >= FP0_REGNUM + ppc_num_fprs)))
|
||||
{
|
||||
/* printf("write valid reg %d\n", bdm_regno); */
|
||||
ocd_write_bdm_registers (bdm_regno, deprecated_registers + DEPRECATED_REGISTER_BYTE (i), 4);
|
||||
|
|
|
@ -138,7 +138,7 @@ ppc_register_u_addr (int regno)
|
|||
/* Floating point regs: eight bytes each in both 32- and 64-bit
|
||||
ptrace interfaces. Thus, two slots each in 32-bit interface, one
|
||||
slot each in 64-bit interface. */
|
||||
if (regno >= FP0_REGNUM && regno <= FPLAST_REGNUM)
|
||||
if (regno >= FP0_REGNUM && regno < FP0_REGNUM + ppc_num_fprs)
|
||||
u_addr = (PT_FPR0 * wordsize) + ((regno - FP0_REGNUM) * 8);
|
||||
|
||||
/* UISA special purpose registers: 1 slot each */
|
||||
|
|
|
@ -162,4 +162,11 @@ struct gdbarch_tdep
|
|||
link register is saved. */
|
||||
};
|
||||
|
||||
|
||||
/* Constants for register set sizes. */
|
||||
enum
|
||||
{
|
||||
ppc_num_fprs = 32 /* 32 floating-point registers */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -158,7 +158,7 @@ regmap (int regno, int *isfloat)
|
|||
*isfloat = 0;
|
||||
if (tdep->ppc_gp0_regnum <= regno && regno <= tdep->ppc_gplast_regnum)
|
||||
return regno;
|
||||
else if (FP0_REGNUM <= regno && regno <= FPLAST_REGNUM)
|
||||
else if (FP0_REGNUM <= regno && regno < FP0_REGNUM + ppc_num_fprs)
|
||||
{
|
||||
*isfloat = 1;
|
||||
return regno - FP0_REGNUM + FPR0;
|
||||
|
@ -357,7 +357,7 @@ fetch_inferior_registers (int regno)
|
|||
}
|
||||
|
||||
/* Read general purpose floating point registers. */
|
||||
for (regno = FP0_REGNUM; regno <= FPLAST_REGNUM; regno++)
|
||||
for (regno = FP0_REGNUM; regno < FP0_REGNUM + ppc_num_fprs; regno++)
|
||||
fetch_register (regno);
|
||||
|
||||
/* Read special registers. */
|
||||
|
@ -396,7 +396,7 @@ store_inferior_registers (int regno)
|
|||
}
|
||||
|
||||
/* Write floating point registers. */
|
||||
for (regno = FP0_REGNUM; regno <= FPLAST_REGNUM; regno++)
|
||||
for (regno = FP0_REGNUM; regno < FP0_REGNUM + ppc_num_fprs; regno ++)
|
||||
store_register (regno);
|
||||
|
||||
/* Write special registers. */
|
||||
|
|
Loading…
Reference in New Issue