summaryrefslogtreecommitdiffstats
path: root/gdb/d10v-tdep.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-06-03 18:53:37 +0000
committerAndrew Cagney <cagney@redhat.com>2003-06-03 18:53:37 +0000
commitae1e741769ca494b6d7d6faaa91d6ef2ba5cecfd (patch)
treee702f6aceab1ea961133f587366bc9011ea67b29 /gdb/d10v-tdep.c
parent5a4e47bd3016472585dd5a178b76422011319b17 (diff)
downloadppe42-binutils-ae1e741769ca494b6d7d6faaa91d6ef2ba5cecfd.tar.gz
ppe42-binutils-ae1e741769ca494b6d7d6faaa91d6ef2ba5cecfd.zip
2003-06-03 Andrew Cagney <cagney@redhat.com>
* frame.c (get_frame_memory_signed): New function. (get_frame_memory, get_frame_memory_unsigned): New function. (get_frame_arch): New function. * frame.h (get_frame_signed_memory, get_frame_arch): Declare. (get_frame_memory, get_frame_unsigned_memory): Declare. * d10v-tdep.c (d10v_frame_unwind_cache): Use get_frame_memory_unsigned and get_frame_arch. (d10v_frame_unwind_cache, saved_regs_unwinder): Ditto.
Diffstat (limited to 'gdb/d10v-tdep.c')
-rw-r--r--gdb/d10v-tdep.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/gdb/d10v-tdep.c b/gdb/d10v-tdep.c
index 6278161d4c..2696c60a64 100644
--- a/gdb/d10v-tdep.c
+++ b/gdb/d10v-tdep.c
@@ -665,6 +665,7 @@ struct d10v_unwind_cache *
d10v_frame_unwind_cache (struct frame_info *next_frame,
void **this_prologue_cache)
{
+ struct gdbarch *gdbarch = get_frame_arch (next_frame);
CORE_ADDR pc;
ULONGEST prev_sp;
ULONGEST this_base;
@@ -689,7 +690,7 @@ d10v_frame_unwind_cache (struct frame_info *next_frame,
pc > 0 && pc < frame_pc_unwind (next_frame);
pc += 4)
{
- op = (unsigned long) read_memory_integer (pc, 4);
+ op = get_frame_memory_unsigned (next_frame, pc, 4);
if ((op & 0xC0000000) == 0xC0000000)
{
/* long instruction */
@@ -753,9 +754,10 @@ d10v_frame_unwind_cache (struct frame_info *next_frame,
{
/* The SP was saved (which is very unusual), the frame base is
just the PREV's frame's TOP-OF-STACK. */
- this_base = read_memory_unsigned_integer (info->saved_regs[D10V_SP_REGNUM],
- register_size (current_gdbarch,
- D10V_SP_REGNUM));
+ this_base
+ = get_frame_memory_unsigned (next_frame,
+ info->saved_regs[D10V_SP_REGNUM],
+ register_size (gdbarch, D10V_SP_REGNUM));
prev_sp = this_base;
}
else
@@ -779,9 +781,9 @@ d10v_frame_unwind_cache (struct frame_info *next_frame,
if (info->saved_regs[LR_REGNUM])
{
- CORE_ADDR return_pc
- = read_memory_unsigned_integer (info->saved_regs[LR_REGNUM],
- register_size (current_gdbarch, LR_REGNUM));
+ CORE_ADDR return_pc
+ = get_frame_memory_unsigned (next_frame, info->saved_regs[LR_REGNUM],
+ register_size (gdbarch, LR_REGNUM));
info->return_pc = d10v_make_iaddr (return_pc);
}
else
@@ -873,7 +875,7 @@ d10v_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
int i;
fprintf_filtered (file, " ");
frame_read_register (frame, a, num);
- for (i = 0; i < register_size (current_gdbarch, a); i++)
+ for (i = 0; i < register_size (gdbarch, a); i++)
{
fprintf_filtered (file, "%02x", (num[i] & 0xff));
}
@@ -1450,6 +1452,7 @@ saved_regs_unwinder (struct frame_info *next_frame,
enum lval_type *lvalp, CORE_ADDR *addrp,
int *realnump, void *bufferp)
{
+ struct gdbarch *gdbarch = get_frame_arch (next_frame);
if (this_saved_regs[regnum] != 0)
{
if (regnum == D10V_SP_REGNUM)
@@ -1461,7 +1464,7 @@ saved_regs_unwinder (struct frame_info *next_frame,
*realnump = -1;
if (bufferp != NULL)
store_unsigned_integer (bufferp,
- register_size (current_gdbarch, regnum),
+ register_size (gdbarch, regnum),
this_saved_regs[regnum]);
}
else
@@ -1475,8 +1478,8 @@ saved_regs_unwinder (struct frame_info *next_frame,
if (bufferp != NULL)
{
/* Read the value in from memory. */
- read_memory (this_saved_regs[regnum], bufferp,
- register_size (current_gdbarch, regnum));
+ get_frame_memory (next_frame, this_saved_regs[regnum], bufferp,
+ register_size (gdbarch, regnum));
}
}
return;
OpenPOWER on IntegriCloud