Commit 9a9dcce8 by Eric Botcazou Committed by Eric Botcazou

unwind-ia64.c (uw_install_context): Manually save LC if it hasn't been previously saved.

	* config/ia64/unwind-ia64.c (uw_install_context): Manually save LC
	if it hasn't been previously saved.

From-SVN: r186045
parent 71bb37ba
2012-03-31 Eric Botcazou <ebotcazou@adacore.com>
* config/ia64/unwind-ia64.c (uw_install_context): Manually save LC
if it hasn't been previously saved.
2012-03-29 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/linux-unwind.h (x86_64_fallback_frame_state): Define
......
......@@ -2169,8 +2169,20 @@ uw_install_context (struct _Unwind_Context *current __attribute__((unused)),
struct _Unwind_Context *target)
{
unw_word ireg_buf[4], ireg_nat = 0, ireg_pr = 0;
unw_word saved_lc;
int i;
/* ??? LC is a fixed register so the call to __builtin_unwind_init in
uw_init_context doesn't cause it to be saved. In case it isn't in
the user frames either, we need to manually do so here, lest it be
clobbered by the loop just below. */
if (target->lc_loc == NULL)
{
register unw_word lc asm ("ar.lc");
saved_lc = lc;
target->lc_loc = &saved_lc;
}
/* Copy integer register data from the target context to a
temporary buffer. Do this so that we can frob AR.UNAT
to get the NaT bits for these registers set properly. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment