-/* Immediately after a function call, return the saved pc before the frame
- is setup. */
-
-static CORE_ADDR
-m68hc11_saved_pc_after_call (struct frame_info *frame)
-{
- CORE_ADDR addr;
- ULONGEST sp;
-
- regcache_cooked_read_unsigned (current_regcache, HARD_SP_REGNUM, &sp);
- sp += STACK_CORRECTION;
- addr = sp & 0x0ffff;
- return read_memory_integer (addr, 2) & 0x0FFFF;
-}
-
-static CORE_ADDR
-m68hc11_frame_saved_pc (struct frame_info *frame)
-{
- return get_frame_extra_info (frame)->return_pc;
-}
-
-static CORE_ADDR
-m68hc11_frame_args_address (struct frame_info *frame)
-{
- CORE_ADDR addr;
-
- addr = get_frame_base (frame) + get_frame_extra_info (frame)->size + STACK_CORRECTION + 2;
- if (get_frame_extra_info (frame)->return_kind == RETURN_RTC)
- addr += 1;
- else if (get_frame_extra_info (frame)->return_kind == RETURN_RTI)
- addr += 7;
-
- return addr;
-}
-
-/* Discard from the stack the innermost frame, restoring all saved
- registers. */
-
-static void
-m68hc11_pop_frame (void)
-{
- register struct frame_info *frame = get_current_frame ();
- register CORE_ADDR fp, sp;
- register int regnum;
-
- if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame),
- get_frame_base (frame),
- get_frame_base (frame)))
- generic_pop_dummy_frame ();
- else
- {
- fp = get_frame_base (frame);
- DEPRECATED_FRAME_INIT_SAVED_REGS (frame);
-
- /* Copy regs from where they were saved in the frame. */
- for (regnum = 0; regnum < M68HC11_ALL_REGS; regnum++)
- if (get_frame_saved_regs (frame)[regnum])
- write_register (regnum,
- read_memory_integer (get_frame_saved_regs (frame)[regnum], 2));
-
- write_register (HARD_PC_REGNUM, get_frame_extra_info (frame)->return_pc);
- sp = (fp + get_frame_extra_info (frame)->size + 2) & 0x0ffff;
- write_register (HARD_SP_REGNUM, sp);
- }
- flush_cached_frames ();
-}
-