* s390-tdep.c (s390_pop_frame_regular): On the S/390, the frame

pointer and the SP are often the same, so we can't pop the frame
by setting the SP to the FP; we need to get the old SP from
saved_regs.
This commit is contained in:
Jim Blandy 2001-11-14 22:34:38 +00:00
parent f2c6cfba86
commit 9a1befc916
2 changed files with 9 additions and 2 deletions

View File

@ -1,5 +1,10 @@
2001-11-14 Jim Blandy <jimb@redhat.com>
* s390-tdep.c (s390_pop_frame_regular): On the S/390, the frame
pointer and the SP are often the same, so we can't pop the frame
by setting the SP to the FP; we need to get the old SP from
saved_regs.
* s390-tdep.c (s390_extract_return_value): Returned `float' values
can simply be copied bitwise from the registers into the value
object's buffer.

View File

@ -1169,8 +1169,10 @@ s390_pop_frame_regular (struct frame_info *frame)
write_register (regnum, value);
}
/* Actually cut back the stack. */
write_register (S390_SP_REGNUM, FRAME_FP (frame));
/* Actually cut back the stack. Remember that the SP's element of
saved_regs is the old SP itself, not the address at which it is
saved. */
write_register (S390_SP_REGNUM, frame->saved_regs[S390_SP_REGNUM]);
/* Throw away any cached frame information. */
flush_cached_frames ();