aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1993-09-07 19:57:45 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1993-09-07 19:57:45 +0000
commited1a07ad1f93a2709e79fe659715e90c2baf0016 (patch)
tree837e81fa6c8bff2333f80351babd56b9be2c006b
parentb7da78d5610e060e7623f5e61b8d1a858daa0b2f (diff)
downloadgdb-ed1a07ad1f93a2709e79fe659715e90c2baf0016.zip
gdb-ed1a07ad1f93a2709e79fe659715e90c2baf0016.tar.gz
gdb-ed1a07ad1f93a2709e79fe659715e90c2baf0016.tar.bz2
* config/pa/tm-hppa.h: Declare target_read_pc and target_write_pc.
(STORE_RETURN_VAULE): Pass the correct offset of the return register to write_register_bytes. * hppa-tdep.c: Use target_write_pc if PCOQ_TAIL_REGNUM was not saved.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/hppa-tdep.c5
2 files changed, 12 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4847af4..075ee0f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+Tue Sep 7 13:06:44 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * config/pa/tm-hppa.h: Declare target_read_pc and target_write_pc.
+ (STORE_RETURN_VAULE): Pass the correct offset of the return
+ register to write_register_bytes.
+ * hppa-tdep.c: Use target_write_pc if PCOQ_TAIL_REGNUM was not saved.
+
Tue Sep 7 14:30:34 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* config/m68k/tm-m68k.h (FIX_CALL_DUMMY): Changed name of swapping
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index c3842cf..9d71ec8 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -689,10 +689,15 @@ hppa_pop_frame ()
write_register (SAR_REGNUM,
read_memory_integer (fsr.regs[SAR_REGNUM], 4));
+ /* If the PC was explicitly saved, then just restore it. */
if (fsr.regs[PCOQ_TAIL_REGNUM])
write_register (PCOQ_TAIL_REGNUM,
read_memory_integer (fsr.regs[PCOQ_TAIL_REGNUM], 4));
+ /* Else use the value in %rp to set the new PC. */
+ else
+ target_write_pc (read_register (RP_REGNUM));
+
write_register (FP_REGNUM, read_memory_integer (fp, 4));
if (fsr.regs[IPSW_REGNUM]) /* call dummy */