-struct frame_id;
-
-/* GENERIC DUMMY FRAMES
-
- The following code serves to maintain the dummy stack frames for
- inferior function calls (ie. when gdb calls into the inferior via
- call_function_by_hand). This code saves the machine state before
- the call in host memory, so we must maintain an independent stack
- and keep it consistant etc. I am attempting to make this code
- generic enough to be used by many targets.
-
- The cheapest and most generic way to do CALL_DUMMY on a new target
- is probably to define CALL_DUMMY to be empty,
- DEPRECATED_CALL_DUMMY_LENGTH to zero, and CALL_DUMMY_LOCATION to
- AT_ENTRY. Then you must remember to define PUSH_RETURN_ADDRESS,
- because no call instruction will be being executed by the target.
- Also DEPRECATED_FRAME_CHAIN_VALID as
- generic_{file,func}_frame_chain_valid and do not set
- DEPRECATED_FIX_CALL_DUMMY. */
+
+/* Push the information needed to identify, and unwind from, a dummy
+ frame onto the dummy frame stack. */
+
+/* NOTE: cagney/2004-08-02: In the case of ABIs using push_dummy_code
+ containing more than one instruction, this interface many need to
+ be expanded so that it knowns the lower/upper extent of the dummy
+ frame's code. */
+
+extern void dummy_frame_push (struct infcall_suspend_state *caller_state,
+ const struct frame_id *dummy_id, ptid_t ptid);
+
+/* Pop the dummy frame DUMMY_ID, restoring program state to that before the
+ frame was created.
+ On return reinit_frame_cache has been called.
+ If the frame isn't found, flag an internal error.
+
+ NOTE: This can only pop the one frame, even if it is in the middle of the
+ stack, because the other frames may be for different threads, and there's
+ currently no way to tell which stack frame is for which thread. */
+
+extern void dummy_frame_pop (struct frame_id dummy_id, ptid_t ptid);
+
+extern void dummy_frame_discard (struct frame_id dummy_id, ptid_t ptid);