diff options
Diffstat (limited to 'gdb/i386-tdep.c')
-rw-r--r-- | gdb/i386-tdep.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 0a1472d..524a6ff 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -769,18 +769,20 @@ void i386_push_dummy_frame (void) { CORE_ADDR sp = read_register (SP_REGNUM); + CORE_ADDR fp; int regnum; char regbuf[MAX_REGISTER_RAW_SIZE]; sp = push_word (sp, read_register (PC_REGNUM)); sp = push_word (sp, read_register (FP_REGNUM)); - write_register (FP_REGNUM, sp); + fp = sp; for (regnum = 0; regnum < NUM_REGS; regnum++) { read_register_gen (regnum, regbuf); sp = push_bytes (sp, regbuf, REGISTER_RAW_SIZE (regnum)); } write_register (SP_REGNUM, sp); + write_register (FP_REGNUM, fp); } /* Insert the (relative) function address into the call sequence |