This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
PATCH: Call D10V address functions directly
- To: gdb-patches at sources dot redhat dot com
- Subject: PATCH: Call D10V address functions directly
- From: Jim Blandy <jimb at zwingli dot cygnus dot com>
- Date: Thu, 5 Jul 2001 16:29:46 -0500 (EST)
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
{