summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/config/ia64/unwind-ia64.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/config/ia64/unwind-ia64.c')
-rw-r--r--contrib/gcc/config/ia64/unwind-ia64.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/contrib/gcc/config/ia64/unwind-ia64.c b/contrib/gcc/config/ia64/unwind-ia64.c
index 12e46ae..88d236b 100644
--- a/contrib/gcc/config/ia64/unwind-ia64.c
+++ b/contrib/gcc/config/ia64/unwind-ia64.c
@@ -1665,6 +1665,14 @@ _Unwind_GetCFA (struct _Unwind_Context *context)
return (_Unwind_Ptr) context->psp;
}
+/* Get the value of the Backing Store Pointer as saved in CONTEXT. */
+
+_Unwind_Word
+_Unwind_GetBSP (struct _Unwind_Context *context)
+{
+ return (_Unwind_Ptr) context->bsp;
+}
+
static _Unwind_Reason_Code
uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
@@ -1786,6 +1794,11 @@ uw_update_reg_address (struct _Unwind_Context *context,
addr = ia64_rse_skip_regs ((unsigned long *) context->bsp, rval - 32);
else if (rval >= 2)
addr = context->ireg[rval - 2].loc;
+ else if (rval == 0)
+ {
+ static const unsigned long dummy;
+ addr = (void *) &dummy;
+ }
else
abort ();
break;
@@ -1837,6 +1850,11 @@ uw_update_reg_address (struct _Unwind_Context *context,
context->ireg[regno - UNW_REG_R2].nat
= context->ireg[rval - 2].nat;
}
+ else if (rval == 0)
+ {
+ context->ireg[regno - UNW_REG_R2].nat.type = UNW_NAT_NONE;
+ context->ireg[regno - UNW_REG_R2].nat.off = 0;
+ }
else
abort ();
break;
OpenPOWER on IntegriCloud