}
static CORE_ADDR
-m88k_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
+m88k_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
struct value **args, CORE_ADDR sp, int struct_return,
CORE_ADDR struct_addr)
the instruction in the delay slot might be. Limit the
prologue analysis to the delay slot and record the branch
instruction as the end of the prologue. */
- limit = pc + M88K_INSN_SIZE;
+ limit = min (limit, pc + 2 * M88K_INSN_SIZE);
end = pc;
break;
{
CORE_ADDR pc;
- trad_frame_prev_register (next_frame, cache->saved_regs,
- M88K_SXIP_REGNUM, optimizedp,
- lvalp, addrp, realnump, valuep);
+ trad_frame_get_prev_register (next_frame, cache->saved_regs,
+ M88K_SXIP_REGNUM, optimizedp,
+ lvalp, addrp, realnump, valuep);
pc = extract_unsigned_integer (valuep, 4);
- if (regnum == M88K_SNIP_REGNUM)
+ if (regnum == M88K_SFIP_REGNUM)
pc += 4;
- else if (regnum == M88K_SFIP_REGNUM)
- pc += 8;
- store_unsigned_integer (valuep, 4, pc);
+ store_unsigned_integer (valuep, 4, pc + 4);
}
/* It's a computed value. */
return;
}
- trad_frame_prev_register (next_frame, cache->saved_regs, regnum,
- optimizedp, lvalp, addrp, realnump, valuep);
+ trad_frame_get_prev_register (next_frame, cache->saved_regs, regnum,
+ optimizedp, lvalp, addrp, realnump, valuep);
}
static const struct frame_unwind m88k_frame_unwind =