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]

PATCH: Call D10V address functions directly



I've committed this patch, which is a precursor to removing the D10V_*
gdbarch macros altogether.

2001-07-05  Jim Blandy  <jimb@redhat.com>

	* d10v-tdep.c (d10v_frame_chain, d10v_frame_init_saved_regs,
	show_regs, d10v_read_pc, d10v_write_pc, d10v_read_sp,
	d10v_write_sp, d10v_write_fp, d10v_read_fp,
	d10v_push_return_address): Call the functions d10v_make_daddr,
	d10v_make_iaddr, d10v_convert_iaddr_to_raw, and
	d10v_convert_daddr_to_raw, not the global macros D10V_MAKE_DADDR,
	D10V_MAKE_IADDR, D10V_CONVERT_IADDR_TO_RAW, and
	D10V_CONVERT_DADDR_TO_RAW.

Index: gdb/d10v-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/d10v-tdep.c,v
retrieving revision 1.20
diff -c -r1.20 d10v-tdep.c
*** gdb/d10v-tdep.c	2001/06/28 23:12:18	1.20
--- gdb/d10v-tdep.c	2001/07/05 21:15:36
***************
*** 636,642 ****
  				     REGISTER_RAW_SIZE (FP_REGNUM)))
      return (CORE_ADDR) 0;
  
!   return D10V_MAKE_DADDR (read_memory_unsigned_integer (fi->saved_regs[FP_REGNUM],
  					    REGISTER_RAW_SIZE (FP_REGNUM)));
  }
  
--- 636,642 ----
  				     REGISTER_RAW_SIZE (FP_REGNUM)))
      return (CORE_ADDR) 0;
  
!   return d10v_make_daddr (read_memory_unsigned_integer (fi->saved_regs[FP_REGNUM],
  					    REGISTER_RAW_SIZE (FP_REGNUM)));
  }
  
***************
*** 780,786 ****
    fi->extra_info->size = -next_addr;
  
    if (!(fp & 0xffff))
!     fp = D10V_MAKE_DADDR (read_register (SP_REGNUM));
  
    for (i = 0; i < NUM_REGS - 1; i++)
      if (fi->saved_regs[i])
--- 780,786 ----
    fi->extra_info->size = -next_addr;
  
    if (!(fp & 0xffff))
!     fp = d10v_make_daddr (read_register (SP_REGNUM));
  
    for (i = 0; i < NUM_REGS - 1; i++)
      if (fi->saved_regs[i])
***************
*** 791,801 ****
    if (fi->saved_regs[LR_REGNUM])
      {
        CORE_ADDR return_pc = read_memory_unsigned_integer (fi->saved_regs[LR_REGNUM], REGISTER_RAW_SIZE (LR_REGNUM));
!       fi->extra_info->return_pc = D10V_MAKE_IADDR (return_pc);
      }
    else
      {
!       fi->extra_info->return_pc = D10V_MAKE_IADDR (read_register (LR_REGNUM));
      }
  
    /* th SP is not normally (ever?) saved, but check anyway */
--- 791,801 ----
    if (fi->saved_regs[LR_REGNUM])
      {
        CORE_ADDR return_pc = read_memory_unsigned_integer (fi->saved_regs[LR_REGNUM], REGISTER_RAW_SIZE (LR_REGNUM));
!       fi->extra_info->return_pc = d10v_make_iaddr (return_pc);
      }
    else
      {
!       fi->extra_info->return_pc = d10v_make_iaddr (read_register (LR_REGNUM));
      }
  
    /* th SP is not normally (ever?) saved, but check anyway */
***************
*** 843,849 ****
    int a;
    printf_filtered ("PC=%04lx (0x%lx) PSW=%04lx RPT_S=%04lx RPT_E=%04lx RPT_C=%04lx\n",
  		   (long) read_register (PC_REGNUM),
! 		   (long) D10V_MAKE_IADDR (read_register (PC_REGNUM)),
  		   (long) read_register (PSW_REGNUM),
  		   (long) read_register (24),
  		   (long) read_register (25),
--- 843,849 ----
    int a;
    printf_filtered ("PC=%04lx (0x%lx) PSW=%04lx RPT_S=%04lx RPT_E=%04lx RPT_C=%04lx\n",
  		   (long) read_register (PC_REGNUM),
! 		   (long) d10v_make_iaddr (read_register (PC_REGNUM)),
  		   (long) read_register (PSW_REGNUM),
  		   (long) read_register (24),
  		   (long) read_register (25),
***************
*** 908,914 ****
    inferior_ptid = ptid;
    pc = (int) read_register (PC_REGNUM);
    inferior_ptid = save_ptid;
!   retval = D10V_MAKE_IADDR (pc);
    return retval;
  }
  
--- 908,914 ----
    inferior_ptid = ptid;
    pc = (int) read_register (PC_REGNUM);
    inferior_ptid = save_ptid;
!   retval = d10v_make_iaddr (pc);
    return retval;
  }
  
***************
*** 919,950 ****
  
    save_ptid = inferior_ptid;
    inferior_ptid = ptid;
!   write_register (PC_REGNUM, D10V_CONVERT_IADDR_TO_RAW (val));
    inferior_ptid = save_ptid;
  }
  
  static CORE_ADDR
  d10v_read_sp (void)
  {
!   return (D10V_MAKE_DADDR (read_register (SP_REGNUM)));
  }
  
  static void
  d10v_write_sp (CORE_ADDR val)
  {
!   write_register (SP_REGNUM, D10V_CONVERT_DADDR_TO_RAW (val));
  }
  
  static void
  d10v_write_fp (CORE_ADDR val)
  {
!   write_register (FP_REGNUM, D10V_CONVERT_DADDR_TO_RAW (val));
  }
  
  static CORE_ADDR
  d10v_read_fp (void)
  {
!   return (D10V_MAKE_DADDR (read_register (FP_REGNUM)));
  }
  
  /* Function: push_return_address (pc)
--- 919,950 ----
  
    save_ptid = inferior_ptid;
    inferior_ptid = ptid;
!   write_register (PC_REGNUM, d10v_convert_iaddr_to_raw (val));
    inferior_ptid = save_ptid;
  }
  
  static CORE_ADDR
  d10v_read_sp (void)
  {
!   return (d10v_make_daddr (read_register (SP_REGNUM)));
  }
  
  static void
  d10v_write_sp (CORE_ADDR val)
  {
!   write_register (SP_REGNUM, d10v_convert_daddr_to_raw (val));
  }
  
  static void
  d10v_write_fp (CORE_ADDR val)
  {
!   write_register (FP_REGNUM, d10v_convert_daddr_to_raw (val));
  }
  
  static CORE_ADDR
  d10v_read_fp (void)
  {
!   return (d10v_make_daddr (read_register (FP_REGNUM)));
  }
  
  /* Function: push_return_address (pc)
***************
*** 954,960 ****
  static CORE_ADDR
  d10v_push_return_address (CORE_ADDR pc, CORE_ADDR sp)
  {
!   write_register (LR_REGNUM, D10V_CONVERT_IADDR_TO_RAW (CALL_DUMMY_ADDRESS ()));
    return sp;
  }
  
--- 954,960 ----
  static CORE_ADDR
  d10v_push_return_address (CORE_ADDR pc, CORE_ADDR sp)
  {
!   write_register (LR_REGNUM, d10v_convert_iaddr_to_raw (CALL_DUMMY_ADDRESS ()));
    return sp;
  }
  
***************
*** 1021,1032 ****
  	      && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
  	    {
  	      /* function pointer */
! 	      val = D10V_CONVERT_IADDR_TO_RAW (val);
  	    }
! 	  else if (D10V_IADDR_P (val))
  	    {
  	      /* also function pointer! */
! 	      val = D10V_CONVERT_DADDR_TO_RAW (val);
  	    }
  	  else
  	    {
--- 1021,1032 ----
  	      && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
  	    {
  	      /* function pointer */
! 	      val = d10v_convert_iaddr_to_raw (val);
  	    }
! 	  else if (d10v_iaddr_p (val))
  	    {
  	      /* also function pointer! */
! 	      val = d10v_convert_daddr_to_raw (val);
  	    }
  	  else
  	    {
***************
*** 1106,1112 ****
        int num;
        short snum;
        snum = extract_address (regbuf + REGISTER_BYTE (RET1_REGNUM), REGISTER_RAW_SIZE (RET1_REGNUM));
!       store_address (valbuf, 4, D10V_MAKE_IADDR (snum));
      }
    else if (TYPE_CODE (type) == TYPE_CODE_PTR)
      {
--- 1106,1112 ----
        int num;
        short snum;
        snum = extract_address (regbuf + REGISTER_BYTE (RET1_REGNUM), REGISTER_RAW_SIZE (RET1_REGNUM));
!       store_address (valbuf, 4, d10v_make_iaddr (snum));
      }
    else if (TYPE_CODE (type) == TYPE_CODE_PTR)
      {
***************
*** 1114,1120 ****
        int num;
        short snum;
        snum = extract_address (regbuf + REGISTER_BYTE (RET1_REGNUM), REGISTER_RAW_SIZE (RET1_REGNUM));
!       store_address (valbuf, 4, D10V_MAKE_DADDR (snum));
      }
    else
      {
--- 1114,1120 ----
        int num;
        short snum;
        snum = extract_address (regbuf + REGISTER_BYTE (RET1_REGNUM), REGISTER_RAW_SIZE (RET1_REGNUM));
!       store_address (valbuf, 4, d10v_make_daddr (snum));
      }
    else
      {


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