summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-04-14 19:16:13 +0000
committerAndrew Cagney <cagney@redhat.com>2003-04-14 19:16:13 +0000
commit9995a1d71992658b5fb920ca94a00f4868d75b1a (patch)
tree54c92c96396c40fbfe1bc45af66eed1856bbbc27
parent82f581ef01bd693cfae7a5ff76badf6cf57221f0 (diff)
downloadgdb-9995a1d71992658b5fb920ca94a00f4868d75b1a.tar.gz
2003-04-14 Andrew Cagney <cagney@redhat.com>
* mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE, return the fully sign-extended register value. (get_frame_pointer): Ditto. (mips_pop_frame): Initialize "proc_desc" after checking for a dummy frame.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/mips-tdep.c12
2 files changed, 14 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 12c213dd5db..081d73ce26e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2003-04-14 Andrew Cagney <cagney@redhat.com>
+ * mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE,
+ return the fully sign-extended register value.
+ (get_frame_pointer): Ditto.
+ (mips_pop_frame): Initialize "proc_desc" after checking for a
+ dummy frame.
+
+2003-04-14 Andrew Cagney <cagney@redhat.com>
+
* mips-tdep.c (mips_push_dummy_frame): Delete function.
(MASK, PUSH_FP_REGNUM, GEN_REG_SAVE_MASK): Delete macros.
(FLOAT_REG_SAVE_MASK, FLOAT_SINGLE_REG_SAVE_MASK): Delete macro.
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index e65331208a7..7956be49249 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -659,7 +659,7 @@ mips_register_virtual_type (int reg)
static CORE_ADDR
mips_read_sp (void)
{
- return ADDR_BITS_REMOVE (read_register (SP_REGNUM));
+ return read_signed_register (SP_REGNUM);
}
/* Should the upper word of 64-bit addresses be zeroed? */
@@ -2442,10 +2442,9 @@ static CORE_ADDR
get_frame_pointer (struct frame_info *frame,
mips_extra_func_info_t proc_desc)
{
- return ADDR_BITS_REMOVE (read_next_frame_reg (frame,
- PROC_FRAME_REG (proc_desc)) +
- PROC_FRAME_OFFSET (proc_desc) -
- PROC_FRAME_ADJUST (proc_desc));
+ return (read_next_frame_reg (frame, PROC_FRAME_REG (proc_desc))
+ + PROC_FRAME_OFFSET (proc_desc)
+ - PROC_FRAME_ADJUST (proc_desc));
}
static mips_extra_func_info_t cached_proc_desc;
@@ -3753,7 +3752,7 @@ mips_pop_frame (void)
register int regnum;
struct frame_info *frame = get_current_frame ();
CORE_ADDR new_sp = get_frame_base (frame);
- mips_extra_func_info_t proc_desc = get_frame_extra_info (frame)->proc_desc;
+ mips_extra_func_info_t proc_desc;
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), 0, 0))
{
@@ -3762,6 +3761,7 @@ mips_pop_frame (void)
return;
}
+ proc_desc = get_frame_extra_info (frame)->proc_desc;
write_register (PC_REGNUM, DEPRECATED_FRAME_SAVED_PC (frame));
if (get_frame_saved_regs (frame) == NULL)
DEPRECATED_FRAME_INIT_SAVED_REGS (frame);