- /* FIXME: cagney/2003-02-26: Step zero of this little tinker is to
- extract the generic dummy frame code from the architecture
- vector. Hence this direct call.
-
- A follow-on change is to modify this interface so that it takes
- thread OR frame OR ptid as a parameter, and returns a dummy frame
- handle. The handle can then be used further down as a parameter
- to generic_save_dummy_frame_tos(). Hmm, thinking about it, since
- everything is ment to be using generic dummy frames, why not even
- use some of the dummy frame code to here - do a regcache dup and
- then pass the duped regcache, along with all the other stuff, at
- one single point.
-
- In fact, you can even save the structure's return address in the
- dummy frame and fix one of those nasty lost struct return edge
- conditions. */
- generic_push_dummy_frame ();
+ /* Save the caller's registers so that they can be restored once the
+ callee returns. To allow nested calls the registers are (further
+ down) pushed onto a dummy frame stack. Include a cleanup (which
+ is tossed once the regcache has been pushed). */
+ caller_regcache = frame_save_as_regcache (get_current_frame ());
+ caller_regcache_cleanup = make_cleanup_regcache_xfree (caller_regcache);