This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH fix arm-linux-nat.c to use regcache_collect



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 *) &regs[regno]);
  
    ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
    if (ret < 0)
--- 482,488 ----
      }
  
    if (regno >= ARM_A1_REGNUM && regno <= ARM_PC_REGNUM)
!     regcache_collect (regno, (char *) &regs[regno]);
  
    ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
    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 *) &regs[regno]);
      }
  
    ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
--- 512,518 ----
    for (regno = ARM_A1_REGNUM; regno <= ARM_PC_REGNUM; regno++)
      {
        if (register_cached (regno))
! 	regcache_collect (regno, (char *) &regs[regno]);
      }
  
    ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
*************** 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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]