This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
PATCH fix arm-linux-nat.c to use regcache_collect
- From: Richard Earnshaw <rearnsha at buzzard dot freeserve dot co dot uk>
- To: gdb-patches at sources dot redhat dot com
- Cc: Richard dot Earnshaw at buzzard dot freeserve dot co dot uk
- Date: Sat, 23 Feb 2002 12:40:03 +0000
- Subject: PATCH fix arm-linux-nat.c to use regcache_collect
- Reply-to: Richard dot Earnshaw at buzzard dot freeserve dot co dot uk
This patch fixes arm-linux-nat.c so that it uses regcache_collect to get
registers from the cache. Another ARI whinge squashed.
R.
2002-02-23 Richard Earnshaw <rearnsha"arm.com>
* arm-linux-nat.c (store_newfpe_single): Use regcache_collect.
(store_newfpe_double, store_newfpe_extended, store_fpregister)
(store_register, store_regs, fill_gregset, fill_fpregset): Likewise.
Index: arm-linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/arm-linux-nat.c,v
retrieving revision 1.18
diff -p -p -r1.18 arm-linux-nat.c
*** arm-linux-nat.c 2002/02/19 14:28:57 1.18
--- arm-linux-nat.c 2002/02/23 12:33:11
*************** fetch_nwfpe_register (int regno, FPA11 *
*** 161,192 ****
}
static void
! store_nwfpe_single (unsigned int fn, FPA11 * fpa11)
{
unsigned int mem[3];
! read_register_gen (ARM_F0_REGNUM + fn, (char *) &mem[0]);
fpa11->fpreg[fn].fSingle = mem[0];
fpa11->fType[fn] = typeSingle;
}
static void
! store_nwfpe_double (unsigned int fn, FPA11 * fpa11)
{
unsigned int mem[3];
! read_register_gen (ARM_F0_REGNUM + fn, (char *) &mem[0]);
fpa11->fpreg[fn].fDouble[1] = mem[0];
fpa11->fpreg[fn].fDouble[0] = mem[1];
fpa11->fType[fn] = typeDouble;
}
void
! store_nwfpe_extended (unsigned int fn, FPA11 * fpa11)
{
unsigned int mem[3];
! read_register_gen (ARM_F0_REGNUM + fn, (char *) &mem[0]);
fpa11->fpreg[fn].fExtended[0] = mem[0]; /* sign & exponent */
fpa11->fpreg[fn].fExtended[2] = mem[1]; /* ls bits */
fpa11->fpreg[fn].fExtended[1] = mem[2]; /* ms bits */
--- 161,192 ----
}
static void
! store_nwfpe_single (unsigned int fn, FPA11 *fpa11)
{
unsigned int mem[3];
! regcache_collect (ARM_F0_REGNUM + fn, (char *) &mem[0]);
fpa11->fpreg[fn].fSingle = mem[0];
fpa11->fType[fn] = typeSingle;
}
static void
! store_nwfpe_double (unsigned int fn, FPA11 *fpa11)
{
unsigned int mem[3];
! regcache_collect (ARM_F0_REGNUM + fn, (char *) &mem[0]);
fpa11->fpreg[fn].fDouble[1] = mem[0];
fpa11->fpreg[fn].fDouble[0] = mem[1];
fpa11->fType[fn] = typeDouble;
}
void
! store_nwfpe_extended (unsigned int fn, FPA11 *fpa11)
{
unsigned int mem[3];
! regcache_collect (ARM_F0_REGNUM + fn, (char *) &mem[0]);
fpa11->fpreg[fn].fExtended[0] = mem[0]; /* sign & exponent */
fpa11->fpreg[fn].fExtended[2] = mem[1]; /* ls bits */
fpa11->fpreg[fn].fExtended[1] = mem[2]; /* ms bits */
*************** store_fpregister (int regno)
*** 336,342 ****
/* Store fpsr. */
if (ARM_FPS_REGNUM == regno && register_cached (ARM_FPS_REGNUM))
! read_register_gen (ARM_FPS_REGNUM, (char *) &fp.fpsr);
/* Store the floating point register. */
if (regno >= ARM_F0_REGNUM && regno <= ARM_F7_REGNUM)
--- 336,342 ----
/* Store fpsr. */
if (ARM_FPS_REGNUM == regno && register_cached (ARM_FPS_REGNUM))
! regcache_collect (ARM_FPS_REGNUM, (char *) &fp.fpsr);
/* Store the floating point register. */
if (regno >= ARM_F0_REGNUM && regno <= ARM_F7_REGNUM)
*************** store_fpregs (void)
*** 374,380 ****
/* Store fpsr. */
if (register_cached (ARM_FPS_REGNUM))
! read_register_gen (ARM_FPS_REGNUM, (char *) &fp.fpsr);
/* Store the floating point registers. */
for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
--- 374,380 ----
/* Store fpsr. */
if (register_cached (ARM_FPS_REGNUM))
! regcache_collect (ARM_FPS_REGNUM, (char *) &fp.fpsr);
/* Store the floating point registers. */
for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
*************** store_register (int regno)
*** 482,488 ****
}
if (regno >= ARM_A1_REGNUM && regno <= ARM_PC_REGNUM)
! read_register_gen (regno, (char *) ®s[regno]);
ret = ptrace (PTRACE_SETREGS, tid, 0, ®s);
if (ret < 0)
--- 482,488 ----
}
if (regno >= ARM_A1_REGNUM && regno <= ARM_PC_REGNUM)
! regcache_collect (regno, (char *) ®s[regno]);
ret = ptrace (PTRACE_SETREGS, tid, 0, ®s);
if (ret < 0)
*************** store_regs (void)
*** 512,518 ****
for (regno = ARM_A1_REGNUM; regno <= ARM_PC_REGNUM; regno++)
{
if (register_cached (regno))
! read_register_gen (regno, (char *) ®s[regno]);
}
ret = ptrace (PTRACE_SETREGS, tid, 0, ®s);
--- 512,518 ----
for (regno = ARM_A1_REGNUM; regno <= ARM_PC_REGNUM; regno++)
{
if (register_cached (regno))
! regcache_collect (regno, (char *) ®s[regno]);
}
ret = ptrace (PTRACE_SETREGS, tid, 0, ®s);
*************** fill_gregset (gdb_gregset_t *gregsetp, i
*** 579,597 ****
{
int regnum;
for (regnum = ARM_A1_REGNUM; regnum <= ARM_PC_REGNUM; regnum++)
! read_register_gen (regnum, (char *) &(*gregsetp)[regnum]);
}
else if (regno >= ARM_A1_REGNUM && regno <= ARM_PC_REGNUM)
! read_register_gen (regno, (char *) &(*gregsetp)[regno]);
if (ARM_PS_REGNUM == regno || -1 == regno)
{
if (arm_apcs_32)
! read_register_gen (ARM_PS_REGNUM,
! (char *) &(*gregsetp)[ARM_CPSR_REGNUM]);
else
! read_register_gen (ARM_PC_REGNUM,
! (char *) &(*gregsetp)[ARM_PC_REGNUM]);
}
}
--- 579,597 ----
{
int regnum;
for (regnum = ARM_A1_REGNUM; regnum <= ARM_PC_REGNUM; regnum++)
! regcache_collect (regnum, (char *) &(*gregsetp)[regnum]);
}
else if (regno >= ARM_A1_REGNUM && regno <= ARM_PC_REGNUM)
! regcache_collect (regno, (char *) &(*gregsetp)[regno]);
if (ARM_PS_REGNUM == regno || -1 == regno)
{
if (arm_apcs_32)
! regcache_collect (ARM_PS_REGNUM,
! (char *) &(*gregsetp)[ARM_CPSR_REGNUM]);
else
! regcache_collect (ARM_PC_REGNUM,
! (char *) &(*gregsetp)[ARM_PC_REGNUM]);
}
}
*************** fill_fpregset (gdb_fpregset_t *fpregsetp
*** 638,644 ****
/* Store fpsr. */
if (ARM_FPS_REGNUM == regno || -1 == regno)
! read_register_gen (ARM_FPS_REGNUM, (char *) &fp->fpsr);
}
/* Fill GDB's register array with the floating-point register values
--- 638,644 ----
/* Store fpsr. */
if (ARM_FPS_REGNUM == regno || -1 == regno)
! regcache_collect (ARM_FPS_REGNUM, (char *) &fp->fpsr);
}
/* Fill GDB's register array with the floating-point register values