From b967e06fbcdd33cc9f61e62dad38dc6d879c1405 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 4 May 2004 17:43:52 +0000 Subject: * 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. --- gdb/ChangeLog | 11 +++++++++++ gdb/aix-thread.c | 10 +++++++--- gdb/config/rs6000/tm-rs6000.h | 1 - gdb/ppc-bdm.c | 9 +++++---- gdb/ppc-linux-nat.c | 2 +- gdb/ppc-tdep.h | 7 +++++++ gdb/rs6000-nat.c | 6 +++--- 7 files changed, 34 insertions(+), 12 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8b09fceee7..0352eed4f5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,16 @@ 2004-05-04 Jim Blandy + * 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. diff --git a/gdb/aix-thread.c b/gdb/aix-thread.c index 0ce285a698..89a0755599 100644 --- a/gdb/aix-thread.c +++ b/gdb/aix-thread.c @@ -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); diff --git a/gdb/config/rs6000/tm-rs6000.h b/gdb/config/rs6000/tm-rs6000.h index 4422fcbf3c..e53a7b836a 100644 --- a/gdb/config/rs6000/tm-rs6000.h +++ b/gdb/config/rs6000/tm-rs6000.h @@ -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. */ diff --git a/gdb/ppc-bdm.c b/gdb/ppc-bdm.c index 2355b2c74e..515cbdd610 100644 --- a/gdb/ppc-bdm.c +++ b/gdb/ppc-bdm.c @@ -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); diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c index b869ad0b2a..a6ae600b8a 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -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 */ diff --git a/gdb/ppc-tdep.h b/gdb/ppc-tdep.h index 7046553045..c8b4100ef2 100644 --- a/gdb/ppc-tdep.h +++ b/gdb/ppc-tdep.h @@ -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 diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c index 02bb2e2d41..3d66e98294 100644 --- a/gdb/rs6000-nat.c +++ b/gdb/rs6000-nat.c @@ -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. */ -- cgit v1.2.1