# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID be1b7896c203bfa33858d2e6de3d37905181c895
# Parent 80e04aa530b83cfad866122f13d27261f28f24bc
[IA64] add unw_init_from_interruption()
>From stock upstream unwind.c
Signed-off-by: Akio Takebe <takebe_akio@xxxxxxxxxxxxxx>
[fixed patch to match upstream]
Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---
xen/arch/ia64/linux-xen/unwind.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+)
diff -r 80e04aa530b8 -r be1b7896c203 xen/arch/ia64/linux-xen/unwind.c
--- a/xen/arch/ia64/linux-xen/unwind.c Thu Jul 06 10:04:57 2006 -0600
+++ b/xen/arch/ia64/linux-xen/unwind.c Thu Jul 06 10:23:34 2006 -0600
@@ -2056,6 +2056,28 @@ init_frame_info (struct unw_frame_info *
}
void
+unw_init_from_interruption (struct unw_frame_info *info, struct task_struct *t,
+ struct pt_regs *pt, struct switch_stack *sw)
+{
+ unsigned long sof;
+
+ init_frame_info(info, t, sw, pt->r12);
+ info->cfm_loc = &pt->cr_ifs;
+ info->unat_loc = &pt->ar_unat;
+ info->pfs_loc = &pt->ar_pfs;
+ sof = *info->cfm_loc & 0x7f;
+ info->bsp = (unsigned long) ia64_rse_skip_regs((unsigned long *)
info->regstk.top, -sof);
+ info->ip = pt->cr_iip + ia64_psr(pt)->ri;
+ info->pt = (unsigned long) pt;
+ UNW_DPRINT(3, "unwind.%s:\n"
+ " bsp 0x%lx\n"
+ " sof 0x%lx\n"
+ " ip 0x%lx\n",
+ __FUNCTION__, info->bsp, sof, info->ip);
+ find_save_locs(info);
+}
+
+void
unw_init_frame_info (struct unw_frame_info *info, struct task_struct *t,
struct switch_stack *sw)
{
unsigned long sol;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|